一:前言
和拉丁語系不同,亞洲語言是不用空格分開每個有意義的詞的。而當我們進行自然語言處理的時候,大部分情況下,詞彙是我們對句子和文章理解的基礎,因此需要乙個工具去把完整的文字中分解成粒度更細的詞。
jieba就是這樣乙個非常好用的中文工具,是以分詞起家的,但是功能比分詞要強大很多。
二:基本分詞函式與用法
jieba.cut 以及 jieba.cut_for_search 返回的結構都是乙個可迭代的 generator,可以使用 for 迴圈來獲得分詞後得到的每乙個詞語(unicode)
jieba.cut方法接受三個輸入引數:
jieba.cut_for_search方法接受兩個引數
該方法適合用於搜尋引擎構建倒排索引的分詞,粒度比較細
import jieba
list0 = jieba.cut('小明碩士畢業於中國科學院計算所,後在哈佛大學深造', cut_all=true)
print('全模式', list(list0))
# ['小', '明', '碩士', '畢業', '於', '中國', '中國科學院', '科學', '科學院', '學院', '計算', '計算所', '', '', '後', '在', '哈佛', '哈佛大學', '大學', '深造']
list1 = jieba.cut('小明碩士畢業於中國科學院計算所,後在哈佛大學深造', cut_all=false)
print('精準模式', list(list1))
# ['小明', '碩士', '畢業', '於', '中國科學院', '計算所', ',', '後', '在', '哈佛大學', '深造']
list2 = jieba.cut_for_search('小明碩士畢業於中國科學院計算所,後在哈佛大學深造')
print('搜尋引擎模式', list(list2))
# ['小明', '碩士', '畢業', '於', '中國', '科學', '學院', '科學院', '中國科學院', '計算', '計算所', ',', '後', '在', '哈佛', '大學', '哈佛大學', '深造']
新增使用者自定義詞典
很多時候我們需要針對自己的場景進行分詞,會有一些領域內的專有詞彙。
載入使用者詞典方式:
# 未載入使用者詞典時
st1=jieba.cut('王蔣小明在加州理工大學上學')
# ['王', '蔣小明', '在', '加州', '理工大學', '上學']
print(list(st1))
# 載入使用者詞典時
# jieba自帶的庫一般在python都為site-packages\jieba\dict.txt
jieba.load_userdict('d.txt')
# 詞典格式和dict.txt一樣,一詞一行,每行分三個部分(用空格隔開),詞語 詞頻(可省) 詞性(可省)
# 順序不可顛倒,若filename為路徑或二進位制方式開啟,則需為utf-8
# 定義: 王蔣小明 加州理工大學 在d.txt中
st2=jieba.cut('王蔣小明在加州理工大學上學')
# ['王蔣小明', '在', '加州理工大學', '上學']
print(list(st2))
調節詞頻
a=jieba.cut('在考試中將有監控')
print(list(a)) # ['在', '考試', '中將', '有', '監控']
jieba.suggest_freq(('中','將'),true) # 通過調節詞頻,讓中和將都被劃出來
b=jieba.cut('在考試中將有監控')
print(list(b)) # ['在', '考試', '中', '將', '有', '監控']
import jieba.analyse 中文分詞 jieba
支援繁體分詞 支援自定義詞典 mit 授權協議 對 python 2 3 均相容 試圖將句子最精確地切開,適合文字分析 import jieba def main s u 我在人民廣場吃著炸雞 cut jieba.cut s print type cut for word in cut print ...
中文分詞工具 Jieba
jieba分詞值基於規則和統計這兩類方法。其首先基於字首詞典進行詞圖掃瞄,字首詞典是指詞典中的詞按照字首的包含順序排列的,從而形成一種層級包含結構。這種字首詞典的好處便是可以快速構建包含全部可能分詞結果的有向無環圖,這個圖包含多條分詞路徑,無環是指節點間不構成閉環。然後基於標註語料,使用動態規劃演算...
python 中文jieba分詞
import os import jieba from collections import counter def words txt print jieba.cut txt lista jieba.cut txt 返回的結構都是乙個可迭代的 generator,可以使用 for 迴圈來獲得分詞後...