基于高维聚类技术的中文关键词提取算法

[摘要]关键词提取是中文信息处理技术的热点和难点,基于统计信息的方法是其中一个重要分支。本文针对基于统计信息关键词提取方法准确率低的问题,提出基于高维聚类技术的中文关键词提取算法。算法通过依据小词典的快速分词、二次分词、高维聚类及关键词甄选四个步骤实现关键词的提取。理论分析和实验显示,基于高维聚类技术的中文关键词提取方法具备更好的稳定性、更高的效率及更准确的结果。

引言  

  关键词提取是通过对一篇输入文章做内容分析,按一定比例或字数要求提取出重要且语义相似性凝聚的关键词的过程。关键词自动提取是文本挖掘领域的一个重要分支,在自动摘要、文本分类、文本聚类、文本过滤、话题跟踪、信息检索、自动问答等很多领域有重要作用。

  迄今为止,关键词自动提取吸引了不少国内外学者的关注和研究,其理论成果主要包括基于统计信息的方法、机器学习方法和浅层式语义分析方法三大类。其中应用最为广泛的是基于统计信息的关键词提取方法,具备简洁易懂、通用性强等优势。

  本文针对基于统计信息关键词提取方法准确率不高的问题,引入高维聚类思想进行改进,提出基于高维聚类技术的中文关键词自动提取算法。经过基于小词典的快速分词、二次分词、高维聚类、关键词甄选四个步骤,算法抽取出的关键词更加准确,并且具有更好的稳定性和更高的效率。

关键词提取方法

  关键词自动提取方法分为基于统计信息的方法、机器学习方法和浅层式语义分析方法三大类。

  基于统计信息的方法主要包括基于词频的关键词抽取方法[ ]、基于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 ( j?1,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:在最终形成的每一个类 ,k?1,2,…,c中,删除对象个数较少的孤立点,余下各类为最终聚类结果。

  算法详见文献[9]。

  由于将文本信息转化成了计算机易于处理的结构化数据,且CABOSFV计算复杂度低,整体算法的处理速度非常理想。同时,由于将文章中一些主题不相关的句子判断为孤立点删除,保证了后续关键词甄选的准确率。

关键词甄选

  通过高维聚类技术CABOSFV,算法将文章中意思相近的句子聚集在一起,它们对文章主题具有更强的表达力。因此,以高维聚类结果中的各个类为基础,对词频进行统计,并甄选出文章的关键词,具体做法如下:

  Step1:计算最终分词集中每个词的类内词频,即用包含该词的类内句子数除以类内句子总数。

  Step2:判断每个词的类内词频是否大于事先设定的词频阈值λ,将大于阈值的词加入到初始关键词集。

  Step3:结合具体问题,对初始关键词集进行修剪,生成最终关键词集。

  算法在类内统计词频,避免了传统统计方法将常用名词误判为关键词的情况,提高了关键词抽取的准确率。   

算法实验

  为检验算法效果,对《智利发生8.8级强震,多国拉响海啸预警》[ ]、《莫斯科地铁遭两女人弹袭击,至少38人丧生》[ ]及《云南局部干旱已达100年一遇》[ ]三篇发表于新华网、人民网上的新闻文章进行实验。实验数据的统计信息见表1。

  在依据小词典分词及二次分词后,将文本数据转化为二维表。表2所示为文章智利地震对应的二维表。

  调用CABOSFV算法聚类后,计算最终分词集中每个词的类内词频,并判断产生初始关键词集。三篇文章初始关键词的类内词频统计分别见图2、图3及图4。

  经过对初始关键词集的修剪,三篇文章生成的最终关键词集分别为{智利、地震}、{地铁、爆炸}及{云南、干旱}。

  结合原文可以看出,基于高维聚类技术的中文关键词提取算法准确挖掘出了文章的关键词。此外,从运行时间可以看出,算法具有较高的效率。

结论  

  通过依据动词、虚词、停用词小词典的快速分词、针对复合词拆分的二次分词、基于CABOSFV算法的高维聚类、类内词频统计及关键词的最终甄选,基于 高维聚类技术的中文关键词提取算法完成了对关键词的识别。理论分析和实验结果显示,算法的准确度较高,运算效率理想,并具有很强的稳定性。

时间: 2024-08-09 06:23:43

基于高维聚类技术的中文关键词提取算法的相关文章

文本关键词提取算法

1.TF-IDF 2.基于语义的统计语言模型 文章关键词提取基础件能够在全面把握文章的中心思想的基础上,提取出若干个代表文章语义内容的词汇或短语,相关结果可用于精化阅读.语义查询和快速匹配等. 采用基于语义的统计语言模型,所处理的文档不受行业领域限制,且能够识别出最新出现的新词语,所输出的词语可以配以权重. 3.TF-IWF文档关键词自动提取算法 针对现有TF-IWF的领域文档关键词快速提取算法.该算法使用简单统计并考虑词长.位置.词性等启发性知识计算词权重,并通过文档净化.领域词典 分词等方法

关键字提取算法TF-IDF和TextRank(python3)————实现TF-IDF并jieba中的TF-IDF对比,使用jieba中的实现TextRank

关键词:    TF-IDF实现.TextRank.jieba.关键词提取数据来源:    语料数据来自搜狐新闻2012年6月-7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据    数据处理参考前一篇文章介绍:    介绍了文本关键词提取的原理,tfidf算法和TextRank算法    利用sklearn实现tfidf算法    手动python实现tfidf算法    使用jieba分词的tfidf算法和TextRank提取关键词 1.关键字提取: 关键词抽取就是从文本里面把跟这

数据挖掘:基于Spark+HanLP实现影视评论关键词抽取(1)

1. 背景 近日项目要求基于爬取的影视评论信息,抽取影视的关键字信息.考虑到影视评论数据量较大,因此采用Spark处理框架.关键词提取的处理主要包含分词+算法抽取两部分.目前分词工具包较为主流的,包括哈工大的LTP以及HanLP,而关键词的抽取算法较多,包括TF-IDF.TextRank.互信息等.本次任务主要基于LTP.HanLP.Ac双数组进行分词,采用TextRank.互信息以及TF-IDF结合的方式进行关键词抽取. 说明:本项目刚开始接触,因此效果层面需迭代调优. 2. 技术选型 (1)

【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理

篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblogs.com/baiboy/p/wpf1.html 篇三:批量处理后的txt文件入库处理:http://www.cnblogs.com/baiboy/p/wpf2.html 篇四:关于OneNote入库处理以及审核:http://www.cnblogs.com/baiboy/p/wpf3.html [

关于最近研究的关键词提取keyword extraction做的笔记

来源:http://blog.csdn.net/caohao2008/article/details/3144639 之前内容的整理 要求:第一: 首先找出具有proposal性质的paper,归纳出经典的方法有哪些. 第二:我们如果想用的话,哪种更实用或者易于实现? 哪种在研究上更有意义. 第一,      较好较全面地介绍keyword extraction的经典特征的文章<Finding Advertising Keywords on Web Pages>. 基于概念的keywords提

【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核

篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblogs.com/baiboy/p/wpf1.html 篇三:批量处理后的txt文件入库处理:http://www.cnblogs.com/baiboy/p/wpf2.html 篇四:关于OneNote入库处理以及审核:http://www.cnblogs.com/baiboy/p/wpf3.html [

基于模糊聚类和协同过滤的混合推荐系统

Hybrid Recommender System based on Fuzzy Clustering and Collaborative Filtering 给出题目,想找的话直接在ElsevierSD里下载即可. 并不是逐句翻译,一些简单的背景比如经济啦什么的直接忽略,不过笔者会在博文里点出来. 一二三这样的标题是原论文的题目,我没翻译,为以后自己写英文论文做准备,以1234这样的标题开始的内容是笔者自己加上去的,就是我的笔记. 我自己把握不准的或者比较精妙的局段,都有英文原文留下,分段也被

【代码相似论文笔记】基于序列聚类的相似代码检测算法

摘要: 为了提高源程序代码之间相似性的检测效率,提出一种基于序列聚类的相似代码检测算法. 算法首先把源代码按照其自身的结构进行分段提取,然后对各个分段进行部分代码变换,再以带权重的编辑距离为相似度量标准对这些符号进行序列聚类,得到相似的程序代码片段,以达到对源程序进行相似功能检测的目的. 应用: 可以通过检测源程序中的相似代码对源程序进行简化,也可以查找出多个程序之间的相似功能,还能用于抄袭检测. 步骤: 1.提取出源代码中的功能段 2.以带权重的编辑距离为相似度量标准 3.通过聚类源程序代码序

基于K-MEANS聚类的胡萝卜纯色背景去除方法

所谓的聚类是指,将一个数据集中的某些方面相似的数据成员进行分类的过程,聚类就是一种发现这种内在结构的技术,聚类技术经常被称为无监督学习.k均值聚类是最著名的划分聚类算法,由于简洁和效率使得他成为所有聚类算法中最广泛使用的.给定一个数据点集合和需要的聚类数目k,k由用户指定,k均值算法根据某个距离函数反复把数据分入k个聚类中. k均值算法描述 先随机选取K个对象作为初始的聚类中心.然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心.聚类中心以及分配给它们的对象就代表