文章目录
课程网址:课程链接
一、分词方法
分词的难点:对歧义词的识别
1.1 规则分词
基于词库里的一个个词进行切词,缺点是不能处理新词
经典算法:正向最大匹配,逆向最大匹配,双向最大匹配
1.1.1 正向最大匹配
1.统计词典内最长的词有多少字?记为最长词长m
2.对一个句子从左往右数,正向地先切前五个字出来,来跟字典进行比对,看这五个字是否出现在字典里
比如说对“南京市长江大桥”进行正向匹配,m=5,先切出‘南京市长江’这五个字出来,发现这五个字并没有出现在字典中
3.如果没有,减少1个字,正向地切4个字出来,跟字典进行比对。‘南京市长’
4.以此类推,逐渐缩小切词地字数,例如,切到‘南京市’时,跟字典比对成功,‘南京市’就确定切词出来。
1.1.2 逆向最大匹配
逆向最大匹配就是从右往左数,步骤跟正向类似。
‘南京市长江大桥’ → ‘市长江大桥’ → ‘长江大桥’
具体程序参考,网易云课堂:课程链接
1.1.3 双向最大匹配
结合正向和逆向,如果正逆向分词结果不同,选取次数切分最少的作为结果
如果分词结果词数相同:
- 分词结果相同,返回任意一个
- 分词结果不同,返回单字较少的那个
1.1.4 错误率比较
正向最大匹配错误率大约在1/169
逆向最大匹配错误率大约在1/245
双向最大匹配错误率大约在1/100
实际生产应用过程中要通过对测试集的实验,才能下结论,也许双向的可能结果最好。
1.2 统计分词
优点是能够发现新的词,缺点是依赖语料库的质量
1.2.1 主要思路
词是由每个字组合而成的,字是词的最小单位,把每个词看作是由词的最小单位的各个字组成,如果相连的字,比如说“南”和“京”组成“南京”这个组合在不同的文本中(也就是语料库中)出现的次数越多,就证明这相连的字很可能是一个词。因此我们就可以利用字与字相邻出现的频率反映成词的可靠度,使用大规模语料库,建立统计语言模型。统计预料中相邻共现的各个“字的组合”的频率,当组合频率高于某个阈值时,就认为该组合是一个词。
对句子进行单词划分,然后对划分结果进行概率计算,获得概率最大的分词方式。(HMM隐马尔科夫,CRF条件随机场)
举例:
“南京/市长/江/大桥”,“南京市长/江/大桥”,“南京市/长江/大桥”,有这几种分词方式,就要计算,哪种概率最大就取哪种。
1.2.2 语言模型
P(w1)是南字出现的概率,P(w2|w1)是南京这两个字合在一起的概率,P(w3|w2,w1)是南京市这三个字在一起出现的概率
缺点:
数据过于稀疏,参数过多,计算量大
因此N-gram模型出现,计算量减少,并且保留一定的上下文信息。
1.2.3 隐马尔可夫HMM模型思路
1.3 混合分词(规则+统计)
两者结合