安装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))
精确模式:故宫/的/著名景点/包括/乾/清宫/、/太和殿/和/黄/琉璃瓦/等
全模式:故/宫/的/著/名/景/点/包/括/乾/清/宫/、/太/和/殿/和/黄/琉/璃/瓦/等
乾/清宫
被拆开了,我们想要的是乾清宫
导入自定义的字典
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") # 输出到文件