自然语言处理5——词法分析
词:是语言信息处理的基本单位。
词法分析步骤:
- 词的识别:将句子序列转换为词序列
- 形态分析:词的构成、形态变化、词形还原
- 词性标注:标记句子中词的词性
英文的词法分析
英文的特点:曲折型语言,词与词之间有边界标记,词的形态变化丰富
- 屈折变化:由于语法作用而造成的单词形态变化,但单词的词性基本不变
- 派生变化:一个单词/词干衍生处若干不同类的单词
词的识别:特殊的如:数字、缩略、含非字母符号、含" "/‘/-等词串、网址、公式等
- 识别方法:词典+规则可识别;数字可以用有限状态自动机识别正则表达式
形态分析:词形还原:将英文的屈折变化和派生变化还原。
- 方法:词典;不规则词形变化表;词形变化集;作为未登录词处理
词形还原与词干还原的区别:
词形还原:是去掉单词前后缀等词缀,提取单词的主干部分,提取出的还是单词。
词干还原:抽取词的词干或词根,结果可能只是词的一部分。
还原的程度有:词干层(如:impossibilitiesà impossibility+ies);词根层(如:impossibilities à im+poss+ibil+it+ies),分析程度取决于系统的深度。
中文的词法分析
中文的特点:分析性语言;词语之间没有边界;词缺少形态变化
分析步骤:分词->未登录词识别->词性标注
分词困难:
- 交叉(集)型歧义:即字串abc,既可以切分成ab/c,又可以分成a/bc
- 链长:交叉歧义字段中含有交集字段的个数
- 组合型歧义(覆盖型歧义):若ab为词,而a和b在句子中又可以单独成词
分词方法:
-
规则分词
-
最大匹配法:使用词典及规则的机械的切分方法
- 正向最大匹配算法(FMM):自左向右,每次取最长词。即:字串S,字典最长词有i个,将S的前i个字作为字段Q进行匹配,找不到则去掉Q的最后一个,直到找到,直到剩余字串长度为0,说明匹配完成。
- 逆向最大匹配算法(BMM):自右向左,每次取最长词。即:每次取末端的i个。分词词典:逆序词典
- 双向最大匹配算法(Bi-directional MM):依次采用正向和逆向的,如果结果一致则输出,不一致要排除歧义。如:搜索引擎用双向的,但是两边的结果都要。
优点:简单、快速、某些场合足够使用
缺点:单向最大匹配会忽略交叉型歧义和组合型歧义;双向会忽略链长为偶数的交叉型歧义和组合型歧义
-
最少分词法:分词的词数最少是分词的最优结果<——>有向图中搜索最短路
方法:动态规划(Viterbi算法)
优点:好于单向的最大匹配,处理未登录词的表现好
缺点:忽略了所有组合歧义,对交叉歧义的效果也不好
-
-
统计分词
-
基于n-gram模型:根据词典给出句子所有可能的切分结果,将句子整理为前缀的数组组合->构建词图(词网路)->利用n-gram模型计算找到最优路径
优点:训练语料规模足够大、覆盖领域足够多时,正确率高
缺点:性能依赖于训练语料规模及质量;计算量大
-
基于HMM:观察序列:字串,状态序列:词序列
-
全切分方法:根据词典给出句子所有可能的分词结果,如搜索引擎
-
分词系统的评价指标:
- 精确率: P = 切 分 正 确 的 词 数 总 的 切 分 词 数 P = \frac{切分正确的词数}{总的切分词数} P=总的切分词数切分正确的词数
- 召回率: R = 切 分 正 确 的 词 数 正 确 的 总 词 数 R = \frac{切分正确的词数}{正确的总词数} R=正确的总词数切分正确的词数
- F 1 = 2 P R P + R F_1 = \frac{2PR}{P+R} F1=P+R2PR,得出的结果偏向于P和R中小的那个值
工具:jieba,原理:统计和规则结合,用HMM进行未登录词的识别
中文未登录词识别
未登录词:词典中没有的词,如:命名实体、数字、日期、专业术语、新词、缩略词、商标字号等
未登录词识别的意义:使得分词结果准确;且未登录词包含的信息一般更多
困难:未登录词没有明确边界;构成未登录词的单元本身均可单独成词
方法:
-
基于规则的方法:依据未登录词内部构成规律、外部环境(上下文)、重复出现规律
如:设姓名为 X m 1 m 2 Xm_1m_2 Xm1m2,识别方法:1.姓名库匹配;2.计算潜在姓名的概率
求 F ( X ) = X 用 作 姓 X 出 现 总 次 数 F(X) = \frac{X用作姓}{X出现总次数} F(X)=X出现总次数X用作姓; F ( m 1 ) = m 1 作 为 名 字 首 字 出 现 次 数 m 1 总 出 现 次 数 F(m_1) = \frac{m_1作为名字首字出现次数}{m_1总出现次数} F(m1)=m1总出现次数m1作为名字首字出现次数,同理求出 F ( m 2 ) F(m_2) F(m2)
P ( n a m e ) = F ( X ) F ( m 1 ) F ( m 2 ) P(name) = F(X)F(m_1)F(m_2) P(name)=F(X)F(m1)F(m2),若P高于所设定的阈值,那么name即为人名。
人名识别的困难:一些高频姓名用字在非姓名中也是高频字;名字中间一部分是一个已经被收录的词;人名与其上下文组合成词;人名地名冲突
识别效果:人名>地名>机构名
机构名识别方法:根据相应规则往期逐个检查名词作为修饰名词的合法性,直到发现非法词;若修饰词及机构称呼词构成合法机构名词,则记录
-
统计方法:将识别问题转化为标注问题
方法:HMM、最大熵、条件随机场
O | B | I | E |
---|---|---|---|
不属于未登录词 | 未登录词首字 | 未登录词中间字 | 未登录词尾字 |
往期文章:
自然语言处理1——NLP概述
自然语言处理2——语言学基础
自然语言处理3——语言学资源
自然语言处理4——统计语言模型