大家好,我是张大鹏,今天又来给大家分享技术文章了。
今天要给大家分享的是如何使用 Python 制作词云图。
作为 NLP 中最简单的部分,非常适合大家作为入门 NLP 自然语言处理的案例。
先上效果图:
在制作词云图之前说一下需求,我们有非常多的新闻文章,我们想要从这些新闻文章中分析出现频率最多的关键字是什么,然后按照关键字出现的频率绘制出词云图。
先来说说整体的步骤:
导入依赖包
配置matplotlib
导入新闻数据
删除空数据
分词
去停用词
统计词频
做词云
导入依赖包的代码如下:
import jieba # 分词包
import numpy # numpy计算包
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
from wordcloud import WordCloud # 词云包
matplotlib的配置代码如下:
matplotlib.rcParams['figure.figsize'] = (10.0, 5.0)
读取新闻数据的代码如下:
df = pd.read_csv("../data/entertainment_news.csv", encoding='utf-8')
删除空数据的代码如下:
分词的代码如下:
segment = []
for line in content:
try:
segs = jieba.lcut(line) # 分词
for seg in segs:
if len(seg) > 1 and seg != '\r\n':
segment.append(seg)
except:
print(line)
continue
去除停用词的代码如下:
words_df = pd.DataFrame({'segment': segment})
stopwords = pd.read_csv("../data/stopwords.txt", index_col=False, quoting=3, sep="\t", names=['stopword'],
encoding='utf-8') # quoting=3全不引用
words_df = words_df[~words_df.segment.isin(stopwords.stopword)]
统计词频的代码如下:
words_stat = words_df.groupby('segment').agg({"segment": numpy.size}).rename(columns={'segment': '计数'})
words_stat = words_stat.reset_index().sort_values(by=["计数"], ascending=False)
print(words_stat.head())
做词云的代码如下:
wordcloud = WordCloud(font_path="../data/simhei.ttf", background_color="white", max_font_size=80)
word_frequence =
wordcloud = wordcloud.fit_words(word_frequence)
plt.imshow(wordcloud)
plt.show()
最终效果图如下:
以上就是今天要分享的全部内容了,谢谢大家~
领取专属 10元无门槛券
私享最新 技术干货