python中文分词第三方库,用python语言中文分词第三方库jieba
算法
中文分词技术的实现完成了很多算法。现在,算法可以大致分为三类:
基于字符串匹配的分词方法
基于理解的分词方法
基于统计的分词方法。
其中,基于字符串匹配的分词方法是将中文句子与待分析的中文字符串和已知且足够大的中文词典按照一定的策略进行比较,达到分词的效果。一般我们使用最多的分词策略是正向最大匹配法、反向最大匹配法和最小切分法。
基于理解的分词是指计算机能够模拟句子的理解。基于统计的分词方法是在上下文中找出大量的汉字组合,把这些组合当作词汇,代入原文进行分词。
本文采用字符串匹配法和反向最大匹配策略对汉语句子进行简单切分。
算法的思想
反向最大匹配法的总体思路是将整个字符串作为一个“短语”在字典中进行检查。如果不成功,删除第一个字符,继续这个操作直到成功或者只剩下最后一个字符,然后把结果放入一个字符串数组,最后删除原语句中的结果。我举个例子来说明。
今晚的月亮很美
字典:《今夜》《月儿》《美丽》
第一次换人:今晚的月亮很美。那个词不在字典里。删除首字母继续查)。
删除首字母:夜晚的月亮很美。那个词不在字典里。删除首字母继续查)。
删除首字母:月亮太美了。那个词不在字典里。删除首字母继续查)。
删首字母:太亮了。那个词不在字典里。删除首字母继续查)。
删除首字母:啊(字典里没有这个词,只剩下一个词。放到结果数组中,删除文本末尾的最后一个字符,第二次替换)。
第二次换人:今晚的月亮很美。那个词不在字典里。删除首字母继续查)。
删除首字母:“clean”(在字典中找到“clean”这个词,放入结果数组中,删除文末的结果“clean”,第三次替换)。
算法实现
评价
按照逆向最大匹配法的思想,这种策略非常容易实现,具有明显易懂的特点,实现代码也不是很长。然而,反向最大匹配算法可能会降低特殊句子的分割精度。例如,下面的语句:
Wjdwl发明了很多东西。
如果字典够大,按照逆向最大匹配法,你会发现计算机把“明”当成了一个汉字。如果你继续下去,计算机会把单词分成“头发”。这样就会造成“凉凉冷风吹”的错误。
没关系!还有正向最大匹配法。可以用正向最大匹配法对这句话进行切分。结果是正确的。但是正向最大匹配法也会有误差。我该怎么办?您可以组合正向和反向。这是另一种分词策略。双向最大匹配法大大降低了出错的概率。
标签
任何算法都有其优点和缺点。我们在使用算法的时候,不仅要使用算法,还要考虑如何优化算法,使其完全满足自己的需求。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。