jieba 庫是優(yōu)秀的中文分詞第三方庫,中文文本需要通過分詞獲得單個的詞語
成都創(chuàng)新互聯(lián)主營勐海網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都App制作,勐海h5成都小程序開發(fā)搭建,勐海網(wǎng)站營銷推廣歡迎勐海等地區(qū)企業(yè)咨詢
管理員身份運行cmd窗口輸入命令:pip install jieba
lcut 將返回的對象轉化為 list 對象返回
該方法適合用于搜索引擎構建倒排索引的分詞,顆粒度較細
jieba.lcut_for_search 方法返回列表類型
開發(fā)者可以指定自己自定義的詞典,以便包含jieba詞庫里沒有的詞。雖然jieba有新詞識別能力,但是自行添加新詞可以保證更高的正確率
sentence 為待提取的文本
topK 為返回幾個TF/IDF權重最大的關鍵詞,默認是20
jieba.posseg.dt 為默認詞性標注分詞器
標注句子分詞后每個詞的詞性,采用和ictclas兼容的標記法
import jieba
list1 = jieba.lcut("中華人民共和國是一個偉大的國家")
print(list1)
print("精確模式:"+"/".join(list1))
list2 = jieba.lcut("中華人民共和國是一個偉大的國家",cut_all = True)
print(list2,end=",")
print("全模式:"+"/".join(list2))
list3 = jieba.lcut_for_search("中華人民共和國是一個偉大的國家")
print(list3)
print("搜索引擎模式:"+" ".join(list3))
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)
import jieba.posseg as pseg
words = pseg.cut("我愛北京天安門")
for i in words:
print(i.word,i.flag)
三國演義文本下載
import jieba
txt = open("文件路徑", "r", encoding='utf-8').read() # 打開并讀取文件
words = jieba.lcut(txt) # 使用精確模式對文本進行分詞
counts = {} # 通過鍵值對的形式存儲詞語及其出現(xiàn)的次數(shù)
for word in words:
if len(word) == 1: # 單個詞語不計算在內(nèi)
continue
else:
counts[word] = counts.get(word, 0) + 1 # 遍歷所有詞語,每出現(xiàn)一次其對應的值加 1
items = list(counts.items()) #將鍵值對轉換成列表
items.sort(key=lambda x: x[1], reverse=True) # 根據(jù)詞語出現(xiàn)的次數(shù)進行從大到小排序
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))