重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关用python实现前向分词大匹配算法的案例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
术业有专攻,您咨询的再多,也不如我了解的一半多;有责任心的专业网站设计公司会做到“客户想到的我们要做到,客户没有想到的我们也要帮客户做到“。我们的设计师是5年以上的设计师,我们不仅仅会设计网站,更会策划网站。理论介绍
分词是自然语言处理的一个基本工作,中文分词和英文不同,字词之间没有空格。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法。
可以将中文分词方法简单归纳为:
1.基于词表的分词方法
2.基于统计的分词方法
3.基于序列标记的分词方法
其中,基于词表的分词方法最为简单,根据起始匹配位置不同可以分为:
1.前向大匹配算法
2.后向大匹配算法
3.双向大匹配算法
三种方法思想都很简单,今天就用python实现前向大匹配算法。
word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过自定义配置文件来改变组件行为,能自定义用户词库、自动检测词库变化、支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结果,还能使用词性标注、同义标注、反义标注、拼音标注等功能。同时还无缝和Lucene、Solr、ElasticSearch、Luke集成。
前向大匹配算法
前向大匹配算法,顾名思义,就是从待分词句子的左边向右边搜索,寻找词的大匹配。我们需要规定一个词的大长度,每次扫描的时候寻找当前开始的这个长度的词来和字典中的词匹配,如果没有找到,就缩短长度继续寻找,直到找到字典中的词或者成为单字。
具体代码实现
获取分词函数:getSeg(text)
:
def getSeg(text): # 句子为空 if not text: return '' # 句子成为一个词 if len(text) == 1: return text # 此处写了一个递归方法 if text in word_dict: return text else: small = len(text) - 1 text = text[0:small] return getSeg(text)