python实现中文分词FMM算法实例(精选9篇)由网友“Peony”投稿提供,这里给大家推荐分享一些python实现中文分词FMM算法实例,供大家参考。
篇1:python实现中文分词FMM算法实例
作者:Sephiroth 字体:[增加 减小] 类型:
这篇文章主要介绍了python实现中文分词FMM算法,实例分析了Python基于FMM算法进行中文分词的实现方法,涉及Python针对文件、字符串及正则匹配操作的相关技巧,需要的朋友可以参考下
本文实例讲述了python实现中文分词FMM算法,分享给大家供大家参考。具体分析如下:
FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n-1个...然后继续下去。假如n个词在词典中出现,那么从n+1位置继续找下去,直到句子结束。
import re def PreProcess(sentence,edcode=“utf-8”): sentence = sentence.decode(edcode) sentence=re.sub(u“[。,,!……!\”‘::?\?、\|“”‘‘;]“,” “,sentence) return sentence def FMM(sentence,diction,result = [],maxwordLength = 4,edcode=”utf-8“): i = 0 sentence = PreProcess(sentence,edcode) length = len(sentence) while i < length: # find the ascii wordtempi=itok=sentence[i:i+1]while re.search(”[0-9A-Za-z\-\+#@_\.]{1}“,tok)None: i= i+1 tok=sentence[i:i+1]if i-tempi>0: result.append(sentence[tempi:i].lower.encode(edcode)) # find chinese wordleft = len(sentence[i:])if left == 1: ”“”go to 4 step over the FMM“”“ ”“”should we add the last one? Yes, if not blank“”“ if sentence[i:] ” “: result.append(sentence[i:].encode(edcode)) return resultm = min(left,maxwordLength)for j in xrange(m,0,-1): leftword = sentence[i:j+i].encode(edcode)# print leftword.decode(edcode) if LookUp(leftword,diction): # find the left word in dictionary # it‘s the right one i = j+i result.append(leftword) break elif j == 1: ”“”only one word, add into result, if not blank“”“ if leftword.decode(edcode) ” “:result.append(leftword) i = i+1 else: continue return result def LookUp(word,dictionary): if dictionary.has_key(word):return True return False def ConvertGBKtoUTF(sentence): return sentence.decode(‘gbk‘).encode(‘utf-8‘)dictions = {} dictions[”ab“] = 1 dictions[”cd“] = 2 dictions[”abc“] = 1 dictions[”ss“] = 1 dictions[ConvertGBKtoUTF(”好的“)] = 1 dictions[ConvertGBKtoUTF(”真的“)] = 1 sentence = ”asdfa好的是这样吗vasdiw呀真的daf dasfiw asid是吗?“ s = FMM(ConvertGBKtoUTF(sentence),dictions) for i in s: print i.decode(”utf-8“)test = open(”test.txt“,”r“) for line in test: s = FMM(CovertGBKtoUTF(line),dictions) for i in s:print i.decode(”utf-8")
运行结果如下:
asdfa
好的
是
这
样
吗
vasdiw
呀
真的
daf
dasfiw
asid
是
吗
?
希望本文所述对大家的Python程序设计有所帮助,
篇2:python实现simhash算法实例
最近更 新
解决python写的windows服务不能启动的问题
python实现simhash算法实例
python解析json实例方法
rhythmbox中文名乱码问题解决方法
Python 元类使用说明
2款Python内存检测工具介绍和使用方法
Python3.x和Python2.x的区别介绍
python实现异步回调机制代码分享
python正则表达式判断字符串是否是全部小
python二叉树的实现实例
热 点 排 行
Python入门教程 超详细1小时学会
python 中文乱码问题深入分析
比较详细Python正则表达式操作指
Python字符串的encode与decode研
Python open读写文件实现脚本
Python enumerate遍历数组示例应
Python 深入理解yield
Python+Django在windows下的开发
python 文件和路径操作函数小结
python 字符串split的用法分享
篇3:python实现数独算法实例
作者:不吃皮蛋 字体:[增加 减小] 类型:
这篇文章主要介绍了python实现数独算法,实例分析了Python数独算法的实现技巧,需要的朋友可以参考下
本文实例讲述了python实现数独算法的方法,分享给大家供大家参考。具体如下:
# -*- coding: utf-8 -*-‘‘‘Created on -10-5@author: Administrator‘‘‘from collections import defaultdictimport itertoolsa = [ [ 0, 7, 0, 0, 0, 0, 0, 0, 0], #0 [ 5, 0, 3, 0, 0, 6, 0, 0, 0], #1 [ 0, 6, 2, 0, 8, 0, 7, 0, 0], #2 # [ 0, 0, 0, 3, 0, 2, 0, 5, 0], #3 [ 0, 0, 4, 0, 1, 0, 3, 0, 0], #4 [ 0, 2, 0, 9, 0, 5, 0, 0, 0], #5 # [ 0, 0, 1, 0, 3, 0, 5, 9, 0], #6 [ 0, 0, 0, 4, 0, 0, 6, 0, 3], #7 [ 0, 0, 0, 0, 0, 0, 0, 2, 0], #8# 0, 1, 2, 3,|4, 5, 6,|7, 8 ]#a = [# [0, 0, 0, 0, 0, 0, 0, 0, 0], #0# [0, 0, 0, 0, 0, 0, 0, 0, 0], #1# [0, 0, 0, 0, 0, 0, 0, 0, 0], #2# ## [0, 0, 0, 0, 0, 0, 0, 0, 0], #3# [0, 0, 0, 0, 0, 0, 0, 0, 0], #4# [0, 0, 0, 0, 0, 0, 0, 0, 0], #5# ## [0, 0, 0, 0, 0, 0, 0, 0, 0], #6# [0, 0, 0, 0, 0, 0, 0, 0, 0], #7# [0, 0, 0, 0, 0, 0, 0, 0, 0], #8## 0, 1, 2, 3,|4, 5, 6,|7, 8# ]exists_d = dict((((h_idx, y_idx), v) for h_idx, y in enumerate(a) for y_idx , v in enumerate(y) if v))h_exist = defaultdict(dict)v_exist = defaultdict(dict)for k, v in exists_d.items: h_exist[k[ 0]][k[ 1]] = v v_exist[k[ 1]][k[ 0]] = vaa = list(itertools.permutations(range(1, 10), 9))h_d = {}for hk, hv in h_exist.items(): x = filter(lambda x:all((x[k] == v for k, v in hv.items())), aa) x = filter(lambda x:all((x[vk] != v for vk , vv in v_exist.items() for k, v in vv.items() if k != hk)), x)# print x h_d[hk] = xdef test(x, y): return all([y[i] not in [x_[i] for x_ in x] for i in range(len(y)) ])def test2(x): return len(set(x)) != 9s = set(range(9))sudokus = []for l0 in h_d[0 ]: for l1 in h_d[ 1]: if not test((l0,), l1): continue for l2 in h_d[ 2]: if not test((l0, l1), l2): continue # 1,2,3行 进行验证 if test2([l0[ 0], l0[ 1], l0[ 2], l1[ 0], l1[ 1], l1[ 2], l2[ 0], l2[ 1], l2[ 2]]) : continueif test2([l0[ 3], l0[ 4], l0[ 5], l1[ 3], l1[ 4], l1[ 5], l2[ 3], l2[ 4], l2[ 5]]) : continueif test2([l0[ 6], l0[ 7], l0[ 8], l1[ 6], l1[ 7], l1[ 8], l2[ 6], l2[ 7], l2[ 8]]) : continuefor l3 in h_d[ 3]: if not test((l0, l1, l2), l3): continue for l4 in h_d[ 4]: if not test((l0, l1, l2, l3), l4):continue for l5 in h_d[ 5]:if not test((l0, l1, l2, l3, l4), l5): continue# 4,5,6行 进行验证if test2([l3[ 0], l3[ 1], l3[ 2] , l4[ 0], l4[ 1], l4[ 2] , l5[ 0], l5[ 1], l5[ 2] ]) : continue if test2([l3[ 3], l3[ 4], l3[ 5] , l4[ 3], l4[ 4], l4[ 5] , l5[ 3], l5[ 4], l5[ 5] ]) : continue if test2([l3[ 6], l3[ 7], l3[ 8] , l4[ 6], l4[ 7], l4[ 8] , l5[ 6], l5[ 7], l5[ 8] ]) : continue for l6 in h_d[ 6]: if not test((l0, l1, l2, l3, l4, l5,), l6): continue for l7 in h_d[ 7]: if not test((l0, l1, l2, l3, l4, l5, l6), l7): continue for l8 in h_d[ 8]: if not test((l0, l1, l2, l3, l4, l5, l6, l7), l8): continue # 7,8,9行 进行验证 if test2([l6[ 0], l6[ 1], l6[ 2], l7[0 ], l7[1 ], l7[2 ], l8[0 ], l8[1 ], l8[2 ]]) : continueif test2([l6[ 3], l6[ 4], l6[ 5], l7[3 ], l7[4 ], l7[5 ], l8[3 ], l8[4 ], l8[5 ]]) : continueif test2([l6[ 6], l6[ 7], l6[ 8], l7[6 ], l7[7 ], l7[8 ], l8[6 ], l8[7 ], l8[8 ]]) : continueprint l0 print l1 print l2 print l3 print l4 print l5 print l6 print l7 print l8 sudokus.append((l0, l1, l2, l3, l4, l5, l6, l7, l8))
希望本文所述对大家的Python程序设计有所帮助,
篇4:Python实现的几个常用排序算法实例
最近更 新
python二叉树遍历的实现方法
python解决字典中的值是列表问题的方法
python实现的二叉树算法和kmp算法实例
python 获取et和excel的版本号
python cookielib 登录人人网的实现代码
python抓取京东价格分析京东商品价格走势
linux系统使用python监测网络接口获取网络
python中查找excel某一列的重复数据 剔除
python Django连接MySQL数据库做增删改查
Python操作json数据的一个简单例子
热 点 排 行
Python入门教程 超详细1小时学会
python 中文乱码问题深入分析
比较详细Python正则表达式操作指
Python字符串的encode与decode研
Python open读写文件实现脚本
Python enumerate遍历数组示例应
Python 深入理解yield
Python+Django在windows下的开发
python 文件和路径操作函数小结
python 字符串split的用法分享
篇5:Python实现的Kmeans++算法实例
-02-02zbar解码二维码和条形码示例
-11-11Python类的基础入门知识
2014-06-06Python程序员鲜为人知但你应该知道的17个问题
-11-11跨平台python异步回调机制实现和使用方法
2014-06-06pycharm 使用心得(六)进行简单的数据库管理
2014-03-03用Python和MD5实现网站挂马检测程序
2014-04-04python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014-01-01python练习程序批量修改文件名
2013-11-11使用python搭建Django应用程序步骤及版本冲突问题解决
2013-02-02windows下安装python paramiko模块的代码
篇6:Python实现的Kmeans++算法实例
最近更 新
python下函数参数的传递(参数带星号的说明
python在linux中输出带颜色的文字的方法
Python 字符串操作方法大全
布同 Python中文问题解决方法(总结了多位
ptyhon实现sitemap生成示例
python文件比较示例分享
python实现的阳历转阴历(农历)算法
Python读写Excel文件的实例
Python语言技巧之三元运算符使用介绍
python使用百度翻译进行中翻英示例
热 点 排 行
Python入门教程 超详细1小时学会
python 中文乱码问题深入分析
比较详细Python正则表达式操作指
Python字符串的encode与decode研
Python open读写文件实现脚本
Python enumerate遍历数组示例应
Python 深入理解yield
Python+Django在windows下的开发
python 文件和路径操作函数小结
python 字符串split的用法分享
篇7:python实现的希尔排序算法实例
作者:pythoner 字体:[增加 减小] 类型:
这篇文章主要介绍了python实现的希尔排序算法,实例分析了基于Python实现希尔排序的相关技巧,需要的朋友可以参考下
本文实例讲述了python实现希尔排序算法的方法,分享给大家供大家参考。具体如下:
def shellSort(items): inc = len(items) / 2 while inc: for i in xrange(len(items)):j = itemp = items[i]while j >= inc and items[j-inc] >temp: items[j] = items[j - inc] j -= incitems[j] = temp inc = inc/2 if inc/2 else (0 if inc==1 else 1)a = [35, -8, 11, 1, 68, 0, 3];shellSort(a)print a # [-8, 0, 1, 3, 11, 35, 68]
希望本文所述对大家的Python程序设计有所帮助,
篇8:python实现排序算法
-03-03python局部赋值的规则
-02-02python发布模块的步骤分享
2014-03-03Python 列表(List)操作方法详解
2014-02-02go和python调用其它程序并得到程序输出
2014-04-04python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014-05-05Python random模块(获取随机数)常用方法和使用例子
-12-12python cookielib 登录人人网的实现代码
-09-09Python httplib,smtplib使用方法
2013-11-11pyramid配置session的方法教程
2014-03-03python实现k均值算法示例(k均值聚类算法)
篇9:python实现排序算法
最近更 新
用python实现的去除win下文本文件头部BOM
Python实现的金山快盘的签到程序
python操作MySQL数据库具体方法
python操作日期和时间的方法
删除目录下相同文件的python代码(逐级优化
python 中的列表解析和生成表达式
Python实例分享:快速查找出被挂马的文件
python列表去重的二种方法
python查找第k小元素代码分享
Python 网络编程说明
热 点 排 行
Python入门教程 超详细1小时学会
python 中文乱码问题深入分析
比较详细Python正则表达式操作指
Python字符串的encode与decode研
Python open读写文件实现脚本
Python enumerate遍历数组示例应
Python 深入理解yield
Python+Django在windows下的开发
python 文件和路径操作函数小结
python 字符串split的用法分享
★ 排序算法总结
【python实现中文分词FMM算法实例(精选9篇)】相关文章:
word 怎么将doc转成pdf格式2022-05-08
python使用循环实现批量创建文件夹示例2022-10-04
近邻作文2022-10-26
程序员必读的书籍排行榜2023-04-27
shell问答16:批量修改文件名后缀Unix系统2022-11-25
“COPY”行动作文2022-04-29
python基础教程之字典操作详解2023-04-25
Python导入oracle数据的方法2023-06-20
讲解Python中fileno方法的使用2023-02-27
详解加密技术概念、加密方法以及应用2024-02-19