日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

jieba 分詞 centos 安裝,python使用

 株野 2017-08-04

GOODDEEP

GOOD DEEP 優(yōu)秀 深?yuàn)W

1,支持三種分詞模式:

    a,精確模式,試圖將句子最精確地切開,適合文本分析;
    b,全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非???,但是不能解決歧義;
    c,搜索引擎模式,在精確模式的基礎(chǔ)上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。

2,支持繁體分詞

3,支持自定義詞典

安裝

1,Python 2.x 下的安裝

全自動(dòng)安裝 :easy_install jieba 或者 pip install jieba
半自動(dòng)安裝 :先下載http://pypi.Python.org/pypi/jieba/ ,解壓后運(yùn)行python setup.py install
手動(dòng)安裝 :將jieba目錄放置于當(dāng)前目錄或者site-packages目錄
通過import jieba 來引用

2,Python 3.x 下的安裝

目前master分支是只支持Python2.x 的
Python3.x 版本的分支也已經(jīng)基本可用: https://github.com/fxsjy/jieba/tree/jieba3k

  1. git clone https://github.com/fxsjy/jieba.git  
  2. git checkout jieba3k  
  3. python setup.py install  


算法實(shí)現(xiàn):

基于Trie樹結(jié)構(gòu)實(shí)現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖(DAG)
采用了動(dòng)態(tài)規(guī)劃查找最大概率路徑, 找出基于詞頻的最大切分組合
對于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用了Viterbi算法

功能

功能 1):分詞

    jieba.cut方法接受兩個(gè)輸入?yún)?shù): 1) 第一個(gè)參數(shù)為需要分詞的字符串 2)cut_all參數(shù)用來控制是否采用全模式
    jieba.cut_for_search方法接受一個(gè)參數(shù):需要分詞的字符串,該方法適合用于搜索引擎構(gòu)建倒排索引的分詞,粒度比較細(xì)
    注意:待分詞的字符串可以是gbk字符串、utf-8字符串或者unicode
    jieba.cut以及jieba.cut_for_search返回的結(jié)構(gòu)都是一個(gè)可迭代的generator,可以使用for循環(huán)來獲得分詞后得到的每一個(gè)詞語(unicode),也可以用list(jieba.cut(...))轉(zhuǎn)化為list
代碼示例( 分詞 )

  1. #encoding=utf-8  
  2. import jieba  
  3. seg_list = jieba.cut("我來到北京清華大學(xué)", cut_all=True)  
  4. print "Full Mode:", "/ ".join(seg_list)  # 全模式  
  5. seg_list = jieba.cut("我來到北京清華大學(xué)", cut_all=False)  
  6. print "Default Mode:", "/ ".join(seg_list)  # 精確模式  
  7. seg_list = jieba.cut("他來到了網(wǎng)易杭研大廈")  # 默認(rèn)是精確模式  
  8. print ", ".join(seg_list)  
  9. seg_list = jieba.cut_for_search("小明碩士畢業(yè)于中國科學(xué)院計(jì)算所,后在日本京都大學(xué)深造")  # 搜索引擎模式  
  10. print ", ".join(seg_list)  


Output:

【全模式】: 我/ 來到/ 北京/ 清華/ 清華大學(xué)/ 華大/ 大學(xué)
【精確模式】: 我/ 來到/ 北京/ 清華大學(xué)
【新詞識(shí)別】:他, 來到, 了, 網(wǎng)易, 杭研, 大廈    (此處,“杭研”并沒有在詞典中,但是也被Viterbi算法識(shí)別出來了)
【搜索引擎模式】: 小明, 碩士, 畢業(yè), 于, 中國, 科學(xué), 學(xué)院, 科學(xué)院, 中國科學(xué)院, 計(jì)算, 計(jì)算所, 后, 在, 日本, 京都, 大學(xué), 日本京都大學(xué), 深造

功能 2) :添加自定義詞典

開發(fā)者可以指定自己自定義的詞典,以便包含jieba詞庫里沒有的詞。雖然jieba有新詞識(shí)別能力,但是自行添加新詞可以保證更高的正確率
用法:

  1. jieba.load_userdict(file_name) # file_name為自定義詞典的路徑  


詞典格式和dict.txt一樣,一個(gè)詞占一行;每一行分三部分,一部分為詞語,另一部分為詞頻,最后為詞性(可省略),用空格隔開

范例:

自定義詞典:

  1. 云計(jì)算 5  
  2. 李小福 2 nr  
  3. 創(chuàng)新辦 3 i  
  4. easy_install 3 eng  
  5. 好用 300  
  6. 韓玉賞鑒 3 nz  


用法示例:

  1. #encoding=utf-8  
  2. import sys  
  3. sys.path.append("../")  
  4. import jieba  
  5. jieba.load_userdict("userdict.txt")  
  6. import jieba.posseg as pseg  
  7.   
  8. test_sent = "李小福是創(chuàng)新辦主任也是云計(jì)算方面的專家;"  
  9. test_sent += "例如我輸入一個(gè)帶“韓玉賞鑒”的標(biāo)題,在自定義詞庫中也增加了此詞為N類型"  
  10. words = jieba.cut(test_sent)  
  11. for w in words:  
  12. print w  
  13.   
  14. result = pseg.cut(test_sent)  
  15.   
  16. for w in result:  
  17. print w.word, "/", w.flag, ", ",  
  18.   
  19. print "\n========"  
  20.   
  21. terms = jieba.cut('easy_install is great')  
  22. for t in terms:  
  23.     print t  
  24. print '-------------------------'  
  25. terms = jieba.cut('python 的正則表達(dá)式是好用的')  
  26. for t in terms:  
  27.     print t  


之前: 李小福 / 是 / 創(chuàng)新 / 辦 / 主任 / 也 / 是 / 云 / 計(jì)算 / 方面 / 的 / 專家 /

加載自定義詞庫后: 李小福 / 是 / 創(chuàng)新辦 / 主任 / 也 / 是 / 云計(jì)算 / 方面 / 的 / 專家 /
"通過用戶自定義詞典來增強(qiáng)歧義糾錯(cuò)能力" --- https://github.com/fxsjy/jieba/issues/14

功能 3) :關(guān)鍵詞提取

  1. jieba.analyse.extract_tags(sentence,topK) #需要先import jieba.analyse  


說明

setence為待提取的文本

topK為返回幾個(gè)TF/IDF權(quán)重最大的關(guān)鍵詞,默認(rèn)值為20
代碼示例 (關(guān)鍵詞提?。?

  1. import sys  
  2. sys.path.append('../')  
  3.   
  4. import jieba  
  5. import jieba.analyse  
  6. from optparse import OptionParser  
  7.   
  8. USAGE = "usage: python extract_tags.py [file name] -k [top k]"  
  9.   
  10. parser = OptionParser(USAGE)  
  11. parser.add_option("-k", dest="topK")  
  12. opt, args = parser.parse_args()  
  13.   
  14.   
  15. if len(args) < 1:  
  16.     print USAGE  
  17.     sys.exit(1)  
  18.   
  19. file_name = args[0]  
  20.   
  21. if opt.topK is None:  
  22.     topK = 10  
  23. else:  
  24.     topK = int(opt.topK)  
  25.   
  26. content = open(file_name, 'rb').read()  
  27.   
  28. tags = jieba.analyse.extract_tags(content, topK=topK)  
  29.   
  30. print ",".join(tags)  


功能 4) : 詞性標(biāo)注

標(biāo)注句子分詞后每個(gè)詞的詞性,采用和ictclas兼容的標(biāo)記法
用法示例

  1. >>> import jieba.posseg as pseg  
  2. >>> words = pseg.cut("我愛北京天安門")  
  3. >>> for w in words:  
  4. ...    print w.word, w.flag  
  5. ...  
  6. 我 r  
  7. 愛 v  
  8. 北京 ns  
  9. 天安門 ns  


功能 5) : 并行分詞

原理:將目標(biāo)文本按行分隔后,把各行文本分配到多個(gè)python進(jìn)程并行分詞,然后歸并結(jié)果,從而獲得分詞速度的可觀提升
基于python自帶的multiprocessing模塊,目前暫不支持windows
用法:

  1. jieba.enable_parallel(4) # 開啟并行分詞模式,參數(shù)為并行進(jìn)程數(shù)  
  2. jieba.disable_parallel() # 關(guān)閉并行分詞模式  


例子:

  1. import urllib2  
  2. import sys,time  
  3. import sys  
  4. sys.path.append("../../")  
  5. import jieba  
  6. jieba.enable_parallel(4)  
  7.   
  8. url = sys.argv[1]  
  9. content = open(url,"rb").read()  
  10. t1 = time.time()  
  11. words = list(jieba.cut(content))  
  12.   
  13. t2 = time.time()  
  14. tm_cost = t2-t1  
  15.   
  16. log_f = open("1.log","wb")  
  17. for w in words:  
  18. print >> log_f, w.encode("utf-8"), "/" ,  
  19.   
  20. print 'speed' , len(content)/tm_cost, " bytes/second"  


實(shí)驗(yàn)結(jié)果:在4核3.4GHz Linux機(jī)器上,對金庸全集進(jìn)行精確分詞,獲得了1MB/s的速度,是單進(jìn)程版的3.3倍。

其他詞典

占用內(nèi)存較小的詞典文件 https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.small
支持繁體分詞更好的詞典文件 https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.big
下載你所需要的詞典,然后覆蓋jieba/dict.txt 即可或者用jieba.set_dictionary('data/dict.txt.big')

模塊初始化機(jī)制的改變:lazy load (從0.28版本開始)

jieba采用延遲加載,"import jieba"不會(huì)立即觸發(fā)詞典的加載,一旦有必要才開始加載詞典構(gòu)建trie。如果你想手工初始jieba,也可以手動(dòng)初始化。

  1. import jieba  
  2. jieba.initialize()  # 手動(dòng)初始化(可選)  


在0.28之前的版本是不能指定主詞典的路徑的,有了延遲加載機(jī)制后,你可以改變主詞典的路徑:

  1. jieba.set_dictionary('data/dict.txt.big')  


例子:

  1. #encoding=utf-8  
  2. import sys  
  3. sys.path.append("../")  
  4. import jieba  
  5.   
  6. def cuttest(test_sent):  
  7. result = jieba.cut(test_sent)  
  8. print " ".join(result)  
  9.   
  10. def testcase():  
  11. cuttest("這是一個(gè)伸手不見五指的黑夜。我叫孫悟空,我愛北京,我愛Python和C++。")  
  12. cuttest("我不喜歡日本和服。")  
  13. cuttest("雷猴回歸人間。")  
  14. cuttest("工信處女干事每月經(jīng)過下屬科室都要親口交代24口交換機(jī)等技術(shù)性器件的安裝工作")  
  15. cuttest("我需要廉租房")  
  16. cuttest("永和服裝飾品有限公司")  
  17. cuttest("我愛北京天安門")  
  18. cuttest("abc")  
  19. cuttest("隱馬爾可夫")  
  20. cuttest("雷猴是個(gè)好網(wǎng)站")  
  21.   
  22. if __name__ == "__main__":  
  23. testcase()  
  24. jieba.set_dictionary("foobar.txt")  
  25. print "================================"  
  26. testcase()  


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多