Python 結巴分詞


今天的任務是對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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM