結巴(jieba)分詞器入門

安裝jieba

# pip install jieba

分詞工具

import jieba
input="我來到北京大學"
seg_list=jieba.cut(input)
print("默認精確模式:"+"/".join(seg_list))
seg_list=jieba.cut(input,cut_all=True)
print("全模式:"+"/".join(seg_list))
默認精確模式:我/來到/北京大學
全模式:我/來到/北京/北京大學/大學

導入自定義的字典

# 不導入自定義的字典,有可能會致使分詞結果不是本身想要的
input="故宮的著名景點包括乾清宮、太和殿和黃琉璃瓦等"
seg_list=jieba.cut(input)
print("精確模式:"+"/".join(seg_list))
seg_list=jieba.cut(input,cut_all=True)
print("全模式:"+"/".join(input))
精確模式:故宮/的/著名景點/包括/乾/清宮/、/太和殿/和/黃/琉璃瓦/等
全模式:故/宮/的/著/名/景/點/包/括/乾/清/宮/、/太/和/殿/和/黃/琉/璃/瓦/等

乾/清宮 被拆開了,咱們想要的是乾清宮

導入自定義的字典python

jieba.load_userdict("./data/mydict.txt")
#若是詞比較少那麼也能夠用
#jieba.add_word("乾清宮")
seg_list=jieba.cut(input)
print("精確模式:"+"/ ".join(seg_list))
seg_list=jieba.cut(input,cut_all=True)
print("全模式"+" / ".join(seg_list))
精確模式:故宮/ 的/ 著名景點/ 包括/ 乾清宮/ 、/ 太和殿/ 和/ 黃琉璃瓦/ 等
全模式故宮 / 的 / 著名 / 著名景點 / 景點 / 包括 / 乾清宮 / 清宮 / 、 / 太和 / 太和殿 / 和 / 黃琉璃瓦 / 琉璃 / 琉璃瓦 / 等

乾清宮精確模式和全模式都被順利拆分出來了

提取關鍵詞

import jieba.analyse
tags=jieba.analyse.extract_tags(input,topK=5)
print("關鍵詞"+" / ".join(tags))
# 打印出關鍵詞的權重
tags=jieba.analyse.extract_tags(input,topK=5,withWeight=True)
for tag,weight in tags:
    print('{}-{}'.format(tag,weight))
關鍵詞著名景點 / 乾清宮 / 黃琉璃瓦 / 太和殿 / 故宮
著名景點-2.3167796086666668
乾清宮-1.9924612504833332
黃琉璃瓦-1.9924612504833332
太和殿-1.6938346722833335
故宮-1.5411195503033335

詞性標註

import jieba.posseg as pseg
words=pseg.cut(input)
for word,flag in words:
    print('{}-{}'.format(word,flag))
故宮-n
的-uj
著名景點-n
包括-v
乾清宮-n
、-x
太和殿-nr
和-c
黃琉璃瓦-n
等-u

詞雲展現

import jieba
from wordcloud import WordCloud
import imageio
from collections import Counter
import matplotlib.pyplot as plt

def getFileContent(path):
    with open(path,'r',encoding='utf-8') as f:
        return f.read()

input=getFileContent('./data/19Congress.txt')
# 中止詞
stop_text=getFileContent('./data/stopwords.txt')

stopwords={line.strip() for line in stop_text}


data={}

seg_list=jieba.cut(input,cut_all=False)

for word in seg_list:
    if len(word)>=2:
        if not data.__contains__(word):
            data[word]=0
        data[word]+=1
word_clouds=WordCloud(
    background_color='white',#背景
    max_words=400,
    width=600,
    height=400,
    mask=imageio.imread('./data/mapofChina.jpg'), #背景圖
    stopwords=stopwords,
    font_path=r'./data/SimHei.ttf', # 字體
).generate_from_frequencies(data)
    
plt.figure(figsize=(18,16))
plt.imshow(word_clouds)
plt.axis(False)
plt.show()
word_clouds.to_file("test.jpg") # 輸出到文件

image-20200923221335693

相關文章
相關標籤/搜索