HMM最大匹配分词算法(Python)
2015-06-29 15:49
736 查看
正向最大匹配算法是我国最早提出的解决中文分词问题的算法,因其简单易操作,至今仍作为机器分词的粗分算法,在今天看来,这种算法的准确率远不够高,无法达到令人满意的要求。这只是一次练习。
待切分文本是:
我和你共同创造美好的新生活
词典:
共同,创造,美好,的,新,生活
预期分词效果:
我 和 你 共同 创造 美好 的 新 生活
分词成果:
我 和 你 共同 创造 美好 的 新 生活
召回率:100%
正确率:100%
文章受到了” Blueliner,fighting!!!“的启发,表示感谢。
Blueliner,fighting!!!的《中文分词算法之最大正向匹配算法(Python版)》
[文章链接]
待切分文本是:
我和你共同创造美好的新生活
词典:
共同,创造,美好,的,新,生活
预期分词效果:
我 和 你 共同 创造 美好 的 新 生活
# Python 3.4.3 lexicon = ('共同','创造','美好','的','新','生活') # 为了方便,词典直接写在程序里。 wordSeg = [] # 新建列表存放切分好的词 maxWordLen = 3 # 最大词长设为3 with open('test.txt','r', encoding='utf-8') as src: sentence = src.read() sentenceLen = len(sentence) wordLen = min(maxWordLen, sentenceLen) startPoint = 0 while startPoint < sentenceLen: # 从第一个字符循环到最后一个字符 matched = False # 假设找不到匹配的词 for i in range(maxWordLen, 0, -1): # 从最大词长3递减到1 string = sentence[startPoint:startPoint+i] # 取startPoint开始到startPoint+i-1的切片 if string in lexicon: wordSeg.append(string) matched = True break if not matched: # 假如在词典中找不到匹配 i = 1 wordSeg.append(sentence[startPoint]) # 全部切分为单字词 startPoint += i with open('WordSeg.txt', 'w', encoding='utf-8') as des: for word in wordSeg: des.write(word+' ')
分词成果:
我 和 你 共同 创造 美好 的 新 生活
召回率:100%
正确率:100%
文章受到了” Blueliner,fighting!!!“的启发,表示感谢。
Blueliner,fighting!!!的《中文分词算法之最大正向匹配算法(Python版)》
[文章链接]
相关文章推荐
- capitalize()在Python中含义
- Python学习笔记 - 函数参数
- Python学习笔记 - 函数参数
- python中的随机数-----random
- 汉字字频统计程序(Python版)
- python学习一
- Python正则表达式指南
- python使用xmlrpc实例讲解
- python opencv 笔记
- Python字典 (dictionary)
- python 中的列表解析和生成器表达式
- python 的一些特性
- test python
- python 2.7 + pip + Django 安装
- 关于Python中如何使用静态、类、抽象方法的权威指南(译)
- 关于Python中如何使用静态、类、抽象方法的权威指南
- 关于Python中如何使用静态、类、抽象方法的权威指南
- python\split\join
- 《Python核心编程》P21输入数值字符串→转整型
- Python中yield的用法