写在前面:常用的分词工具
- 结巴分词 结巴分词入口 https://github.com/fxsjy/jieba
- SnowNLP SnowNLP入口https://github.com/isnowfy/snownlp
- LTP LTP入口http://www.ltp-cloud.com/
- HanNLP HanNLP入口http://github.com/hankcs/Hanlp/
…
分词的最大匹配(Segmentation Method 1:Max Matching)
前向最大匹配(forward-max matching)
- 定义:从前往后匹配字典中的词典,只要在词典中找到对应的词就不在细分。
- max_len:通常都会设置一个max_len的参数,这个参数用来表示匹配时单词的最大长度。
例子:
max_len=5
句子:我们经常有意见分歧
词典:[“我们”,“经常”,“有”,“有意见”,“意见”,“分歧”]
开始匹配:
①【我们经常有】 ×
【我们经常】 ×
【我们经】 ×
【我们】 √
②【经常有意见】 ×
【经常有意】 ×
【经常有】 ×
【经常】 √
③【有意见分歧】 ×
【有意见分】 ×
【有意见】 √
④【分歧】 √
分词成功!!!!
注意:对于max_len的确定,通过观察或统计词典里词的整体分布,再结合需求确定最大长度max_len。
后向最大匹配(backward-max matching)
- 具体思路和前向基本一致,只不过是从后往前开始匹配
- 例子:
句子:我们经常有意见分歧
词典:[“我们”,“经常”,“有”,“有意见”,“意见”,“分歧”]
开始匹配:
①【有意见分歧】 ×
【意见分歧】 ×
【见分歧】 ×
【分歧】 √
②【经常有意见】 ×
【常有意见】 ×
【有意见】 √
③【我们经常】 ×
【们经常】 ×
【经常】 √
④【我们】 √
成功!!!
双向最大匹配(backward-max matching)
- 就是把前向和后向的结果相结合
最大匹配的缺点
- 细分(有可能是更好)
- 局部最优(贪心算法)
- 效率(通常max_len越大,效率越低)
- 歧义(不能考虑语义)
码字不易,希望有帮助!!!!!!!!!!!!!!!!!!