前向分词最大匹配算法
【摘要】 分词是自然语言处理的一个基本工作,中文分词和英文不同,字词之间没有空格,可以将中文分词方法简单归纳为:基于词表的分词方法基于统计的分词方法基于序列标记的分词方法其中,基于词表的分词方法最为简单,根据起始匹配位置不同可以分为:前向最大匹配算法后向最大匹配算法双向最大匹配算法三种方法思想都很简单,今天我们用python实现前向最大匹配算法。前向最大匹配算法,顾名思义,就是从待分词句子的左边向右边...
分词是自然语言处理的一个基本工作,中文分词和英文不同,字词之间没有空格,可以将中文分词方法简单归纳为:
基于词表的分词方法
基于统计的分词方法
基于序列标记的分词方法
其中,基于词表的分词方法最为简单,根据起始匹配位置不同可以分为:
前向最大匹配算法
后向最大匹配算法
双向最大匹配算法
三种方法思想都很简单,今天我们用python实现前向最大匹配算法。
前向最大匹配算法,顾名思义,就是从待分词句子的左边向右边搜索,寻找词的最大匹配。我们需要规定一个词的最大长度,每次扫描的时候寻找当前开始的这个长度的词来和字典中的词匹配,如果没有找到,就缩短长度继续寻找,直到找到字典中的词或者成为单字。
下面是我的代码。
word_dict = [ ] test_str = (text): text: (text) == : text text word_dict: text : small = (text) - text = text[:small] getSeg(text) (): test_strword_dict test_str = test_str.strip() max_len = ((word) word word_dict) result_str = [] result_len = (test_str) test_str: tmp_str = test_str[:max_len] seg_str = getSeg(tmp_str) seg_len = (seg_str) result_len = result_len + seg_len seg_str.strip(): result_str.append(seg_str) test_str = test_str[seg_len:] (result_str) __name__ == : main()
看一下分词的结果吧!
本文来自:机器在学习
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)