天然语言处理工具中的中文分词器介绍

 

中文分词是中文文本处理的一个基础步骤,也是中文人机天然语言交互的基础模块,不一样于英文的是,中文句子中没有词的界限,所以在进行中文天然语言处理时,一般须要先进行分词,分词效果将直接影响词性,句法树等模块的效果,固然分词只是一个工具,场景不一样,要求也不一样。在人机天然语言交互中,成熟的中文分词算法可以达到更好的天然语言处理效果,帮助计算机理解复杂的中文语言。算法

基于词典分词算法网络

基于词典分词算法,也称为字符串匹配分词算法。该算法是按照必定的策略将待匹配的字符串和一个已经创建好的"充分大的"词典中的词进行匹配,若找到某个词条,则说明匹配成功,识别了该词。常见的基于词典的分词算法为一下几种:正向最大匹配算法,逆向最大匹配法,最少切分法和双向匹配分词法等。框架

基于词典的分词算法是应用最普遍,分词速度最快的,很长一段时间内研究者在对对基于字符串匹配方法进行优化,好比最大长度设定,字符串存储和查找方法以及对于词表的组织结构,好比采用TRIE索引树,哈希索引等。机器学习

这类算法的优势:速度快,都是O(n)的时间复杂度,实现简单,效果尚可,工具

算法的缺点:对歧义和未登陆的词处理很差。性能

基于理解的分词方法学习

这种分词方法是经过让计算机模拟人对句子的理解,达到识别词的效果,其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象,它一般包含三个部分:分词系统,句法语义子系统,总控部分,在总控部分的协调下,分词系统能够得到有关词,句子等的句法和语义信息来对分词歧义进行判断,它模拟来人对句子的理解过程,这种分词方法须要大量的语言知识和信息,因为汉语言知识的笼统、复杂性,难以将各类语言信息组成及其能够直接读取的形式,所以目前基于理解的分词系统还在试验阶段。优化

基于统计的机器学习算法搜索引擎

这类目前经常使用的算法是HMM,CRF,SVM,深度学习等算法,好比stanford,Hanlp分词工具是基于CRF算法。以CRF为例,基本思路是对汉字进行标注训练,不只考虑了词语出现的频率,还考虑上下文,具有良好的学习能力,所以对歧义词和未登陆词的识别都具备良好的效果。spa

Nianwen Xue在其论文中《Combining Classifier for Chinese Word Segmentation》中首次提出对每一个字符进行标注,经过机器学习算法训练分类器进行分词,在论文《Chinese word segmentation as character tagging》中较为详细地阐述了基于字标注的分词法。

算法优势:能很好处理歧义和未登陆词问题,效果比前一类效果好

算法缺点: 须要大量的人工标注数据,以及较慢的分词速度

现行常见的中文词分类器

常见的分词器都是使用机器学习算法和词典相结合的算法,一方面可以提升分词准确率,另外一方面可以改善领域适应性。

随着深度学习的兴起,也出现了基于神经网络的分词器,例若有研究人员尝试使用双向LSTM+CRF实现分词器,其本质上是序列标注,因此有通用性,命名实体识别等均可以使用该模型,据报道其分词器字符准确率能够高达97.5%,算法框架的思路与论文《Neural Architectures for Named Entity Recogintion》相似,利用该框架能够实现中文分词,以下图所示

首先对语料进行字符嵌入,将获得的特征输入给双向的LSTM,而后加一个CRF就获得标注结果。

分词器当前存在问题

目前中文分词难点主要有三个:

1. 分词标准:好比人名,在哈工大的标准中姓和名是分开的,可是在Hanlp中是合在一块儿的,这须要根据不一样的需求制定不一样的分词标准。

2. 歧义:对于同一个待切分字符串存在多个分词结果。

歧义又分为组合歧义,交集型歧义和真歧义三种分类。

1)组合型歧义:分词是有不一样的粒度的,指某个词条中的一部分也能够切分未一个独立的词条,好比“中华人民共和国”,粗粒度的分词就是“中华人民共和国”,细粒度的分词多是“中华/人民/共和国”

2)交集型歧义:在“郑州天和服装厂”中,“天和”是厂名,是一个专有名词,“和服”也是一个词,它们共用了“和”字

3)真歧义:自己的语法和语义都没有问题,即使采用人工切分也会产生一样的歧义,只有经过上下文的语义环境才能给出正确的切分结果,例如:对于句子“美国会经过对台售武法案”,既能够切分红“美国/会/经过...”也能够切分红“美/国会/经过...”

通常在搜索引擎中,构建索引时和查询时会使用不一样的分词算法,经常使用的方案是,在索引的时候,使用细粒度的分词以保证召回,在查询的时候使用粗粒度的分词以保证精度。

3. 新词:也称未被词典收录的词,该问题的解决依赖于人们对分词技术和汉语语言结构进一步认识。

部分分词器的简单说明:

 

哈工大的分词器:主页上给过调用接口,每秒请求的次数有限制。

清华大学THULAC:目前已经有Java、Python和C++版本,而且代码开源。

斯坦福分词器:做为众多斯坦福天然语言处理中的一个包,目前最新版本3.7.0, Java实现的CRF算法。能够直接使用训练好的模型,也提供训练模型接口。

Hanlp分词:求解的是最短路径。优势:开源、有人维护、能够解答。原始模型用的训练语料是人民日报的语料,固然若是你有足够的语料也能够本身训练。

结巴分词工具:基于前缀词典实现高效的词图扫描,生成句子中汉字全部可能成词状况所构成的有向无环图 (DAG);采用了动态规划查找最大几率路径, 找出基于词频的最大切分组合;对于未登陆词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法。

字嵌入+Bi-LSTM+CRF分词器:本质上是序列标注,这个分词器用人民日报的80万语料,听说按照字符正确率评估标准能达到97.5%的准确率,各位感兴趣能够去看看。

ZPar分词器:新加坡科技设计大学开发的中文分词器,包括分词、词性标注和Parser,支持多语言,听说效果是公开的分词器中最好的,C++语言编写。

关于速度

因为分词是基础组件,其性能也是关键的考量因素。一般,分词速度跟系统的软硬件环境有相关外,还与词典的结构设计和算法复杂度相关。好比咱们以前跑过字嵌入+Bi-LSTM+CRF分词器,其速度相对较慢。

 

做者:lovive

相关文章
相关标签/搜索