基于python中jieba包的详细使用介绍
一,jieba的介紹
jieba 是目前表現較為不錯的 Python 中文分詞組件,它主要有以下特性:
-
支持四種分詞模式:
- 精確模式
- 全模式
- 搜索引擎模式
- paddle模式
-
支持繁體分詞
-
支持自定義詞典
-
MIT 授權協議
二,安裝和使用
1,安裝
pip3 install jieba2,使用
import jieba三,主要分詞功能
1,jieba.cut 和jieba.lcut
lcut 將返回的對象轉化為list對象返回
傳入參數解析:
def cut(self, sentence, cut_all=False, HMM=True, use_paddle=False): # sentence: 需要分詞的字符串; # cut_all: 參數用來控制是否采用全模式; # HMM: 參數用來控制是否使用 HMM 模型; # use_paddle: 參數用來控制是否使用paddle模式下的分詞模式,paddle模式采用延遲加載方式,通過enable_paddle接口安裝paddlepaddle-tiny1)精準模式(默認):
試圖將句子最精確地切開,適合文本分析
seg_list = jieba.cut("我來到北京清華大學", cut_all=False) print("精準模式: " + "/ ".join(seg_list)) # 精確模式# -----output----- 精準模式: 我/ 來到/ 北京/ 清華大學2)全模式:
把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
seg_list = jieba.cut("我來到北京清華大學", cut_all=True) print("全模式: " + "/ ".join(seg_list)) # 全模式# -----output----- 全模式: 我/ 來到/ 北京/ 清華/ 清華大學/ 華大/ 大學3)paddle模式
利用PaddlePaddle深度學習框架,訓練序列標注(雙向GRU)網絡模型實現分詞。同時支持詞性標注。
paddle模式使用需安裝paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1。
目前paddle模式支持jieba v0.40及以上版本。
jieba v0.40以下版本,請升級jieba,pip installjieba --upgrade。 PaddlePaddle官網
2,jieba.cut_for_search 和 jieba.lcut_for_search
搜索引擎模式
在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞
seg_list = jieba.cut_for_search("小明碩士畢業于中國科學院計算所,后在日本京都大學深造") # 搜索引擎模式 print(", ".join(seg_list))# -----output----- 小明, 碩士, 畢業, 于, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, ,, 后, 在, 日本, 京都, 大學, 日本京都大學, 深造3,jieba.Tokenizer(dictionary=DEFAULT_DICT)
新建自定義分詞器,可用于同時使用不同詞典。jieba.dt 為默認分詞器,所有全局分詞相關函數都是該分詞器的映射。
import jiebatest_sent = "永和服裝飾品有限公司" result = jieba.tokenize(test_sent) ##Tokenize:返回詞語在原文的起始位置 print(result) for tk in result:# print ("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]) )print (tk)# -----output----- <generator object Tokenizer.tokenize at 0x7f6b68a69d58> ('永和', 0, 2) ('服裝', 2, 4) ('飾品', 4, 6) ('有限公司', 6, 10)四,添加自定義詞典
開發者可以指定自己自定義的詞典,以便包含 jieba 詞庫里沒有的詞。雖然 jieba有新詞識別能力,但是自行添加新詞可以保證更高的正確率。
1,添加詞典用法:
jieba.load_userdict(dict_path) # dict_path為文件類對象或自定義詞典的路徑。2,其中自定義字典舉例如下:
一個詞占一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。
創新辦 3 i 云計算 5 凱特琳 nz 中信建投 投資公司3,使用自定義詞典示例:
1)使用自定義詞典文件
import jiebatest_sent = "中信建投投資公司投資了一款游戲,中信也投資了一個游戲公司" jieba.load_userdict("userdict.txt") words = jieba.cut(test_sent) print(list(words))#-----output------ ['中信建投', '投資公司', '投資', '了', '一款', '游戲', ',', '中信', '也', '投資', '了', '一個', '游戲', '公司']2)使用 jieba 在程序中動態修改詞典
import jieba# 定義示例句子 test_sent = "中信建投投資公司投資了一款游戲,中信也投資了一個游戲公司"#添加詞 jieba.add_word('中信建投') jieba.add_word('投資公司')# 刪除詞 jieba.del_word('中信建投')words = jieba.cut(test_sent) print(list(words))#-----output------ ['中信', '建投', '投資公司', '投資', '了', '一款', '游戲', ',', '中信', '也', '投資', '了', '一個', '游戲', '公司']五,關鍵詞提取
1,基于TF-IDF算法的關鍵詞提取
1)TF-IDF接口和示例
import jieba.analyse- jieba.analyse.extract_tags(sentence, topK=20, withWeight=False,allowPOS=())
其中需要說明的是:- 1.sentence 為待提取的文本
- 2.topK 為返回幾個 TF/IDF 權重最大的關鍵詞,默認值為 20
- 3.withWeight 為是否一并返回關鍵詞權重值,默認值為 False
- 4.allowPOS 僅包括指定詞性的詞,默認值為空,即不篩選
- jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 實例,idf_path 為 IDF 頻率文件
2)關鍵詞提取所使用逆向文件頻率(IDF)文本語料庫可以切換成自定義語料庫的路徑
用法:
jieba.analyse.set_idf_path(file_name) # file_name為自定義語料庫的路徑
自定義語料庫示例:
3)關鍵詞提取所使用停止詞(Stop Words)文本語料庫可以切換成自定義語料庫的路徑
- 用法: jieba.analyse.set_stop_words(file_name) # file_name為自定義語料庫的路徑
- 自定義語料庫示例:
4)關鍵詞一并返回關鍵詞權重值示例
import jieba import jieba.analyse #讀取文件,返回一個字符串,使用utf-8編碼方式讀取,該文檔位于此python同以及目錄下 content = open(u'data.txt','r',encoding='utf-8').read() jieba.analyse.set_stop_words("stopwords.txt") tags = jieba.analyse.extract_tags(content, topK=10,withWeight=True) print(tags)2,詞性標注
- jieba.posseg.POSTokenizer(tokenizer=None) 新建自定義分詞器,tokenizer參數可指定內部使用的 jieba.Tokenizer 分詞器。 jieba.posseg.dt 為默認詞性標注分詞器。
- 標注句子分詞后每個詞的詞性,采用和 ictclas 兼容的標記法。
- 用法示例
詞性對照表
3,并行分詞
將目標文本按行分隔后,把各行文本分配到多個 Python 進程并行分詞,然后歸并結果,從而獲得分詞速度的可觀提升。用法:
- jieba.enable_parallel(4):開啟并行分詞模式,參數為并行進程數
- jieba.disable_parallel() :關閉并行分詞模式
可參考 test_file.py
注意:基于 python 自帶的 multiprocessing 模塊,目前暫不支持 Windows
4,Tokenize:返回詞語在原文的起止位置
1)默認模式
注意,輸入參數只接受 unicode
import jieba import jieba.analyse 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]))# ----output------- word 永和 start: 0 end:2 word 服裝 start: 2 end:4 word 飾品 start: 4 end:6 word 有限公司 start: 6 end:102)搜索模式
import jieba import jieba.analyse 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]))# ----output------- 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:105,搜索引擎ChineseAnalyzer for Whoosh
使用 jieba 和 whoosh 可以實現搜索引擎功能。
whoosh 是由python實現的一款全文搜索工具包,可以使用 pip 安裝它:
介紹 jieba + whoosh 實現搜索之前,你可以先看下文 whoosh 的簡單介紹。
下面看一個簡單的搜索引擎的例子:
六,延遲加載
ieba 采用延遲加載,import jieba 和 jieba.Tokenizer() 不會立即觸發詞典的加載,一旦有必要才開始加載詞典構建前綴字典。如果你想手工初始 jieba,也可以手動初始化。
import jieba jieba.initialize() # 手動初始化(可選)上面代碼中,使用 add_document() 把一個文檔添加到了 index 中。在這些文檔中,搜索含有 “basketball”和 “elegant” 的文檔。
七,其他詞典
1,占用內存較小的詞典文件 https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.small
2,支持繁體分詞更好的詞典文件 https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.big
下載你所需要的詞典,然后覆蓋 jieba/dict.txt 即可;或者用 jieba.set_dictionary('data/dict.txt.big')
總結
以上是生活随笔為你收集整理的基于python中jieba包的详细使用介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 递归算法整理合集
- 下一篇: C#如何使用httpwebrequest