python3怎么使用结巴分词

Python019

python3怎么使用结巴分词,第1张

下面这个程序是对一个文本文件里的内容进行分词的程序:test.py

[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

Python代码

#encoding=utf-8  

import jieba  

  

seg_list = jieba.cut("我来到北京清华大学",cut_all=True)  

print "Full Mode:", "/ ".join(seg_list) #全模式  

  

seg_list = jieba.cut("我来到北京清华大学",cut_all=False)  

print "Default Mode:", "/ ".join(seg_list) #默认模式  

  

seg_list = jieba.cut("他来到了网易杭研大厦")  

print ", ".join(seg_list)

输出: 

Full Mode: 我/ 来/ 来到/ 到/ 北/ 北京/ 京/ 清/ 清华/ 清华大学/ 华/ 华大/ 大/ 大学/ 学  

  

Default Mode: 我/ 来到/ 北京/ 清华大学  

  

他, 来到, 了, 网易, 杭研, 大厦    (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)

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() 函数就可以了)。