随着互联网的普及,大量的文本信息在网络上被产生和传播。如何从这些海量的文本中提取出有价值的信息,成为了人们关注的焦点。在这个信息爆炸的时代,词云图作为一种直观、形象的数据可视化手段,越来越受到人们的喜爱。本文手把手教你如何实现词云图,快速对文字进行分析。废话不多说,直接上源码:
一、源码
import jieba
import matplotlib.pyplot as plt
import re
from wordcloud import WordCloud
from docx import Document
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
def read_text_from_file(file_path):
doc = Document(file_path)
text = ''
for para in doc.paragraphs:
text += para.text + ''
return text
# 使用jieba进行中文分词
# 示例文本文件路径
file_path = 'E:\\test\\123.docx' # 请替换为你的文本文件路径
text12321 = read_text_from_file(file_path)
print("text",text12321)
words = jieba.lcut(text12321)
# 统计词频
word_freq = {}
for word in words:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
filtered_word_freq = {word: freq for word, freq in word_freq.items() if freq > 1}
# 过滤掉符号
filtered_word_freq = {re.sub(r'[^\w\s]', '', word): freq for word, freq in filtered_word_freq.items()}
# 按词频降序排列
sorted_word_freq = sorted(filtered_word_freq.items(), key=lambda x: x[1], reverse=True)
# 可视化结果(使用词云图)
font_path = 'C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\Windows\\Fonts\\仿宋_GB2312.ttf' # 修改为你的字体文件路径
plt.figure(figsize=(10, 5))
wordcloud = WordCloud(font_path=font_path, width=800, height=400).generate_from_frequencies(filtered_word_freq)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title("文本词频统计")
plt.show()
运行效果如下:
二、代码解释
以下是关键代码的详细讲解:
1. `import jieba, matplotlib.pyplot as plt, re, from wordcloud import WordCloud, Document`:这行代码导入了所需的库,包括jieba(用于中文分词),matplotlib.pyplot(用于绘制词云图),re(用于处理正则表达式)和WordCloud(用于生成词云)。
2. `plt.rcParams['font.sans-serif'] = ['SimHei']` 和 `plt.rcParams['axes.unicode_minus'] = False`:这两行代码设置了matplotlib的字体参数,使其可以正常显示中文标签和负号。
3. `def read_text_from_file(file_path):`:定义了一个函数,该函数接收一个文件路径作为参数,使用python-docx库读取该文件中的所有段落,并将所有段落的文本内容连接成一个字符串返回。
4. `file_path = 'E:\\test\\123.docx'`:指定了一个.docx格式的文本文件路径。
5. `text12321 = read_text_from_file(file_path)`:调用read_text_from_file函数读取该文件的内容,并打印出来。
6. `words = jieba.lcut(text12321)`:使用jieba的lcut函数对读取到的文本内容进行分词,得到一个包含所有词的列表。
7. `word_freq = {}`:创建一个空字典,用于统计每个词的出现频率。
8. `for word in words:`:遍历分词后的词列表。
9. `if word in word_freq:`:如果某个词已经在字典中,则将其对应的频率加一。
10. `else:`:如果某个词不在字典中,则将其添加到字典中,并将其频率设置为1。
11. `filtered_word_freq = {word: freq for word, freq in word_freq.items() if freq > 1}`:创建一个新的字典,只包含出现频率大于1的词及其频率。
12. `filtered_word_freq = {re.sub(r'[^\w\s]', '', word): freq for word, freq in filtered_word_freq.items()}`:使用正则表达式将filtered_word_freq中的词的符号部分去掉。
13. `sorted_word_freq = sorted(filtered_word_freq.items(), key=lambda x: x[1], reverse=True)`:将filtered_word_freq中的词按照其频率进行降序排序,得到一个列表sorted_word_freq。
14. `font_path = 'C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\Windows\\Fonts\\仿宋_GB2312.ttf'`:设置词云图的字体文件路径。
15. `plt.figure(figsize=(10, 5))`:设置图形的大小。
16. `wordcloud = WordCloud(font_path=font_path, width=800, height=400).generate_from_frequencies(filtered_word_freq)`:使用WordCloud的generate_from_frequencies方法,根据sorted_word_freq中的词频信息生成词云图。
17. `plt.imshow(wordcloud, interpolation='bilinear')`:使用matplotlib的imshow函数将生成的词云图显示出来。设置插值方法为'bilinear',使得词云图中的文字更加清晰。
18. `plt.axis('off')`:关闭坐标轴。
19. `plt.title("文本词频统计")`:设置标题为"文本词频统计"。
20. `plt.show()`:调用show函数显示整个图形。
三、词云图主要有以下应用场景
1、新闻报道
在新闻报道中,词云图可以帮助记者快速梳理出热点事件的核心词汇。通过对新闻标题中出现的关键词进行统计,词云图可以将这些关键词按照权重进行排序,形成一个视觉化的热点词汇分布图。这样,记者可以迅速了解新闻事件的焦点,为报道提供有力的依据。
2、社交媒体
在社交媒体中,用户发布的文字、图片和视频等内容构成了一个庞大的信息网络。通过词云图分析,我们可以发现用户关注的焦点、热门话题以及情感倾向等信息。例如,对于一场公益活动的宣传,我们可以通过词云图分析出用户关注的核心词汇,从而优化宣传策略,提高活动的影响力。
3、舆情监控
在企业和政府部门中,舆情监控是一项重要的工作。通过对网络上的用户评论、发帖等数据进行分析,可以及时发现潜在的危机,为企业决策提供有力支持。词云图可以帮助我们快速识别出舆情关注的焦点,从而采取相应的措施进行应对。
4、产品评价
在电商、旅游等行业中,用户对产品和服务的评价是影响购买决策的重要因素。通过词云图分析,我们可以发现用户关注的核心词汇,如产品质量、价格、服务等方面。这些信息对于企业改进产品和服务具有重要的参考价值。
5、教育培训
在教育培训领域,词云图可以帮助教师和学生更好地理解课程内容。通过对教材中的重点知识点进行词云分析,教师可以更好地把握教学重点,学生也可以更清晰地掌握知识点之间的关系。此外,词云图还可以用于知识竞赛、论文查重等场景,提高学习效率。
6、广告投放
在广告投放过程中,词云图可以帮助广告商更好地了解目标受众的需求和兴趣。通过对广告标题中的关键词进行统计,词云图可以将这些关键词按照权重进行排序,形成一个视觉化的热点词汇分布图。这样,广告商可以更精准地进行广告创意设计,提高广告效果。
7、 在数据分析报告中,词云图可以帮助分析师更直观地展示数据特征。通过对报告中的关键数据进行词云分析,分析师可以更好地把握数据的变化趋势和规律,为决策提供有力支持。
总之,词云图作为一种直观、形象的数据可视化手段,在文本分析中具有广泛的应用前景。通过词云图,我们可以快速了解文本中的热点词汇,挖掘出有价值的信息,为各类场景提供有力的支持。
如运行有问题,可联系我,乐意为你解决。一起共同研究大数据分析模型。下一期将为你讲解情感分析模型。
每日为你分享更多干货