第一节、Word Segmentation
1、 Tools
- Jieba
- SnowNLP
- LTP
- HanNLP
使用jieba
import jieba
seg_list=jieba.cut("贪心学院专注于人工智能教育",cut_all=False)
print("/".join(seg_list))
jieba.add_word("贪心学院")
seg_list=jieba.cut("贪心学院专注于人工智能教育",cut_all=False)
print("/".join(seg_list))
2、segmentation method 1: Max matching
Forward max-matching
前向最大匹配:
定义一个参数:max_len=5,希望匹配到的单词越长越好
每次取五个,与词典中对比是否存在该词,如果不存在,从右边开始减一,直到匹配到目标单词为止。结束该次计算
将一次取五个的这个框向右移动上一次计算的单词的个数的步数。
backward-max matching
从后到前匹配,90%以上的与forward max-matching匹配到的一样
最大匹配的缺点
- 无法细分,有时候细分的结果是更好的
- 局部最优解,贪心未必最优
- 效率低,max_len越长,时间复杂度越高
- 歧义:无法考虑语义,看到的只是一个单词,不是语意(即上下文)]
3、segmentation method 2:Incorporate Semantic(考虑语义)
build a black box,将分词后的