李渝勤,孙丽华
(1.北京信息科技大学,北京100101;2.北京拓尔思信息技术股份有限公司,北京100101)
随着互联网的普及,中国网民超过3.38亿人,已经成为世界第一大网民国家。Web2.0时代,网络具有传播快、成本低、联动性强等特点,使得传播环境与传播者都发生了天翻地覆的变化。网络论坛、博客、SNS等给人们提供了众多可以尽情表达的渠道,从以前只能看与听,变成现在的可以评论,甚至还可以有自己的读者。大多全国性乃至世界性影响事件的传播,均首先来自于网络。网络舆论热点层出不穷,如上海市户籍新政、陕西神木县全民免费医疗、做俯卧撑、躲猫猫、楼脆脆、替谁说话、周久耕事件等等,都是通过网络进行第一时间传播。互联网已经成为政府了解民情的直接渠道,也是新形势下政府部分的重要舆论阵地。只有及时发现互联网的热点信息,快速发现、快速处理有较大影响的重要事件,并进行快速识别和定向跟踪,才可能更快更全面地掌握舆情动向,从而进行正面引导舆论和宣传。
互联网的热点信息包括热点事件、热点专题、热点词语(简称热词)等方面,其中热词作为一种词汇现象,反映了某一特定时空范围内人们普遍关注的问题和事物,反映一个时期的热点话题及民生问题。近几年,网络的的确确制造了许许多多的网络热词。它们不仅仅吸引了网民的注意,同样还得到了众多媒体的关注。这应该是一种值得关注的网络文化现象。
本文探讨如何对互联网的信息进行实时分析、挖掘,从而获取近期流行热词的相关技术问题。概括地说,热词分析技术包括热词发现、热词关联技术,热词关联技术又称为词群关系技术,下节将详细阐相关的技术内容。
热词挖掘是从互联网不断更新的信息中寻找一定时期热度高的那些短语,比如人名、地名、机构名和其他常见短语,很多网络热词是词典中未收录的新词语。按领域可分为政治、经济、军事、娱乐、体育、卫生、科技、社会生活等各个领域的热词。
互联网无时不在源源不断地产生热词。新闻留言板、论坛、博客、微博等内容丰富的网络传播媒介和渠道已经成为热词展示魅力的舞台。然而,这些热词的传播往往呈现出无序、散乱的状态,如何在海量信息海洋中准确地找到热词的来龙去脉并非易事,这也是自然语言处理和文本挖掘领域学者们不断研究和探索的方向。本文通过分析互联网热词的呈现特点,综合词语本身的词频信息和词语与时间因素的关联性,研究得出热词发现算法模型,及时发现互联网热词。
互联网热词呈现的主要特点之一主要表现为词语在互联网上出现的频度高、分布范围广、涉及领域多,即在新闻网站、论坛、博客、微博客等新兴网络载体上都有非常广泛的传播,这些词演变为热词的可能性非常大;此外,互联网热词呈现的另一显著特点是词语随时间推移而出现突然的异动,即时间因子对热词具有非常明显的影响。
图1 热词的呈现特点示意
从图1我们可以看出,例如我们常见的词语“网络”一词,虽然该词的出现频度较高,但是历史波动与近期波动比较平稳,因此不属于热词范畴,属于高频词汇。而“阶梯电价”一词在10月份词频出现频率开始升高,到十月中旬该词的出现频率呈现迅速增长的态势,
历史波动与近期波动表现为突发性的异动增长,则判断该词属于热词范围的词语;“生活”一词属于波动变化较小,频率出现不是很高的词汇,属于一般网络词汇。
候选短语识别分为命名实体短语和非实体短语识别两部分。命名实体短语包括人名、地名、机构名的识别。非实体短语指的是除了人名、地名、机构名的其他短语串。实体短语识别采用的是基于隐马尔科夫模型的命名实体识别技术[1-2]。非实体短语目前采用Nagao算法,进行高频串的识别及其串频统计工作,后续准备采用C-valule值等多词串抽取方法,进行对比试验[8],以期获得更好的识别精度。
2.2.1 命名实体识别
隐马尔可夫模型是一种在自然语言处理领域中被广泛应用的统计模型。中文命名实体识别中的人名识别、地名识别、译名识别以及机构名识别等都可以用隐马尔可夫模型来解决。本文采用了的层叠隐马尔可夫模型[3-4](Cascaded Hidden Markov Model,简称Cascaded HMM)在统一的隐马尔可夫模型中来识别各类命名实体,并在这些隐马尔可夫模型中建立起一定的联系,形成一个一体化的命名实体识别系统。
整个命名实体识别的层叠隐马尔可夫模型由三级互相联系的隐马尔可夫模型构成,自底向上分别为人名识别HMM,地名识别HMM和机构名识别HMM,每一级都是以隐马尔可夫模型作为基本的算法模型,整个算法的时间复杂度和隐马尔可夫模型的时间复杂度相同,分析时间随着输入串长度的增长而线性增长,速度非常快。各层隐马尔可夫模型之间以下两种方式互相关联,形成一种紧密的耦合关系:
每一层隐马尔可夫模型都采用N-Best策略,将产生的最好的若干个结果送到词图中供高层模型使用;低层的隐马尔可夫模型通过词语的生成模型为高层隐马尔可夫模型的参数估计提供支持。
其中第一层人名识别的输入为粗切分的分词序列,每一层隐马尔可夫模型都采用改进的Viterbi算法(N-Best),输出最好的若干个结果作为高一级隐马尔可夫模型的输入。最高级隐马模型将在人名识别和地名识别的基础之上进行机构名识别。
2.2.2 非实体串的识别
采用Nagao算法进行字串频率统计[5-7],统计出现频率大于一定值的N到M元的字串;然后以一定策略进行子串归并,长串归并掉短串,初步过滤掉候选串中的垃圾;最后综合三种策略,对候选串进行最后的过滤,得到高频词串,对高频词串进行实体串的帅选之后得到非实体串。
数据源是通过网络爬虫采集的互联网数据,存储到文件中,把此文件看成一个很长的字符串读入内存,并以Unicode编码。每个字符占2字节空间。如果待处理语料包括m个字符,则需要2m字节的存储空间。以下用Ci表示C中第i个字符。
接着构造一个长为m的P表(pointer table)。P表的每一项Pi保存一个指向C中子串Si的指针。Pi指向的子串Si定义为从Pi所指字符Ci到C中最后一个字符Cm中的m-i+1个字符所组成的字符串。这样S1,S2,…,Sm的串长依次递减,最后一个子串Sm只包括一个字符Cm。P表构建好以后就可以根据P表项所指的子串对P表进行升序排序,在使用快速排序算法的情况下排序时间复杂度为O(nlogn)。
接下来可以在已排序的P表的基础上构建记录相邻子串相同最长左子串长度的L表。L表与P表大小相同,其中的表项Li记录排序后相邻子串Spi-1和Spi相同最长左子串长度,即从串首开始相同字符的个数(L1=0)。例如:若Pi指向的子串Spi=“吸收外资最多的国家”,Pi-1指向的子串Spi-1=“吸收外资最多的一年”,则 Li=6。
在构建好P表和L表之后,可使用如下算法对长度为N(1≤N≤255)的统计串进行串频统计:
算法:长度为N(1≤N≤255)的统计串串频统计算法。输入:P表,L表,N。
输出:所有N元统计串及其频次。
1. P1指向的N元串赋给X,X的频次置为1
2. for i=2 to m
3. if Li≥N
4. X的频次加1
5. else
6. 输出X及其频次
7. Pi指向的N元串赋给X,X的频次置为1
8. 输出最后的X及其频次
经过串频统计之后,可获得长度不小于m1且不大于m2(m1,m2∈N且m1<m2)的高频串集合Ω。Ω中仍包含许多“垃圾”不宜都用来作为候选短语串。如汉语字串“斯特洛夫斯”出现10次,“奥斯特洛夫斯基”出现9次,则前者也可能为“垃圾”。我们把从高频串集合中删除同频子串的过程称为等频子串归并,删除近频子串的过程称为近频子串归并,统称为子串归并。经过子串归并后的统计串即是我们要获取的候选串。
采用通用度过滤、IWP过滤、互信度滤以及首尾字过滤等手段进行垃圾串的过滤工作,最后得到候选的子串,在候选子串中进行实体串的过滤即得到非实体串。
候选实体短语和非实体短语串很多,需要进行热度排序,取大于设定阈值的词语为热词。排序是根据词语的热度权值高低进行的排序。根据热词的定义,热度权值分成两个部分:基础权值和波动权值。基础权值由在标题出现频率和文档频率组合计算来确定。该频率不仅仅指出现次数,另外还考虑了该词的上下文信息,如“记者:张晓霞”中“张晓霞”虽出现于很多文章,但由于它的上下文只有一个,所以频率为1。
波动权值则考虑了长、中、短期三种时间长度中基础权值的变化过程,短期频率与长期频率比值越高,则波动权值越高。最后赋予波动权值更高的权值,因为我们更看重的是该词的新颖程度,最终的历史波动权值越高,则新颖度越高,更符合热词的含义。
具体热度权值计算公式如下:
式(1)为词语的原始基本权值计算公式,baseweight值为原始基本权值,titledf短语在标题出现的频率,contentd f为短语在正文出现的文档频率。计算原始基本权值以天为单位,公式中标题中词语的词频数乘2,强调词语在标题出现的重要程度要高于正文出现。
式(2)是对原始基础权值做的数值平滑处理,目的是平衡低频、高频短语的。baseweight为原始基础权值,convbaseweight为平滑后的基础权值。
式(3)为词语的历史权值的计算公式,longavg为基础权值的长时期的平均值,shortavg为基础权值的短时期的平均值,midavg为基础权值的中时期的平均值。式中midavg与longavg的比值是中时期与长时期的一个比值,系数为0.28;shortavg与longavg的比值是短时期与长时期的比值,系数为0.46;shortavg与midavg的比值是短时期与中时期的比值,系数为0.36。该公式中更强调短时期与长时期的比值的重要性。系数值的选取都是大量试验之后,总结得出的一个经验值。
式(4)为词语的最终热度权值计算公式,f inalweigth为词语的最终热度权值,convbaseweight为平滑处理后的基础权值,convhistoryweight为历史权值。公式中0.25和0.75分别为基础权值和历史权值的系数,是强调两个权值不同的重要程度,此公式中更强调历史权值的重要性,因此历史权值的系数设定更高一些。系数值的选取,主要依靠大量的实验测试,根据大量的测试结果来选取此系数值。
通过上述词语的热度权值计算之后,按权值的大小对词语进行热度排序。得到一段时间的热点人名、热点地名、热点机构名及热点非实体词语。
在TRS舆情监测系统中对热词进行自动发现,计算热词的时间区间可以随机设定,例如计算1天热词、3天热词和7天的热词。数据来源通过T RS InfoRadar对互联网的信息进行采集。数据源除选择互联网新闻外,还选择网络论坛和博客的信息,尤其重点选取论坛的信息。论坛信息是所有网络信息中,信息量最大的,也是网民关注度,参与度最大的、它的影响力也是不容低估的,选择了主流的论坛如新华网论坛、人民网论坛、天涯论坛、猫扑和凯迪等。对采集的数据过滤、抽取之后,存储到T RS数据库中。参与分析的历史数据集的范围,也可随机设定,通过热词分析配置文件来设定。热词分析的配置文件的配置参数如表1所示。
表1 热词分析的配置参数表
表1为TRS热词分析模块识别的2010-6-10当天的热词,包括热点人、地名及其非实体热词。历史数据的参考时间范围是半个月。命名实体识别的性能目前为每秒500k左右的识别速度,从热词应用的角度,目前的识别速度可以满足工程需求,识别性能还有一定的提升空间,后续还需不断的改进。非实体串的识别速度非常快,每秒达到2M左右的识别速度,目前还存在很多误识的垃圾串,需要优化过滤算法,提高非实体串的识别精度。
表2 热点人名表
表3 热点地名表
表4 热点非实体表
热词关联技术包括两部分。第一部分为热词类信息的确定,第二部分为热词类之间的关联性计算。
第一部分热词类信息的确定方法。对所有备选热词短语根据权重高低进行排序,取权重高的形成热词类,同时把同现程度很高的热词短语合并成一个类。热词短语出现的文章确定为类内的文章,第二部分为热词类关联性的确定,通过同现率等特点确定类之间的关联性,采用词群关系图展现。关联信息在词群关系图中表现为连接类与类之间的连线,生成最终词群聚类结果。
形成词群关系图的具体步骤为首先把所有类分成组,分组的过程为:首先计算所有类两两间的相似度,相似度的计算方法为两个类的文档同现率,然后每次取相似度最大的两个类所在的组合并形成一个新的大组,为了防止出现过于极端的情况,这里强制一个组中最大的类数目为10。合并过程中,所用的相似度最大的两个类之间就形成一个关系,最终就形成这样一个局面:所有的类被分成几个组,每个组之间的关系形成一个无环图。
组形成之后,计算各组内各个类点的坐标信息。关系并不需要计算坐标,因为类点坐标确定了,线也就确定了。词群关系图中点坐标的计算方法如下:
假设画布是个正方形,首先根据组数目计算画布分块,比如7~9个组会分成3×3,5~6个组会分成3×2等等,力争分布最美观。然后,在每个分块内绘制一个组(有的块内会没有组),由于组内类数目不同,所以有的块会拥挤,而有的块会比较空旷,现在没有更好的办法处理这个问题,后期不断优化。
块内类分布计算如下:
如果组内类数目为1个,则在块内中心附近随机产生一个位置;
否则,如果组内类数目小于6,则,选择一个最大的类作为中心,其他类均匀分布在周围。如图2所示。
为了美观而不死板,周围点的分布有一定的随机旋转。
如果组内数目大于6,则,选择最大的两个类,作为双中心,分布在矩形块的对角线上,然后分别以这两个类为中心,其他类半圆分布,典型的情况如图3所示。
图2 组内单圆心点坐标的示意图
图3 组内双圆心点坐标的示意图
实验数据最近七天的热词分析及其词群关系展示情况,历史参比数据选择30天的数据规模大约百万级。图4中近七天的热词形成的词群关系分成8个大组,例如:组1中“金融机构”、“债务危机”和“欧元区”为一组;组2中“分析师”和“创业板”为一组 ;组 3 中“认贷” 、“房贷”、“二手房” 、“调控政策”和“中国新闻”为一组等。
图4 七天的词群关系图
实验数据中,每一个节点点击之后都可以看到该热词所在的文章标题列表,点击标题列表可以看到热词在文章出现的具体位置,采用标红显示。热词识别方法已经成功应用到T RS舆情监测系统的热点发现模块,热词发现模块包括热点事件、热点专题、热点词语识别等。TRS热点发现模块已经取得很好的工程实践效果,在很多舆情项目中得到成功应用。
互联网信息有复杂多变信息量大等特点,目前的热词分析模块效果不是很理想,需要提升的空间还很大,需要改进的方面还很多。例如热词的权值计算方法,还需要分析考虑词语在正文中出现位置、词性、短语长度等特征信息;人名、地名、机构名的识别的准确率还有待提高,目前系统中还有一定的误识问题;非实体串识别中,还有很多垃圾串,有待于提高垃圾串的过滤工作;词热类的划分方法以及计算类之间的关联性还不是很准确,需要更精确的划分热词类,继续探索除了贡献特征以前的其他方法来计算关联性,比如间接关联性等。总之,舆情热词串的识别效果还不是很理想,需要不断的改进、优化识别策略及其算法等。
[1]吕雅娟,赵铁军,等.基于分解与动态规划策略的汉语未登录词识别[J].中文信息学报,2001,15,(1):28-33.
[2]L.R.Rabiner(1989)A Tutorial on Hidden Markov M odels and Selected A pplications in Speech Recognition[C]//Proceedings of IEEE.77(2):257-286.
[3]张华平,刘群.基于角色标注的中国人名自动识别技术[J].计算机学报,2004,(1):85-91.
[4]沈嘉懿,李芳,等.中文组织结构名称与简称识别[J].中文信息学报,2007,21(6):17-21.
[5]Satoshi S.,Nagao M.Toward memory-based translation[C]//Proceedings of the 13th International Conference on Computational Linguistics(COLING-90).Helsinki,Finland,1990:247-252.
[6]吕学强.面向机器翻译的E-Chunk获取与应用研究[D].博士毕业论文.东北大学.2005:27-52.
[7]Nagao M.,Mori S.A new method of n-gram statistics for large number of n and automatic extraction of words and phrases from large text data of Japanese[C]//Proceedings from the 15th International Conference on Computational Linguistics,Kyoto 1994:611-615.
[8]李超,王会珍,等.基于领域类别信息C-value的多词串自动抽取[J].中文信息学报,2010,24(1):94-98.