基金项目:国家自然科学基金(U1703133); 新疆自治区重大科技专项(2016A03007-3); 中科院“西部之光”人才培养引进计划(2017-XBQNXZ-A-005)
通信作者:yangyt@ms.xjb.ac.cn
(1.中国科学院新疆理化技术研究所,新疆 乌鲁木齐 830011; 2.中国科学院大学计算机科学与技术学院,北京 100049; 3.新疆民族语音语言信息处理实验室,新疆 乌鲁木齐 830011)
(1.The Xinjiang Technical Institute of Physics & Chemistry,Chinese Academy of Sciences,Urumqi 830011,China; 2.School of Computer Science and Technology,University of Chinese Academy of Sciences,Beijing 100049,China; 3.Xinjiang Laboratory of Minority Speech and Language Information Processing,Urumqi 830011,China)
DOI: 10.6043/j.issn.0438-0479.201811013
针对传统话题检测方法得到的结果和实际话题个数相差较大的缺点,根据话题所包含的文本数对话题之间的相似度进行衰减,进而优先合并粒度较小类,并根据文档话题频率和权重对较大的话题向量进行降维,通过这两方面对传统的层次聚类方法进行改进.同时为了更好地表达话题的语义信息,使用在句子中共现的词对向量来取代传统的向量空间模型.实验结果表明,使用词对模型和改进的方法可以取得更好的效果,而且得到的聚类结果和实际话题个数相近.
According to the shortcoming of the great difference between the result of the traditional topic detection method and the actual number of topics,this paper improves the traditional hierarchical clustering method in two aspects.One is to reduce the similarity between topics according to the number of texts contained in the topic,which prioritizes merging smaller granularity classes.The other is dimension reduction of larger topic vectors based on the weight and document frequency in a topic.Meanwhile,to better express the semantic information of a topic,we use the word pair vector,which appears in sentences,to replace the traditional vector space model.Experimental results show that the improved method on the word pair model achieves the better results,which resemble the actual numbers of topics.
信息时代的到来给人们带来丰富多彩世界的同时,也带来了信息过载.互联网上充斥着大量的信息,其中大部分不是人们真正想阅览的信息.在寻找感兴趣内容的过程中,人们浪费了大量的时间在不感兴趣的内容上面.如何将信息有效地呈现在人们面前是目前的研究热点,为此,有学者提出了话题检测与跟踪(topic detection and tracking,TDT)[1].TDT可以将信息流中的文本按照描述话题的内容归为不同的类,并在之后发现新话题的同时追踪已有的话题.
TDT自提出以来,研究者提出了各种方法.从整体上看,这些方法主要是针对话题模型和话题检测方法两方面的[2-3].常见的话题模型有概率模型[2](如语言模型和隐含狄利克雷分布(LDA)主题模型[4])和向量空间模型[5],其中,向量空间模型是最为简便、使用最多的模型.在话题检测方法上,主流的方法是针对新闻文本特点的聚类方法.常见的聚类方法有K均值(K-means)聚类[6]、层次聚类[7-8]、单遍法[9-10]等.对新闻特点研究较多的有基于时间特点的方法,如基于时间衰减函数的相似度计算法[9]、时间加窗策略[11]等,以及基于命名实体的方法[12],如根据命名实体向量与非命名实体向量的多向量表达法[13]、主题子向量和命名实体向量[13]等.随着微博等新媒体的出现,许多针对微博、Twitter等具有突发性、传播速度快、信息噪声大等特点的突发话题检测方法被提出来,如利用频域特性的方法[14]、将文档空间转换成术语空间的聚类方法[15],以及具有实时性、高处理速度的话题检测框架[16]等.
话题检测是TDT最重要的任务之一,其主要目标是检测数据流中描述的话题[17],并将描述同一个话题的文本归为一类.在话题检测领域,对于待检测数据中的话题个数往往是不可知的.K-means聚类[6]等方法要求事先确定K值,而且聚类结果往往对K值比较敏感,因此传统方法往往是通过层次聚类法聚类,并且设置一个阈值来结束聚类.通过设置阈值的方法,虽然能得到一个较高精度的结果,但是由于不同话题内部的相似度并不相同,仍然可能存在一些话题欠拟合; 若降低阈值,则可能导致别的话题过拟合.李胜东等[18]提出首先用传统的方法聚类,再根据聚类结果自适应地确定K值,然后采用K-means方法进行迭代; 但是这种方法依赖传统方法的聚类结果,而传统方法聚类得到的话题个数可能和实际话题个数有较大的差别.本文中提出了一种基于词对的文本表达模型,使同一话题内的文本更加相似,并且对传统层次聚类方法进行改进,使聚类过程更加均衡,进而提升话题检测精度.
话题检测的目标是发现数据流中存在的话题,并将数据流分成不同的话题簇.传统的话题检测先将文本表示成向量空间模型,再用凝聚层次聚类法对文本向量聚类,形成话题簇.
传统的向量空间模型使用词来表达文本,未考虑文本中的语义信息.李湘东等[4]和李欣雨等[13]使用主题向量表达文本语义信息,但是其语义粒度过大,容易将不同话题的子话题聚成一类.
传统的层次聚类法为非加权组平均(upmga)算法[19].该算法输入文本集S和阈值θ1,通过聚类输出话题集T.其聚类的主要思想为:每次合并话题集中最相似的两个话题,直到话题集中任意两个话题之间的相似度都小于阈值θ1.话题之间的相似度计算公式为余弦相似度,如式(1)所示:
sim(T1,T2)=cos(T1,T2)=∑t∈T1∩T2w(t,T1)·
w(t,T2),(1)
其中,t为话题向量T中的一项,w(t,T)为项t在T中的权重.话题向量由该话题内所有文本向量的均值表示.
传统的聚类方法未考虑不同话题内部文本相似度分布不均衡的问题,容易造成聚类得到的话题个数和实际话题个数相差较大.
为了解决传统话题检测中存在的问题,本研究使用词对向量模型代替传统的向量空间模型,并使用改进的层次聚类法对话题向量聚类.
对于一句文本,往往该句中少数几个词就可以充分表达该句的语义,所以可以考虑使用多个词作为文本表达的基本单位; 但是这样会带来较高的维度,使模型过于复杂.为了使模型尽量简单,本研究使用在一句文本中共现的词对作为文本表达的基本单位.
在基于词对的向量空间模型中,文本由不重复的词对表示.一篇文本表示成 S={((t11,t21),w1),((t12,t22),w2),…,((t1m,t2m),wm)}.其中,(t1i,t2i)为词对,m为该文本词对的个数,wi为词对(t1i,t2i)的权重.文本采用词对(t1i,t2i)而不是传统模型中的词作为该文本向量的基本单位.词对由两个词组成,不分先后顺序,即(t1i,t2i)=(t2i,t1i),并且要求这两个词来自同一句文本.与二元语言模型不同的是,词对模型并不要求两个词相邻,即二元语言模型是词对模型的一个子集.为了简化模型,本文中定义一句文本的概念为一个句子从开头起碰到任意标点即结束该句,如:
香港|ns上市公司|nt 商会|n即将|d举办|v“|x 2018|m上市公司|nt资本|n市场|n论坛|n”|x.
该句话被划分为(香港|ns上市公司|nt商会|n即将|d举办|v),( 2018|m上市公司|nt资本|n市场|n论坛|n)两个子句.第一个子句产生的词对集合为{(香港, 上市公司),(香港, 商会),(香港, 举办),(上市公司,商会),(上市公司,举办),(商会,举办)}.在数据预处理步骤中,第一个子句中的虚词“即将”会在产生词对之前被去掉.由于数据集中的词对比词在文本中出现的频率要低,所以其权重不采用词对的词频-逆文本频率值(Vtf-idf)表示,而是由词对中两个词的Vtf-idf之和来表示:
w(t1i,t2i)=Vtf-idf(t1i)+Vtf-idf(t2i).(2)
虽然词对比词更能表达文本的语义信息,但是一个文本中词对的数量要远远多于词的数量,这会造成文本的维度过高.为了解决这个问题,本研究通过优先合并较小的话题,并对话题向量进行降维这两方面对传统聚类方法进行了改进.
改进的算法分为两个阶段.第一阶段先输入一个较高阈值θ1,本研究将该阈值设置为0.4,然后通过传统层次聚类方法得到一个数目较多的话题集T.第二阶段聚类原理与第一阶段一致,只是加入了降维和抑制大的话题合并的部分,其流程如下:
1)输入话题集T,阈值θ2.
2)遍历话题集T.如果话题中的文本数大于3,则进行降维操作,该操作在后面详细说明.降维后进行模长归一化.
3)计算话题集中任意两个话题的相似度,计算公式如下:
sim(T1,T2)=cos(T1,T2)×αn1×αn2.(3)
其中:α为对余弦值的衰减底数,本文中全部设置为0.9; n1和n2分别为进行相似度比较的两个话题中的文本数.
4)取其中最大的相似度simi,j以及对应的两个话题Ti和Tj,对simi,j进行放大处理使阈值保持在稳定的区间,公式如下:
sim*i,j=(simi,j)/(αn1×αn2).(4)
5)若相似度sim*i,j大于阈值θ2,则合并两个话题,形成新的话题Tk.新话题的向量表达为该话题所有文本向量的均值.如果新话题中的文本数大于3,则需进行降维操作.在话题集中删除Ti和Tj,将Tk加入话题集T回到步骤3).若sim*i,j小于阈值θ2,执行步骤6).
6)输出话题集T.
在改进的聚类方法中需要对大的话题进行降维,降维的思想有两点.第一,去除文本话题频率较低的项.文本话题频率公式如下:
df(t)=(num(t))/N,(5)
其中,num(t)是在该话题中含有项t的文本数,项t指的词或词对,N是该话题的文本数.本研究中去除df(t)值小于0.2的项.第二,去除话题向量中不重要的项.首先对话题向量进行模长归一化,如果向量中项的权重小于0.01,即认为该项不重要.
综上,降维流程如下:1)对话题向量进行模长归一化,并统计每一个项的文档话题频率df(t); 2)去除df(t)小于0.2的项; 3)去除话题向量中权重小于0.01的项; 4)重新进行模长归一化.
采用文本话题频率及其权重进行降维是因为话题检测是无监督的,而且降维步骤发生在改进聚类方法第二阶段的整个过程.这两个策略可以简单高效地达到降维的目的.
需要注意的是,在改进方法的第一和第二阶段要分别采用传统向量空间模型和词对模型表达文本和话题.改进的方法分成两个阶段是因为在第一阶段时,词对向量的维度较高,此时话题的粒度较小,无法有效地利用文档话题频率进行降维,所以第一阶段必须使用传统向量空间模型来表达文本和话题.
新浪新闻网专题版块上的新闻是人工维护的专题新闻集,其中每一个专题都可以看作是一个话题.实验语料是从该网站的财经专题版块中爬取的2018年3—6月以及7月上旬的财经专题新闻(http:∥finance.sina.com.cn/zt/),并经过人工筛选去除其中明显不属于相关话题的新闻.数据集按照月份划分为两部分:数据集1是3—4月新闻数据,共计1 221篇新闻,包含81个话题,该数据集作为训练集,用于选出合适的阈值参数; 数据集2是5—7月新闻数据,共计705篇新闻,包含49个话题,该数据集作为测试集,用于验证不同模型的优劣.
在TDT领域常见的评价指标有准确率(P)、召回率(R)、F1值、丢失率和误报率等.本研究采用P、R和F1值作为实验的评价指标,其相关公式如下:
Pi,j=(num*(TCi∩TLj))/(num*(TCi)),(6)
Ri,j=(num*(TCi∩TLj))/(num*(TLj)),(7)
F1i,j=(2Pi,jRi,j)/(Pi,j+Ri,j),(8)
其中,num*(T)为集合T中的文本数,TCi为话题检测算法检测出的第i个话题,TLj为标注语料中的第j个话题.
由于话题检测是无监督的,并不能确定聚类之后的类和标注数据中的哪个类对应,所以对于话题检测出来的每个类,本研究分别计算该类和标注语料中每一个类的Pi,j、Ri,j、F1i,j值,并把使F1i,j值最大的Pi,j和Ri,j值作为该类的Pi和Ri值.最后对话题检测出来的类的Pi、Ri和F1i值分别进行加权求和(权值为该类的文本数与总文本数的比值)得到总的P、R和F1值,计算公式如下:
P=∑TCi∈C(num*(TCi))/(Ns)Pi,(9)
R=∑TCi∈C(num*(TCi))/(Ns)Ri,(10)
F1=∑TCi∈C(num*(TCi))/(Ns)F1i,F1i=max(F1i,1,
F1i,2,…,F1i,NT).(11)
其中,Ns是语料的文本个数,C为算法检测出的话题集,NT为标注语料话题的个数.
在文本表达之前,首先要对文本进行预处理.本研究使用结巴(Jieba)分词工具(https:∥pypi.org/project/jieba/)对实验语料进行分词和词性标注,然后根据结果将除名词、动词、形容词、副词以外的所有词作为停用词去除.为了表达新闻标题的重要性,将新闻的标题连续放入正文中两次当作正文处理.
本研究共设置了4组实验:1)使用向量空间模型[19]以及传统层次聚类方法进行话题检测,与Wang等[19]不同的是本研究使用逆文本频率(inverse document frequency,IDF)而不是逆词频率(inverse word frequency,IWF)计算权重; 2)使用词对模型和改进的层次聚类方法进行话题检测; 3)使用向量空间模型以及Single-Pass聚类方法进行话题检测; 4)使用自适应的K-means聚类方法[18]进行话题检测,其中Single-Pass聚类和自适应K-means第一阶段的输入均以时间先后为输入顺序.
对于4组实验,分别在训练集中根据实验结果等差地降低阈值,选择实验结果最好的阈值.实验结果如表1~4以及图1所示.在测试集中,4组实验分别取在训练集表现最好的阈值进行实验,结果如表5所示.表1~5中Num为聚类话题个数.
从表1和2中可以看出在训练集上基于词对的改进方法明显要优于传统的层次聚类方法.传统方法F1取最优值时,其聚类的话题个数要远大于实际话题个数,其聚类话题个数越接近实际话题个数效果越差; 而改进的方法不仅将F1的最优值从0.851提升到0.901,而且F1取最优值时聚类话题个数和实际值很接近,只要不低于实际话题个数,其F1值就不会有大的变化.这是由不同话题内部文本间相似度分布不一致造成的.传统的聚类方法在取得最优值时,仍然存在一部分文本之间相似度较低的话题欠拟合; 但是一旦降低阈值,又会造成另一部分话题过拟合.此时欠拟合的话题会有较高的P值和较低的R值; 而过拟合的话题则有较高的R值和较低的P值,且整个话题集的F1值低于其P和R值.从表1中可以看到当阈值低于最优阈值时,其F1值要明显低于其P和R值.而对于改进的方法(表2),即使阈值低于最优阈值,其F1和P、R值间相差也不大.这说明改进的方法有效地解决了不同话题内部文本间相似度分布不一致的问题.从表3和4可以看出,虽然Single-Pass聚类和
表1 训练集中传统层次聚类的实验结果
Tab.1 Experimental results of traditional hierarchical clustering in the training set
表2 训练集中基于词对的改进层次聚类的实验结果
Tab.2 Experimental results of improved hierarchical clustering based on word pairs in the training set
表4 训练集中自适应K-means聚类的实验结果
Tab.4 Experimental results of adaptive K-means clustering in the training set
图1 不同模型训练集中F1值随聚类话题个数的变化
Fig.1 The F1 values of different models in the training set change with the number of topics
自适应K-means聚类在该数据集上的效果要优于传统层次聚类方法,但是本文中提出的基于词对的改进层次聚类方法取得了更好的结果.图2的结果也说明在聚类得到话题个数相同的前提下,基于词对的改进方法是最好的方法.
从表5可以看出在测试集上,虽然由于数据集分布不一致造成所有模型精度都大幅下降,但是基于词对的改进方法仍然取得了最高的F1值; 同时聚类得到的话题个数(79)也比其他方法更接近实际的话题个数(49).因此虽然在本文中基于词对的改进方法是通过阈值来结束话题聚类,但是实际上由于该改进方法取得最优值时,其结果和实际话题个数相近的优点,所以该话题聚类方法的终止条件完全可以改成:当聚类的话题个数达到事先确定的NT值即停止聚类.这样在一些可以事先估计话题个数的情况下,就可以不通过阈值就得到较好的结果.
为了进一步说明词对特征比词更能表达话题语义特征,本研究在训练集上使用词模型+改进层次聚类进行了另一组实验,其结果和在训练集上第二组实验结果中的一部分如表6所示.
分别采用词模型和词对模型进行改进层次聚类的实验结果中的6个聚类得到话题,从中选取词向量和词对向量中权重最大的3项和该话题的标签做对比.从表6中第2行可以看出,“发生”和“事件”这两个词虽然不如“机场”这个词更有区分度,可是一旦这两个词和“航班”这个词同时出现,则比“机场”或者(航班,机场)更有区分度.通过该对比可以看出,话题检测中使用词对向量可以更准确地表达话题信息.
本文中提出一种基于词对的向量空间模型,可以更加准确地表达文本和话题.并且通过对传统层次聚类方法进行改进,解决了不同话题内文本间相似度分布不一致导致聚类个数与实际个数有较大偏差的问题.通过对每次话题合并得到的新话题去除文档频率较低的项以及Vtf-idf较低的项,并且通过修正的相似度公式使得话题合并优先发生在粒度较小的类之间,这两方面的改进能够很好地解决传统方法存在的问题.实验结果也表明本文提出的词对模型在该改进方法上可以更加准确地表达话题的语义信息,进而得到更好的效果.