词云图&词频统计

发布时间 2023-03-23 10:28:15作者: whnpygh
默认是  精确匹配 默认模式   试图将句子最精确地切开,适合文本分析;
a=jieba.cut("中国是一个伟大的国家")
print(list(a))   ['中国', '是', '一个', '伟大', '的', '国家']
a=jieba.cut("中国是一个伟大的国家",cut_all=False)
print(list(a))   ['中国', '是', '一个', '伟大', '的', '国家']

# 全匹配  把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
a=jieba.cut("中国是一个伟大的国家",cut_all=True)
print(list(a))   ['中国', '国是', '一个', '伟大', '的', '国家']

搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词
a=jieba.cut_for_search("中国是一个伟大的国家")
print(list(a))    ['中国', '是', '一个', '伟大', '的', '国家']

from wordcloud import WordCloud
import matplotlib.pyplot as plt  #绘制图像的模块
import jieba                    #jieba分词
import numpy as np
from PIL import Image
 
path_img = "111.jpg"
#打开文件,记得采用utf-8编码解析中文文字
f = open('111.txt','r',encoding='UTF-8').read()

txt=jieba.cut(file)
tt=[]
#下条主要是为了排除一个字符以下的词,没有这条文本将会分出都是单字
for i in txt:
    if len(i)>1:
        tt.append(i)
tt
# 结巴分词,生成字符串,wordcloud无法直接生成正确的中文词云   #下行代码将分好的列表词,转为空格分隔的字符串    把列表转成字符串
pp=" ".join(tt)

background_image = np.array(Image.open(path_img))

exclude={'的','无','可以','权限','建议','暂无'} #这里是不需要的词,要剔除的
wordcloud = WordCloud(
    stopwords=exclude,
   #设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
   font_path="C:/Windows/Fonts/simfang.ttf",
   #设置了背景,宽高
   background_color="white",width=1000,height=880,mask=background_image).generate(pp)
 
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()


----词频统计
file=open("111.txt","r",encoding="utf-8").read()
f=jieba.cut(file)
z={}
for i in f:
    z[i]=z.get(i,0)+1
z
print(sorted(z.items(), key=lambda x: x[1], reverse=True)[:15])