NLP学习-分词

倾然丶 夕夏残阳落幕 提交于 2020-03-09 16:54:03

首先说一下文本分析流程:

本文将介绍中文与英文分词的不同、常见的中文分词手段等

首先说一下中文与英文文本的特点,通过这些特点你应该能直观的发现他们直接分词的不同了

中文:

  1. 中文没有单词的分割符号,因此需要复杂的分词模型进行分析。(这也是我们重点要讲的)
  2. 中文的编码不是utf8,而是unicode。这样会导致在分词的时候,和英文相比,我们要处理编码的问题。
  3. 中文纠错的处理比英文更难。

英文:

  1. 不需要分词,词之间有分隔符,可以以分隔符分割。
  2. 不需要编码转换,英文大部分英文文本都是uft-8的编码。
  3. 需要处理拼写问题,英文纠错
  4. 词干提取和词形还原,英文有单数,复数和各种时态,导致一个词会有不同的形式。如果进行转换,不仅可以减少词库的大小,提高计算的速度;还可以提高语义的理解。
     

下面就来讲讲常见的分词方法,现在的分词方法大概可以分为三个类别:基于字符串匹配的分词方法、基于统计的分词方法和基于理解的分词方法。

基于字符串匹配的分词方法

基于字符串匹配的方法我们又可以称之为机械分词方法,它是按照一定的扫描方式将待分词的句子中的词条与语料库中的词进行匹配,然后返回相应的结果。这种匹配的算法按照扫描的方式又可以分成

  1. 正向最大匹配法(由左到右的方向,也叫前向最大匹配法):首先需要给定一个最大的词条长度,假设定义最大词条长度(滑动窗口的长度)为3,我们首先取出句子的前3个字符,看前3个字符是否存在于词库中,如果存在,则返回第一个分词,滑动窗口向后滑动3个位置;如果不存在,我们把滑动窗口从右向左缩小1,判断前两个字符是否存在于词库,如果存在,则返回这个分词,滑动窗口向后滑动2,不存在则继续缩小滑动窗口......直至将整个句子遍历完,就得到了最后的分词结果。
  2. 逆向最大匹配法(由右到左的方向,也叫后向最大匹配法):和正向最大匹配算法刚好相反,滑动窗口从后往前滑。
  3. 最少切分(使每一句中切出的词数最小):使每一句中切出的词数最小。(动态规划,或者穷举都可以实现)
  4. 双向最大匹配法(进行由左到右、由右到左两次扫描):双向最大匹配就是同时进行前行和后向最大匹配,然后分析两种的结果。如果两种结果一致,则认为不存在歧义现象;如果不一致,则需要定位到歧义字段处理。优点是提高了分词的准确率,消除了部分歧义现象。缺点是算法执行要做双向扫描,时间复杂度会有所增加。

现在以一个例子来具体解释上述的分词方法

语料库(词库):[我们,经常,有,有意见,意见,分歧]

待分词的句子:我们经常有意见分歧

前向最大匹配法(窗口为5):

第一阶段:我们经常有|意见分歧 (无法匹配词典)
第1步:我们经常有->我们经常   (无法匹配词典)
第2步:我们经常->我们经      (无法匹配词典)
第3步:我们经->我们          (匹配到:我们)
第二阶段:经常有意见|分歧    (无法匹配词典)
第1步:经常有意见->经常有意   (无法匹配词典)
第2步:经常有意->经常有      (无法匹配词典)
第3步:经常有->经常         (匹配到:经常)
第三阶段:有意见分歧         (无法匹配词典)
第1步:有意见分歧->有意见分  (无法匹配词典)
第2步:有意见分->有意见     (匹配到:有意见)
第四阶段:分歧             (匹配到:分歧)
完成:我们|经常|有意见|分歧

后向最大匹配法(窗口为5):

第一阶段:我们经常|有意见分歧 (无法匹配词典)
第1步:有意见分歧->意见分歧   (无法匹配词典)
第2步:意见分歧->见分歧      (无法匹配词典)
第3步:见分歧->分歧          (匹配到:分歧)
第二阶段:我们|经常有意见    (无法匹配词典)
第1步:经常有意见->常有意见   (无法匹配词典)
第2步:常有意见->有意见      (匹配到:有意见)
第三阶段:我们经常           (无法匹配词典)
第1步:我们经常->们经常      (无法匹配词典)
第2步:们经常->经常         (匹配到:经常)
第四阶段:我们              (匹配到:我们)
完成:我们|经常|有意见|分歧

最少切分

我们|经常|有|意见|分歧
我们|经常|有意见|分歧
只有以上两种切分,选择词最少的,即:我们|经常|有意见|分歧

双向最大匹配法

第一阶段(前向):我们经常有|意见分歧 (无法匹配词典)
第1步:我们经常有->我们经常          (无法匹配词典)
第2步:我们经常->我们经             (无法匹配词典)
第3步:我们经->我们                (匹配到:我们)
第二阶段(后向):经常|有意见分歧    (无法匹配词典)
第1步:有意见分歧->意见分歧          (无法匹配词典)
第2步:意见分歧->见分歧             (无法匹配词典)
第3步:见分歧->分歧                (匹配到:分歧)
第三阶段(前向):经常有意见         (无法匹配词典)
第1步:经常有意见->常有意见         (无法匹配词典)
第2步:常有意见->有意见            (匹配到:有意见)
第四阶段(后向):经常              (匹配到:经常)
完成:我们|经常|有意见|分歧

基于统计的分词方法

基于统计的分词方法是在给定大量已经分词的文本的前提下,利用统计机器学习模型学习词语切分的规律(称为训练),从而实现对未知文本的切分。例如最大概率分词方法和最大熵分词方法等。基于统计的分词方法从一定程度上可以考虑到语义问题,得到最好的分词结果,主要的统计模型有:N元文法模型(N-gram),隐马尔可夫模型(HMM),最大熵模型(ME),条件随机场模型(CRF)等。这样的方法一般分为两个步骤:1.找出句子的所有分词结果;2.在所有的分词结果中找到最好的那一个。

关于这几类统计模型我将会写在其他博客中,在此处仅附上链接:

N元文法模型(N-gram):https://blog.csdn.net/RHJlife/article/details/104750155

隐马尔可夫模型(HMM):

最大熵模型(ME):

条件随机场模型(CRF):

基于理解的分词方法

分词中歧义消除的过程是一个理解的过程,这不仅需要词法信息,还需要句法和语义信息。所以目前也有些研究者尝试模拟人的理解过程,在分词过程中加入句法和语义分析来处理歧义问题。由于汉语语言知识的复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!