1.安裝css
須要用到python,根據python2.7選擇適當的安裝包。先下載http://pypi.python.org/pypi/jieba/ ,解壓後運行python setup.py installhtml
若須要安裝到myeclipse,python
1.首先須要myeclipse能支持python,安裝pydev。不一樣的pydev對於環境的要求不一樣,注意看jre的要求。linux
這一步的操做能夠參考 http://blog.csdn.net/cssmhyl/article/details/22812609git
2.導入jieba,Preference->PyDev->Eidtor->interpreter-Python.github
選擇下面的Libraries,選擇New Folder,將結巴的安裝目錄加入便可,在linux下使用easy_installwindows
這一步的操做能夠參考http://blog.csdn.net/pzy20062141/article/details/48730941app
2. 中文註釋報錯eclipse
在代碼最前面加上python2.7
#!/usr/bin/python # -*- coding: utf-8 -*-
3.分詞
結巴中文分詞支持的三種分詞模式包括:
(1) 精確模式:試圖將句子最精確地切開,適合文本分析;
(2) 全模式:把句子中全部的能夠成詞的詞語都掃描出來, 速度很是快,可是不能解決歧義問題;
(3) 搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提升召回率,適合用於搜索引擎分詞。
jieba.cut方法接受兩個輸入參數: 1) 第一個參數爲須要分詞的字符串 2)cut_all參數用來控制是否採用全模式
jieba.cut_for_search方法接受一個參數:須要分詞的字符串,該方法適合用於搜索引擎構建倒排索引的分詞,粒度比較細
注意:待分詞的字符串能夠是gbk字符串、utf-8字符串或者unicode
jieba.cut以及jieba.cut_for_search返回的結構都是一個可迭代的generator,
可使用for循環來得到分詞後獲得的每個詞語(unicode),也能夠用list(jieba.cut(...))轉化爲list
示例代碼:
#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) seg_list = jieba.cut_for_search("小明碩士畢業於中國科學院計算所,後在日本京都大學深造") # 搜索引擎模式 print ", ".join(seg_list)
4.添加自定義詞典
開發者能夠指定本身自定義的詞典,以便包含jieba詞庫裏沒有的詞。雖然jieba有新詞識別能力,可是自行添加新詞能夠保證更高的正確率
jieba.load_userdict(file_name) # file_name爲自定義詞典的路徑
詞典格式和dict.txt同樣,一個詞佔一行;每一行分三部分,一部分爲詞語,另外一部分爲詞頻,最後爲詞性(可省略),用空格隔開
強烈推薦一篇詞性標註文章,連接以下:
http://www.hankcs.com/nlp/part-of-speech-tagging.html
中文分詞庫:http://www.oschina.net/project/tag/264/segment
5.去除停用詞
少許能夠用下面第一種方式手寫介入,不然用第二種導入文件,文件要求一行一詞
stopwords = {}.fromkeys([‘的‘, ‘包括‘, ‘等‘, ‘是‘])
#stop words stopkey = [line.strip().decode('utf-8') for line in open('stopkey.txt').readlines()]
6.提取關鍵詞
jieba.analyse.extract_tags(sentence,topK) #須要先import jieba.analyse
setence爲待提取的文本
topK爲返回幾個TF/IDF權重最大的關鍵詞,默認值爲20
7.詞性標註
標註句子分詞後每一個詞的詞性,採用和ictclas兼容的標記法
>>> import jieba.posseg as pseg >>> words = pseg.cut("我愛北京天安門") >>> for w in words: ... print w.word, w.flag ... 我 r 愛 v 北京 ns 天安門 ns
8.並行分詞
原理:將目標文本按行分隔後,把各行文本分配到多個python進程並行分詞,而後歸併結果,從而得到分詞速度的可觀提高
基於python自帶的multiprocessing模塊,目前暫不支持windows
jieba.enable_parallel(4) # 開啓並行分詞模式,參數爲並行進程數 jieba.disable_parallel() # 關閉並行分詞模式
import sys import time sys.path.append("../../") import jieba jieba.enable_parallel(4) url = sys.argv[1] content = open(url,"rb").read() t1 = time.time() words = "/ ".join(jieba.cut(content)) t2 = time.time() tm_cost = t2-t1 log_f = open("1.log","wb") log_f.write(words.encode('utf-8')) print('speed %s bytes/second' % (len(content)/tm_cost))
實驗結果:在4核3.4GHz Linux機器上,對金庸全集進行精確分詞,得到了1MB/s的速度,是單進程版的3.3倍。
9.tokenize:返回詞語在原文的起始位置
輸入參數只接受unicode
默認模式:
result = jieba.tokenize(u'永和服裝飾品有限公司') for tk in result: print "word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2])
word 永和 start: 0 end:2 word 服裝 start: 2 end:4 word 飾品 start: 4 end:6 word 有限公司 start: 6 end:10
搜索模式:
result = jieba.tokenize(u'永和服裝飾品有限公司',mode='search') for tk in result: print "word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2])
word 永和 start: 0 end:2 word 服裝 start: 2 end:4 word 飾品 start: 4 end:6 word 有限 start: 6 end:8 word 公司 start: 8 end:10 word 有限公司 start: 6 end:10
10. ChineseAnalyzer for Whoosh搜索引擎
引用: from jieba.analyse import ChineseAnalyzer
示例:https://github.com/fxsjy/jieba/blob/master/test/test_whoosh.py
11.lazy load
jieba採用延遲加載,"import jieba"不會當即觸發詞典的加載,一旦有必要纔開始加載詞典構建trie。若是你想手工初始jieba,也能夠手動初始化。
import jieba jieba.initialize() # 手動初始化(可選)
jieba.set_dictionary('data/dict.txt.big')
#encoding=utf-8 import sys sys.path.append("../") import jieba def cuttest(test_sent): result = jieba.cut(test_sent) print " ".join(result) def testcase(): cuttest("這是一個伸手不見五指的黑夜。我叫孫悟空,我愛北京,我愛Python和C++。") cuttest("我不喜歡日本和服。") cuttest("雷猴迴歸人間。") cuttest("工信處女幹事每個月通過下屬科室都要親口交代24口交換機等技術性器件的安裝工做") cuttest("我須要廉租房") cuttest("永和服裝飾品有限公司") cuttest("我愛北京天安門") cuttest("abc") cuttest("隱馬爾可夫") cuttest("雷猴是個好網站") if __name__ == "__main__": testcase() jieba.set_dictionary("foobar.txt") print "================================" testcase()
1)模型的數據是如何生成的?https://github.com/fxsjy/jieba/issues/7
2)這個庫的受權是? https://github.com/fxsjy/jieba/issues/2
更多問題請點擊:https://github.com/fxsjy/jieba/issues?sort=updated&state=closed
本文參考:http://www.oschina.net/p/jieba http://www.mamicode.com/info-detail-1152559.html