今天的任务是对txt文本进行分词,有幸了解到"结巴"中文分词,其愿景是做最好的Python中文分词组件。有兴趣的朋友请点这里。
jieba支持三种分词模式:
*精确模式,试图将句子最精确地切开,适合文本分析;
*全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
*搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
主要采用以下算法:
*基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)
*采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
*对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法
下面是我做的小尝试,对txt文本进行分词,并对获取的分词进行计数,最后将结果写入result.txt中。代码如下:
# -*- coding: utf-8 -*- #----------------------------------------------------- # 功能:将txt文本进行分词处理 # 作者:chenbjin # 日期:2014-07-14 # 语言:Python 2.7.6 # 环境:linux(ubuntu) # jieba(Must be installed) # 使用:python fenci.py file.txt #----------------------------------------------------- import jieba import sys reload(sys) sys.setdefaultencoding('utf8') def fenci(argv) : filename = argv[1] f = open(filename,'r+') file_list = f.read() f.close() seg_list = jieba.cut(file_list,cut_all=True) tf={} for seg in seg_list : #print seg seg = ''.join(seg.split()) if (seg != '' and seg != " " and seg != " ") : if seg in tf : tf[seg] += 1 else : tf[seg] = 1 f = open("result.txt","w+") for item in tf: #print item f.write(item+" "+str(tf[item])+" ") f.close() if __name__ == '__main__' : fenci(sys.argv)
参考资料:
1.结巴中文分词:https://github.com/fxsjy/jieba
2.Demo of jieba:http://jiebademo.ap01.aws.af.cm/