码迷,mamicode.com
首页 > 编程语言 > 详细

Python 结巴分词

时间:2014-07-15 23:14:45      阅读:679      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   

今天的任务是对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 != "\n" and seg != "\n\n") :
            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])+"\n")
    f.close()

if __name__ == __main__ : fenci(sys.argv)

 参考资料:

  1.结巴中文分词:https://github.com/fxsjy/jieba

  2.Demo of jieba:http://jiebademo.ap01.aws.af.cm/

Python 结巴分词,布布扣,bubuko.com

Python 结巴分词

标签:style   blog   http   color   使用   os   

原文地址:http://www.cnblogs.com/chenbjin/p/3843800.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!