飞桨AI Studio星河社区-人工智能学习与实训社区
🥪jieba分词+词频统计
import jieba # jieba中文分词库
with open('test.txt', 'r', encoding='UTF-8') as novelFile:
novel = novelFile.read()
# print(novel)
stopwords = [line.strip() for line in open('stop.txt', 'r', encoding='UTF-8').readlines()]
novelList = list(jieba.lcut(novel))
novelDict = {}
# 统计出词频字典
for word in novelList:
if word not in stopwords:
# 不统计字数为一的词
if len(word) == 1:
continue
else:
novelDict[word] = novelDict.get(word, 0) + 1
# 对词频进行排序
novelListSorted = list(novelDict.items())
novelListSorted.sort(key=lambda e: e[1], reverse=True)
# 打印前10词频
topWordNum = 0
for topWordTup in novelListSorted[:10]:
print(topWordTup)
from matplotlib import pyplot as plt
x = [c for c,v in novelListSorted]
y = [v for c,v in novelListSorted]
plt.plot(x[:10],y[:10],color='r')
plt.show()
-
导入必要的库: 代码首先导入了需要使用的库,包括了中文分词库
jieba
和用于绘图的matplotlib
。 -
读取文本文件: 使用
open()
函数打开名为test.txt
的文本文件,并读取其中的内容到变量novel
中。 -
加载停用词列表: 代码读取了一个停用词文件
stop.txt
,并将其中的停用词加载到列表stopwords
中。-
strip()
函数:strip()
函数用于去除字符串首尾的空白字符或指定的字符。在这段代码中,strip()
函数被用于去除停用词文件中每行字符串两端的空白字符。
-
-
中文分词和词频统计: 使用
jieba
库对小说文本进行分词,得到分词列表novelList
。然后遍历分词列表,去除停用词,统计词频并保存在词频字典novelDict
中。-
lcut()
函数:lcut()
函数是 jieba 库中最基本的分词函数,用于将文本进行中文分词。它的输入是一个字符串,输出是一个分词后的列表,列表中的元素是文本中的各个词语。在这段代码中,lcut()
函数被用于对小说文本进行分词,将分词结果保存在novelList
列表中。 -
novelDict[word]
:从字典novelDict
中获取键为word
的值。 -
.get(word, 0)
:字典的get()
方法,用于获取指定键的值。如果字典中存在键word
,则返回对应的值;如果不存在,返回默认值0
。 -
+ 1
:表示将获取到的值加 1,即增加单词在文本中的出现次数。
-
-
词频排序: 将词频字典
novelDict
转换为列表novelListSorted
,并按照词频从高到低进行排序。 -
打印前10词频: 遍历排好序的词频列表,打印出前10个词频最高的词及其频次。
-
词频可视化: 使用
matplotlib
库绘制词频最高的前10个词的词频图表。横坐标是词汇,纵坐标是词频。
🥪词云绘制
from wordcloud import WordCloud,ImageColorGenerator
import jieba
import matplotlib.pyplot as plt
from imageio import imread
#读入背景图片
bg_pic = imread('图1.png')
#生成词云图片
wordcloud = WordCloud(mask=bg_pic,background_color='white',\
scale=1.5,font_path=r'msyh.ttc').generate(' '.join(novelDict.keys()))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
#保存图片
wordcloud.to_file('父亲.jpg')
-
导入必要的库: 代码中导入了需要使用的库,包括
WordCloud
、ImageColorGenerator
、jieba
、matplotlib.pyplot
、imageio.imread
。 -
读入背景图片: 使用
imread()
函数读取名为 "图1.png" 的背景图片,并将其存储在变量bg_pic
中。 -
生成词云图片: 使用
WordCloud
类来生成词云图像。在生成词云对象时,通过参数指定了使用bg_pic
作为词云的遮罩(mask)图像,设置背景色为白色,放大比例为 1.5,使用字体文件 "msyh.ttc"。并使用generate()
方法传入分词后的文本作为参数,生成词云图像。 -
显示词云图: 使用
matplotlib.pyplot
库中的imshow()
函数将生成的词云图像显示出来。 -
隐藏坐标轴: 使用
axis('off')
函数隐藏坐标轴。 -
展示图像: 使用
show()
函数展示词云图。 -
保存图片: 使用
to_file()
函数将生成的词云图保存为名为 "父亲.jpg" 的图片文件。
⭐点赞收藏不迷路~