下面这个程序是对一个文本文件里的内容进行分词的程序:test.py
邓州网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
[python] view plain copy
#!/usr/bin/python
#-*- encoding:utf-8 -*-
import jieba #导入jieba模块
def splitSentence(inputFile, outputFile):
fin = open(inputFile, 'r') #以读的方式打开文件
fout = open(outputFile, 'w') #以写得方式打开文件
for eachLine in fin:
line = eachLine.strip().decode('utf-8', 'ignore') #去除每行首尾可能出现的空格,并转为Unicode进行处理
wordList = list(jieba.cut(line)) #用结巴分词,对每行内容进行分词
outStr = ''
for word in wordList:
outStr += word
outStr += '/ '
fout.write(outStr.strip().encode('utf-8') + '\n') #将分词好的结果写入到输出文件
fin.close()
fout.close()
splitSentence('myInput.txt', 'myOutput.txt')
写完程序之后,在Linux重点输入:python test.py即可运行程序进行分词。
输入的文件内容如下所示:
经过结巴分词后,输出结果如下所示:
注意:第11行的 jieba.cut()返回的结构是一个可迭代的generator,可以用list(jieba.cut(...))转化为list
1、全局变量在函数中使用时需要加入global声明
2、获取网页内容存入文件时的编码为ascii进行正则匹配时需要decode为GB2312,当匹配到的中文写入文件时需要encode成GB2312写入文件。
3、中文字符匹配过滤正则表达式为ur'[\u4e00-\u9fa5]+',使用findall找到所有的中文字符存入分组
4、KEY,Value值可以使用dict存储,排序后可以使用list存储
5、字符串处理使用split分割,然后使用index截取字符串,判断哪些是名词和动词
6、命令行使用需要导入os,os.system(cmd)
可以利用python的jieba分词,得到文本中出现次数较多的词。
首先pip安装一下jieba,这个可以分词
然后用计数器Counter()统计一下得到的分词中各词的数量
最后most_common(5),是打印出排名前五位的词(包括特殊符号)
#encoding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import jieba
from collections import Counter
str1 = open('tips.txt').read()
wordlist_after_jieba = jieba.cut(str1, cut_all = True)
list_wl = Counter(wordlist_after_jieba)
for i in list_wl.most_common(5):
print i[0],i[1]
python做中文分词处理主要有以下几种:结巴分词、NLTK、THULAC
1、fxsjy/jieba
结巴的标语是:做最好的 Python 中文分词组件,或许从现在来看它没做到最好,但是已经做到了使用的人最多。结巴分词网上的学习资料和使用案例比较多,上手相对比较轻松,速度也比较快。
结巴的优点:
支持三种分词模式
支持繁体分词
支持自定义词典
MIT 授权协议
2、THULAC:一个高效的中文词法分析工具包
前两天我在做有关于共享单车的用户反馈分类,使用jieba分词一直太过零散,分类分不好。后来江兄给我推荐了THULAC: 由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包 。THULAC的接口文档很详细,简单易上手。
THULAC分词的优点:
能力强。利用规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。
准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%
速度较快。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度达到1.3MB/s,速度比jieba慢
Python 解决中文编码问题基本可以用以下逻辑:
utf8(输入) —— unicode(处理) —— (输出)utf8
Python 里面处理的字符都是都是unicode 编码,因此解决编码问题的方法是把输入的文本(无论是什么编码)解码为(decode)unicode编码,然后输出时再编码(encode)成所需编码。
由于处理的一般为txt 文档,所以最简单的方法,是把txt 文档另存为utf-8 编码,然后使用Python 处理的时候解码为unicode(sometexts.decode('utf8')),输出结果回txt 的时候再编码成utf8(直接用str() 函数就可以了)。