基于高维聚类技术的中文关键词提取算法
[摘要]关键词提取是中文信息处理技术的热点和难点,基于统计信息的方法是其中一个重要分支。本文针对基于统计信息关键词提取方法准确率低的问题,提出基于高维聚类技术的中文关键词提取算法。算法通过依据小词典的快速分词、二次分词、高维聚类及关键词甄选四个步骤实现关键词的提取。理论分析和实验显示,基于高维聚类技术的中文关键词提取方法具备更好的稳定性、更高的效率及更准确的结果。
引言
关键词提取是通过对一篇输入文章做内容分析,按一定比例或字数要求提取出重要且语义相似性凝聚的关键词的过程。关键词自动提取是文本挖掘领域的一个重要分支,在自动摘要、文本分类、文本聚类、文本过滤、话题跟踪、信息检索、自动问答等很多领域有重要作用。
迄今为止,关键词自动提取吸引了不少国内外学者的关注和研究,其理论成果主要包括基于统计信息的方法、机器学习方法和浅层式语义分析方法三大类。其中应用最为广泛的是基于统计信息的关键词提取方法,具备简洁易懂、通用性强等优势。
本文针对基于统计信息关键词提取方法准确率不高的问题,引入高维聚类思想进行改进,提出基于高维聚类技术的中文关键词自动提取算法。经过基于小词典的快速分词、二次分词、高维聚类、关键词甄选四个步骤,算法抽取出的关键词更加准确,并且具有更好的稳定性和更高的效率。
关键词提取方法
关键词自动提取方法分为基于统计信息的方法、机器学习方法和浅层式语义分析方法三大类。
基于统计信息的方法主要包括基于词频的关键词抽取方法[ ]、基于TFIDF指标的关键词抽取方法[ ]、利用字同现信息的关键词抽取方法、利用词共现信息的关键词抽取方法、基于N-Gram信息统计的关键词获取方法、构建复杂网络提取关键词的方法[ ]等。尽管具有简单易用的优势,但这类方法的准确性不高,提取出的关键词往往包含文章中普遍出现却与主题无关的高频词。此外,这类方法需统计所有词汇出现的频率,制约了运行效率。
机器学习方法是建立在大量语料库上的关键词自动提取方法,包括基于决策树的方法、基于Naive Bayes 的方法、基于SVM的方法[ ]、基于最大熵模型的方法等。这类方法将关键词提取问题视为二元分类问题,构造关键词提取分类模型,判断词语类别是否为关键词。由于在实际应用中有限的训练样本难以接近整个样本空间上的数据分布,这类方法很难训练出效果好的分类器。此外,这类方法在训练分类器的过程中可能存在过拟合问题,且生成的分类器只在与训练样本类似的文章中才能取得较理想效果。
浅层式语义分析方法[ ]是近几年发展起来的一种关键词自动提取方法。通常,这类方法借助一种中间模型表示文章语义结构,通过分析词语间的语义关系,获取关键词。显然,这类方法需要专业相关的先验知识。
本文提出的基于高维聚类技术的中文关键词提取算法是针对基于统计信息的方法所作的改进。在依据动词、虚词、停用词小词典实现快速分词及二次分词后,将待处理文本数据转化为以句子为对象、以词为属性的高维二态关系数据。调用高属性维聚类算法CABOSFV实现聚类后,进行类内词频统计,甄选出其中的高频词作为最终的关键词。分析可知,算法具有更高的准确度,更好的稳定性,并提高了运行效率。
基于高维聚类技术的中文关键词提取算法
基于高维聚类技术的中文关键词提取算法分为依据小词典的快速分词、二次分词、高维聚类及关键词甄选四个步骤,见图1。
依据小词典快速分词
汉语以字为单位,词与词之间没有天然的分隔符,因此中文关键词提取的第一步是进行分词。常用的中文分词法是依据名词、形容词大词典的机械分词法。由于名词、形容词的数量约占总体词汇的70%,且难以及时收录很多新生词,所以依据大词典进行匹配存在效率低、扩展性不强的问题。
鉴于此,算法选用较为新颖的依据动词、虚词、停用词小词典的快速分词法[ ]。其中,虚词包括连词、介词、副词及助词,停用词包括数词、量词、代词、方位词、拟声词、叹词、无实际意义的动词(如“可能”)及太过常用的名词(如“操作”)。
对于文章中的每个句子,首先分别依据这三个小词典对其进行切分,即将句中的动词、虚词、停用词分别抽取出来,生成集合V,X,T:
V={c | c经动词切分后被匹配为动词};
X={c | c经虚词切分后被匹配为虚词};
T={c | c经停用词切分后被匹配为停用词},
而每类切分余下的字符串构成集合 。
随后通过下述处理,生成初始分词集W。设某句可表示为Sentence = S1,S2,…,Sn,其中,Si,i=1,2,…,n为字符串,则具体操作如下:
While SiSi+1 ∈ , i=1,2,…,n-1,
if [Si (or Si+1)∈ ] && [Si+1 (or Si)];
Then W=W∪{ Si+1 (or Si)};
}
由于动词词典、虚词词典以及停用词词典的词汇量不多,算法初次分词的效率得到改善。同时由于少有这三类新生词汇,无需经常性地扩充词典,算法具有很好的稳定性。
二次分词
由于没有与大容量名词词库进行匹配,经过快速分词后产生的初始分词集W中存在不必要的复合词。为此,对初始分词集进行二次切分,生成最终分词集。二次分词的具体做法如下:
Step1:假设初始分词集W={Z1,Z2,…,Zn},其中Zi (i =1,2,…,n)代表字符串,设定字符串长度阈值α;
Step2:对任意Zi ( i =1,2,…,n),
{ 若Zi.Length > α,
则将Zi与Z1,Z2,…,Zi-1,Zi+1,…Zn分别匹配,
{若Zi包含Zj ( j1,2,…,n且j≠i);
则将Zi以Zj为界进行切分,并用切分后
的词替换原词,存入集合W;}
}
经过二次切分后,清除了词与词之间不必要的包含关系,生成了最终分词集,为后续聚类做好铺垫。
高维聚类
将最终分词集中的词视作属性,将文章中的每个句子视作对象,若某个句子中包含某个词,则该句子对象相应的词属性取值为1,否则为0。经过这样的处理将原来的文本信息被转化成一张高属性维稀疏二维表。针对该表,调用高维聚类算法CABOSFV(Clustering Algorithm Based On Sparse Feature Vector)[ ]对句子对象进行聚类。
CABOSFV算法专门用于求解二态变量高属性维稀疏聚类问题,利用其稀疏差异度计算方法及“稀疏特征向量”对数据进行有效压缩,只需一次数据扫描就可完成聚类。假设有n个对象,描述第i个对象的m个稀疏特征取值分别对应于二态变量值xi1, xi2,…, xim,一个类内对象的差异度上限为b,则算法处理步骤如下:
Step1:为每个对象建立一个集合,分别记为 ,i{1,2,…,n}。
Step2:计算 和 合并后集合的稀疏差异度,若不大于类内对象的差异度上限b,则将 和 合并到一个集合,作为一个初始类,记为 ;若合并后集合的内部差异度大于上限b,那么将 和 分别作为一个初始类,记为 和 。将类的个数记为c。
Step3:针对集合 ,计算其与现存所有类合并后的集合稀疏差异度,并寻找i0,使得 与类 合并后的差异度最小。随后判断其是否符合b的要求,若符合,将 加入到类 中;否则,则将 作为一个新的初始类,记为 ,类的个数c=c+1。
Step4: 对 , ,依次进行类似于Step3的操作。
Step5:在最终形成的每一个类 ,k1,2,…,c中,删除对象个数较少的孤立点,余下各类为最终聚类结果。
算法详见文献[9]。
由于将文本信息转化成了计算机易于处理的结构化数据,且CABOSFV计算复杂度低,整体算法的处理速度非常理想。同时,由于将文章中一些主题不相关的句子判断为孤立点删除,保证了后续关键词甄选的准确率。
关键词甄选
通过高维聚类技术CABOSFV,算法将文章中意思相近的句子聚集在一起,它们对文章主题具有更强的表达力。因此,以高维聚类结果中的各个类为基础,对词频进行统计,并甄选出文章的关键词,具体做法如下:
Step1:计算最终分词集中每个词的类内词频,即用包含该词的类内句子数除以类内句子总数。
Step2:判断每个词的类内词频是否大于事先设定的词频阈值λ,将大于阈值的词加入到初始关键词集。
Step3:结合具体问题,对初始关键词集进行修剪,生成最终关键词集。
算法在类内统计词频,避免了传统统计方法将常用名词误判为关键词的情况,提高了关键词抽取的准确率。