中文词频统计系统设计分析

(整期优先)网络出版时间:2016-12-22
/ 2

中文词频统计系统设计分析

梁浩波李汉巨

(广东电网有限责任公司东莞供电局信息中心)

摘要随着互联网时代的到来,网络信息呈极速增长态势,互联网让人们的生活更加“碎片化”,有用信息的获取变更越来越不容易,中文词频统计系统有效解决这一难题,帮助人们从一堆杂乱无章的文本数据中快速准确获取有价值的信息。本文通过分析中文词频统计的关键技术,即中文分词技术,并经过对比分析几种常用的中文分词工具后,最终通过开源的IKAnalyzer完成中文词频统计系统的实现。

关键词:中文词频统计关键技术综述;中文词频统计系统设计

前言

目前我们正处于一个互联网时代,而信息量的高速增长带来的复杂性,需要我们对其进行有效处理。如何利用计算机来进行有效地信息处理就产生了中文信息处理技术。

中文信息处理是计算机对中文的音、形、义等信息进行处理和加工的过程,它是自然语言处理的一个分支,是一门与计算机科学、语言学、数学等多种学科相关联的综合性学科。从20世纪80年代开始,中文信息处理进入了快速发展阶段,具体研究内容只要包括对字、词、句、段、篇、章的输入输出、压缩存储、检索传输、分析理解和智能生成等方面的技术。

随着网络信息的极速增长,有用信息的获取变得越来越不容易,中文词频统计系统的诞生为人们解决这一难题,帮助人们从一堆杂乱无章的中文文本数据中获取高频词或关键词,有助于准确把握文章的要义,从而深入了解其核心思想,获得有用的信息。

1.中文词频统计关键技术

1.1中文分词技术

中文分词是中文词频统计首要解决的问题,也是中文词频统计的关键技术。中文文本信息与英文文本信息存在一个明显差别,即在英文文本中,单词与单词之间有空格分隔;而中文文本中,词与词之间不存在天然分隔符,同时中文词语没有清晰的定义。这些文本信息区别,要求在对中文文本信息进行处理前,必须将成段的文本分隔成更小的词汇单元,这个过程即是中文分词。

中文自动分词是指使用自计算机自动对中文文本进行词语的切分,即像英文那样使得中文句子中的词之间有空格以标识,达到被计算机自动识别语义的效果。常用的基于词典分词的算法流程图如图1所示:

图1基于词典的分词算法流程图

1.2常用的中文分词工具

常用的中文分词工具有:CDWS中文分词系统、SCWS中文分词引擎、ICTCLAS汉语分词系统和IKAnalyzer中文分词工具。

(1)CDWS中文分词系统

CDWS(TheModernChineseDistinguishingWordsSystem)是我国第一个实用性的中文分词系统,它是由北京航空大学的梁南元教授于1984年设计并实现的。CDWS采用的是直接匹配的分词算法,即“查字典”,通过从左到右的直接扫描句子,遇到字典里有的词就标示出来,遇到复合词,则取最长匹配。比如“南京市市长”,切分为一个整词,而不是“南京/市/市长”。而遇到词典里没有的词,则全部切分为单个字,这样简单的分词就完成了。

(2)SCWS中文分词引擎

由Hightman开发的一套基于词频词典的机械中文分词引擎,它能将一整段的汉字基本正确的切分成词。采用的是采集的词频词典,并辅以一定的专有名称,人名,地名,数字年代等规则识别来达到基本分词,经小范围测试大概准确率在90%~95%之间,已能基本满足一些小型搜索引擎、关键字提取等场合运用。45Kb左右的文本切词时间是0.026秒,大概是1.5MB文本/秒,支持PHP4和PHP5。

(3)ICTCLAS汉语分词系统

ICTCLAS汉语词法分析系统是目前应用最广泛的分词系统,该系统由中科院的两位研究员开发,深受用户好评。ICTCLAS分词系统采用层叠隐马尔科夫模型将中文分词、未登录词识别、歧义词处理和词性标注集成在一个完整的系统中。该系统支持用户词典、繁体中文、GBK、UTF-8、UTF-7、Unicode等多种编码格式。目前已升级到ICTCLAS3.0,CTCLAS3.0分词速度单机996KB/s,分词精度98.45%,API不超过200KB,各种词典数据压缩后不到3M,是当前世界上最好的汉语词法分析器。

(4)IKAnalyzer中文分词工具

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。IKAnalyzer3.0一方面采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力;另一方面采用了多子处理器分析模式,支持英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。

2中文词频统计系统设计

2.1中文词频统计系统设计架构图

本文基于IKAnalyzer开源工具实现中文词频统计系统。在技术实现过程中,主要按图2的顺序进行3个阶段操作:

(1)专业术语导入:由于一般的中文分词系统都是基于自带的词典进行识别分词,但于词典容量有限,特别是对于分词组件应用场景所涉及的领域不同,需要各类专业词库的支持,以提高中文分词的准确性。

(2)中文分词实现:导入专业术语后,利用中文分词技术将文本数据划分为更小的词汇单元。

(3)词频统计输出:在中文分词完成后,通过普通的数学统计方法即可得到原文本数据中各单词的出现频数,进而输出词频统计结果。

图2基于IKAnalyzerk中文词频统计系统设计架构图

2.2中文分词技术实现

本文主要采用了IKAnalyzer实现文本的分词。IKAnalyzer是一个开源的、基于Java语言开发的轻量级的中文分词工具包,采用了特有的“正向迭代最细粒度切分算法”,支持细粒度和智能分词两种切分模式,同时支持用户词典扩展定义。具体操作由以下几个部分组成:

(1)分词词典扩展。在中文分词前,首要需要进行分词词典库的扩展,将95598的专业术语如“抄表”、“单笔”、“划扣”、“代扣”、“户号”等导入词典库,通过配置字典文件extendwords.txt实现。

(2)切分模式选择。IKAnalyzer支持智能分词和最细粒度两种切分模式,以下是两种切分方式的演示样例:

a)文本原文:“客户咨询网上营业厅为何无法使用手机号码注册”

b)智能分词结果:客户/咨询/网上/营业厅/为何/无法/使用/手机号码/注册/

c)最细粒度分词结果:客户/咨询/网上/营业厅/营业/厅/为何/无法/使用/用手/手机号码/手机号/手机/手/机号码/号码/注册/。

3结束语

中文词频统计能实现从一篇冗余的文章或一堆杂乱无章的文本数据中获得高词频,而高频词往往蕴含着该文章的核心思想以及重点内容,使人们快速获取有用的信息。本文通过分析中文词频统计的关键技术,即中文分词技术,并经过深入分析几种常用的中文分词工具后,最终通过开源的IKAnalyzer完成中文词频统计系统的实现。

参考文献

[1]李晓笛.Web文本挖掘技术研究及应用[D].北京:北京交通大学,2015.

[2]冯智斌.面向中文文挖掘的聚类算法研究[D].广州:华南理工大学,2013

[3]黄翼彪.开源中文分词器的比较研究[D].郑州:郑州大学,2013.

[4]朱世猛.中文分词算法的研究与实现[D].成都:电子科技大学,2011.

[5]孙晓.中文词法分析的研究及其应用[D].大连:大连理工大学,2009.