自然语言期末复习笔记—Morphological Analysis
开始把这个学期的自然语言知识做一个归纳,记录在这个博客里。
Lexical Morphological Analysis
这个部分是关于词形态分析的内容。作为自然语言处理中首先要接触到的内容。
词形态分析包括两个部分:
1:断词 断词在汉语里面很重要,就是中文分词,我们有一个著名的jieba工具在可以很好地完成任务,我们在本学期也做了中文分词地大作业。大家基本用的都是基于统计的n元语法模型,也有的同学是用分类的思想,把词分为BESM四种类别的思想,具体的模型有SVM,神经网络。在英语里因为词之间都是用空格间隔,所以用断词用的不多。
2:词形还原: 汉语里,几乎没有词形还原,这里主要是针对英语讲的。
比如:
dogs->dog + 复数
women -> woman + 复数变化
我们之所以要做词形还原,是为了降低词的数量规模
接下来我们来谈谈我们怎么实现词形还原的任务。我们可不可以把所有词所有的表示方法都记录下来,然后遇到这个词就返回对应的还原内容,这样可不可以呢? 因为语言里面,词太多了,如果我们这么做不仅会处理时间长,而且存储容量也非常大。这样简单粗暴的方式是不可取的。
我们主要使用两种方法一种是正则表达式,另一种是有限状态自动机。
有限状态自动机的表示形式
正则语言表达形式,大家如果以前编程的时候,多少都接触过,这里就不多说了。
我们在处理英语的时候,首先要对英语的词结构有一些先验知识,以帮助我们做有限状态自动机。我们都知道,英语词很多都是由:前缀+词干+后缀的方式组成,如图
在这里,插一下,我们在做部分内容的时候,无论是正则还是有限状态自动机,我们都要大量地观察各种规则(在这里我们要熟悉词地构成),我们地有限状态自动机就是一种基于规则地方法, 这种方法比较老,在实际业务当中需要大量的人力投入。而现在正比较火的深度学习,他往往可以省去人力的环节,而且效果也比基于规则的方法要好,但是是不是意味着这种方法就过时了呢? 其实不是的,深度学习他需要大量的数据,而在实际应用中,很多业务刚刚启动的时候,他最缺的就是用户数据,这个时候往往都是用基于规则的方法,完成前期的冷启动。所以,这部分的内容仍然是自然语言处理中的重要部分。
回到我们的话题,我们词形还原主要有这两个任务。
词典部分,我们用有限状态自动机来保存
对于词行还原我们在这里使用FST模型(Finite State Transducers)
下图是关于配列规则上的使用
我们可以看到图中每条边上写都有字母,他们分别表示着输入和输出,他们完成的是 Lexical level 和 intermediate level 之间的映射。什么是 intermediate level? 看下图,其实就是词结构的一种细致表示。
以上是FST在配列规则上的使用,接下来我们再来看看 FST在正字法规则上的使用
这个图片表示了生成foxes的个过程。这个图我看了好半天,总觉得表示得不对劲。不知道你看的时候,有没有困惑,就是q2 和q3得转移那部分。我得解释是这样,图中得转移是列出了所有可能转移得方向,具体是转到哪个方向,还是需要在程序中具体设定,这个问题后续再更新
接下来我们来看看 词形态分析的应用。
最小编辑距离,这个是用最小编辑距离,这个在网上一搜会有很多,就不在这里详细展开讨论了。在这里多说一句的是,这种纠错只是在形态的纠错上,不是在语义的纠错。最近,和一位学姐讨论过语音识别文字纠错的功能,在哪种场景里很明显是用不了最小编辑距离这样的纠错方法的,最小编辑距离纠错方法更可能是适用于打字员把某个字母给打错了,这种情况下才可以用最小编辑距离。所以总的来说,这种方法使用范围还是非常有限的。