分词方法入门

 

中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块。不同于英文的是,中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词,分词效果将直接影响词性、句法树等模块的效果。当然分词只是一个工具,场景不同,要求也不同。在人机自然语言交互中,成熟的中文分词算法能够达到更好的自然语言处理效果,帮助计算机理解复杂的中文语言。

在构建中文自然语言对话系统时,结合语言学不断优化,训练出了一套具有较好分词效果的算法模型,为机器更好地理解中文自然语言奠定了基础。在此,对于中文分词方案、当前分词器存在的问题,以及中文分词需要考虑的因素及相关资源,

中文分词:

现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法

基于字符串匹配的分词方法:这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)

1)正向最大匹配法(由左到右的方向)

2)逆向最大匹配法(由右到左的方向):

3)最少切分(使每一句中切出的词数最小)

4)双向最大匹配法(进行由左到右、由右到左两次扫描)

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

基于统计的分词方法:给出大量已经分词的文本,利用统计机器学习模型学习词语切分的规律(称为训练),从而实现对未知文本的切分。例如最大概率分词方法和最大熵分词方法等。随着大规模语料库的建立,统计机器学习方法的研究和发展,基于统计的中文分词方法渐渐成为了主流方法。

主要统计模型:N元文法模型(N-gram),隐马尔可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),条件随机场模型(Conditional Random Fields,CRF)等。

 

  • 基于字典、词库匹配分词算法

       该算法是按照一定的策略将待分析的汉字串与一个已建立好的“充分大的”词库/字典进行匹配,若找到某个词条,则说明匹配成功,识别了该词。常见的基于词典的分词算法有:正向最大匹配法逆向最大匹配法双向匹配分词法等。

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

  • 基于机器学习算法

       目前常用的是算法是HMM、CRF、SVM、深度学习等算法,比如stanford、Hanlp分词工具是基于CRF算法。以CRF为例,基本思路是对汉字进行标注训练,不仅考虑了词语出现的频率,还考虑上下文,具备较好的学习能力,因此其对歧义词未登录词的识别都具有良好的效果。Nianwen Xue在其论文《Combining Classifiers for Chinese Word Segmentation》中首次提出对每个字符进行标注,通过机器学习算法训练分类器进行分词,在论文《Chinese word segmentation as character tagging》中较为详细地阐述了基于字标注的分词法。常见的分词器都是使用机器学习算法和词典相结合,一方面能够提高分词准确率,另一方面,可以自定词典,方便加入domain specific的词语改善领域适应性。

 

  • 基于知识理解:

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

目前常用的分词工具

中科院计算所的NLPIR系统:ictclas.nlpir.org/nlpir/

哈工大的LTP:https://github.com/HIT-SCIR/ltp

哈工大社会计算与信息检索研究中心开发,有调用接口,每秒请求的次数有限制

清华大学的THULAC:https://github.com/thunlp/THULAC

目前已经有Java、Python和C++版本,并且代码开源

斯坦福:https://nlp.stanford.edu/software/segmenter.shtml

Java实现的CRF算法。可以直接使用训练好的模型,也提供训练模型接口。

Hanlp: https://github.com/hankcs/HanLP

求解的是最短路径。优点:开源、有人维护、可以解答。原始模型用的训练语料是人民日报的语料,当然如果你有足够的语料也可以自己训练

Jieba:https://github.com/yanyiwu/cppjieba

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

KCWS分词器(字嵌入+Bi-LSTM+CRF): https://github.com/koth/kcws

本质上是序列标注,这个分词器用人民日报的80万语料,据说按照字符正确率评估标准能达到97.5%的准确率

MMSEG https://technology.chtsai.org/mmseg/

www.coreseek.cn/opensource/ 每次从一个完整的句子里,按照从左向右的顺序,识别出多种不同的3个词组合,然后根据消歧义规则,确定最佳备选词组合; 选择备选词组合中的第一个词,作为1次迭代的分词结果;剩余的2个词继续进行下一轮的分词运算,采用这种办法的好处是,为传统的前向匹配算法加入上下文信息,解决每次选词只考虑词本身,而忽视上下文相关词的问题,消歧规则:

 

  1. 备选词组合的长度之和最大
  2. 备选词组合的平均词长最大
  3. 备选词组合的词长变化最小
  4. 备选词组合中,单字词的出现频率统计值最高

 

公开的汉语分词评测数据集

1、国际汉语分词评测(SIGHAN Bakeoff )

    SIGHAN Bakeoff 2005 MSR,560KB  http://sighan.cs.uchicago.edu/bakeoff2005/

    SIGHAN Bakeoff 2005 PKU, 510KB  http://sighan.cs.uchicago.edu/bakeoff2005/

2、人民日报 2014, 65MB  https://pan.baidu.com/s/1hq3KKXe

3.  汉语处理联合国际会议(CLP2010)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值