python?中的jieba分詞庫
更新時間:2021年11月23日 08:48:46 作者:L-L
這篇文章主要介紹了python中的jieba分詞庫,jieba?庫是優(yōu)秀的中文分詞第三方庫,中文文本需要通過分詞獲得單個的詞語,下面文章的的詳細內容,需要的朋友可以參考一下
jieba 庫是優(yōu)秀的中文分詞第三方庫,中文文本需要通過分詞獲得單個的詞語
1、jieba庫安裝
管理員身份運行cmd窗口輸入命令:pip install jieba
2、jieba庫功能介紹
特征:支持三種分詞模式:精確模式:試圖將句子最精確地切開,適合文本分析全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度非??欤遣荒芙鉀Q歧義搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞
- 支持繁體分詞
- 支持自定義詞典
分詞功能:
jieba.cut 和 jieba.lcut 方法接受兩個傳入參數:
- 第一個參數為需要分詞的字符串
- cut_all參數用來控制是否采用全模式
lcut 將返回的對象轉化為 list 對象返回
jieba.cut_for_search 和 jieba.lcut_for_search 方法接受一個參數
- 需要分詞的字符串
該方法適合用于搜索引擎構建倒排索引的分詞,顆粒度較細jieba.lcut_for_search 方法返回列表類型
添加自定義詞典:
開發(fā)者可以指定自己自定義的詞典,以便包含jieba詞庫里沒有的詞。雖然jieba有新詞識別能力,但是自行添加新詞可以保證更高的正確率
用法:
使用自定義詞典文件:
jieba.load_userdict(file_name) # file_name 是自定義詞典的路徑
使用jieba在程序中動態(tài)修改詞典:
jieba.add_word(new_words) # new_words 是想要添加的新詞
jieba.del_word(words) # 刪除words
關鍵詞提?。?/strong>
jieba.analyse.extract_tags(sentence,topK) #需要先import jieba.analyse
sentence 為待提取的文本
topK 為返回幾個TF/IDF權重最大的關鍵詞,默認是20
詞性標注:
jieba.posseg.POSTokenizer(tokenizer=None) 新建自定義分詞器,tokenizer參數可指定內部使用的jieba.Tokenizer 分詞
jieba.posseg.dt 為默認詞性標注分詞器標注句子分詞后每個詞的詞性,采用和ictclas兼容的標記法
3、案例
3.1、精確模式
import jieba list1 = jieba.lcut("中華人民共和國是一個偉大的國家") print(list1) print("精確模式:"+"/".join(list1))
3.2、全模式
list2 = jieba.lcut("中華人民共和國是一個偉大的國家",cut_all = True) print(list2,end=",") print("全模式:"+"/".join(list2))
3.3、搜索引擎模式
list3 = jieba.lcut_for_search("中華人民共和國是一個偉大的國家") print(list3) print("搜索引擎模式:"+" ".join(list3))
3.4、修改詞典
import jieba text = "中信建投投資公司了一款游戲,中信也投資了一個游戲公司" word = jieba.lcut(text) print(word) # 添加詞 jieba.add_word("中信建投") jieba.add_word("投資公司") word1 = jieba.lcut(text) print(word1) # 刪除詞 jieba.del_word("中信建投") word2 = jieba.lcut(text) print(word2)
3.5、詞性標注
import jieba.posseg as pseg words = pseg.cut("我愛北京天安門") for i in words: print(i.word,i.flag)
3.6、統計三國演義中人物出場的次數
三演義文本下載:
import jieba txt = open("文件路徑", "r", encoding='utf-8').read() # 打開并讀取文件 words = jieba.lcut(txt) # 使用精確模式對文本進行分詞 counts = {} # 通過鍵值對的形式存儲詞語及其出現的次數 for word in words: if len(word) == 1: # 單個詞語不計算在內 continue else: counts[word] = counts.get(word, 0) + 1 # 遍歷所有詞語,每出現一次其對應的值加 1 items = list(counts.items()) #將鍵值對轉換成列表 items.sort(key=lambda x: x[1], reverse=True) # 根據詞語出現的次數進行從大到小排序 for i in range(15): word, count = items[i] print("{0:<10}{1:>5}".format(word, count))
import jieba
excludes = {"將軍","卻說","荊州","二人","不可","不能","如此","如何"}
txt = open("三國演義.txt", "r", encoding='utf-8').read()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1:
continue
elif word == "諸葛亮" or word == "孔明曰":
rword = "孔明"
elif word == "關公" or word == "云長":
rword = "關羽"
elif word == "玄德" or word == "玄德曰":
rword = "劉備"
elif word == "孟德" or word == "丞相":
rword = "曹操"
else:
rword = word
counts[rword] = counts.get(rword,0) + 1
for i in excludes:
del counts[i]
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
word, count = items[i]
print ("{0:<10}{1:>5}".format(word, count))
到此這篇關于python 中的jieba分詞庫的文章就介紹到這了,更多相關python jieba分詞庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Python的Twisted框架中reactor事件管理器的用法
這篇文章主要介紹了詳解Python的Twisted框架中reactor事件管理器的用法,Twisted是一款高人氣的異步Python開發(fā)框架,需要的朋友可以參考下2016-05-05python用quad、dblquad實現一維二維積分的實例詳解
今天小編大家分享一篇python用quad、dblquad實現一維二維積分的實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11Python中自然語言處理和文本挖掘的常規(guī)操作詳解
自然語言處理和文本挖掘是數據科學中的重要領域,涉及對文本數據的分析和處理,這篇文章為大家介紹了一些常見的任務和實現方法,需要的可以了解下2025-02-02