使用最大逆向法,利用python进行简易中文分词
来源:互联网 发布:易支付源码 编辑:程序博客网 时间:2024/05/07 16:09
首先进行分词所需要的基本设置就是“词库”,而网上开源的词库有很多,例如github里面的chinese词库和清华大学开源中文词库,这些都是免费下载开源的。而且下载及其简单,
所以你在网页可以直接下载,若是你已经学过爬虫,也可以进行爬下来。在这里我只下载类清华大学的food词库,这个程序也只能匹配水果食物等的专有名词。
以下是程序
#!/usr/bin/env python#-*- coding:utf-8 -*-#---------------------------------#FILENAME:fenci.py#目的:使用最大逆向匹配, 完成简易分词操作#环境:Ubuntu14 python2.7#FILE:fenci.py#TIME:20170803#---------------------------------import reimport time#对一个字符串进行最大匹配处理,不包括特殊字符处理def segment(str1,content):#str1 需要分词的字符串,content是匹配词库#str1=str1.decode('utf-8')str2=""maxlen=5 #只在最大词长范围处理while(len(str1)):length=int(len(str1))if length>maxlen:length=maxlentmp_str=str1[len(str1)-length:len(str1)]while(length>1 and (re.search(tmp_str,content)==None)):#如果不是词,从右边剪掉一个汉字,剩下部分作为候选词"""length=length-1tmp_str=str1[len(str1)-length:len(str1)]tmp_str=tmp_str+'/'str2=tmp_str+str2str1=str1[0:len(str1)-length]return str2#对一个字符串进行最大匹配处理,包括特殊字符处理def segmentMM(str1,content):str2=""re_pat=re.compile(u'[\u4e00-\u9fa5]+')#只取中文字符tmp_list=re.findall(re_pat,str1.decode('utf-8'))# 开始匹配中文字符,取出以list的形式for i in tmp_list:#这是将取出的string list输出观看print i,else:print '\n'cont_dec=content.decode('utf-8')while(len(tmp_list)):str2=segment(tmp_list.pop(),cont_dec)+str2#tmp_list弹出最后一个元素(string),作为segment参数传入 #执行后消除最后一个元素,tmp-list长度-1str2=' '+str2return str2#以下是main函数部分---------------------if __name__=="__main__": path='/home/chin/pydic/food.txt'#这是我下载词库txt文件的目录,每个人有所不一样,因此不能照写try:fp=open(path,'r')except IOError as e:print"open error!"else:start=time.time()content=fp.read()string=segmentMM("aa我9木瓜adf*超积电视机苹果然后,?重火龙果asf爱吃苹果asdaf香蕉西瓜哈密瓜",content)print stringfp.close()stop=time.time()print"file is closed!\nTIME:%d sec"%(stop-start)
程序结果:
string=segmentMM("aa我9木瓜adf*超积电视机苹果然后,?重火龙果asf爱吃苹果asdaf香蕉西瓜哈密瓜",content)
我 木瓜 超积电视机苹果然后 重火龙果 爱吃苹果 香蕉西瓜哈密瓜
我/ 木瓜/ 超/积/电/视/机/苹果/然/后/ 重/火龙果/ 爱/吃/苹果/ 香蕉/西瓜/哈密瓜/
file is closed!
TIME:0 sec
阅读全文
0 0
- 使用最大逆向法,利用python进行简易中文分词
- Python利用结巴分词进行中文分词
- 用正向和逆向最大匹配算法进行中文分词
- 使用Python,字标注及最大熵法进行中文分词
- 中文分词--逆向最大匹配
- 中文分词--逆向最大匹配
- Python实现中文最大逆向匹配分词算法
- python中文分词,使用结巴分词对python进行分词
- 中文分词算法之最大逆向匹配法
- 使用python jieba库进行中文分词
- 使用python对中文文本进行分词
- 简易中文分词算法(python)
- python正向最大匹配分词和逆向最大匹配分词
- 用正向和逆向最大匹配算法进行中文分词(续)
- 如何利用Python对中文进行分词处理
- 中文分词 正向最大匹配法 逆向最大匹配法 双向最大匹配法
- 【Rosseta中文分词】python下利用HMM思想进行中文分词
- 简单的逆向最大匹配算法实现中文分词(Python)
- Struts1和Struts2区别
- linux rpm和yum使用介绍
- Python编程中常用的12种基础知识,其中肯定有你不会的! 0 1、正则表达式替换 目标: 将字符串line中的 overview.gif 替换成其他字符串 0 2、遍历目录方
- Ubuntu 搭建Ghost1.0博客系统
- 【CSharp 学习笔记】关于路径的一些小笔记
- 使用最大逆向法,利用python进行简易中文分词
- C++中的函数指针和函数对象总结
- struts2所有的常量配置
- ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 16 roswtf入门
- 还是畅通工程||HDU1233
- 微信小程序
- C++ 菱形继承
- Gradle sync failed: Could not download imagepipeline.aar (com.facebook.fresco:imagepipeline:1.3.0):
- JSONModel解析数据成Model