在当今数据爆炸的时代,能够从海量文本中提取有价值的信息成为了一个关键能力。无论是数据分析师、市场研究员还是内容创作者,都需要高效的工具来理解和可视化文本数据。
今天尝试了一下,使用 Python 来对文本进行分词,然后通过词云的方式展示词频,效果还不错,想着也应该写一篇文章来记录一下。
一共分为两步:
- 分词
- 生成词云
在这里,我使用了 jieba
库来进行中文分词,wordcloud
库来生成词云。
分词
分词是将连续文本切分成独立词语的过程。对于中文等词语边界不明显的语言,分词尤为重要。
分词技术主要有三种方法:
- 基于规则的分词:通过预设的词典和规则进行切分,速度快,但依赖词典更新。
- 基于统计的分词:通过对大规模语料进行训练,统计词频、词间关联度,实现自动切分,适应性强。
- 基于深度学习的分词:结合神经网络,通过上下文理解文本,效果更佳,但计算资源要求较高。
在 Python 中,jieba
库是一个流行的中文分词工具,它主要基于规则和统计的分词方法,不过,同时也支持基于深度学习的分词。
下面是一个使用示例:
import jieba
text = "人工智能正在改变我们的生活方式"
words = jieba.cut(text, cut_all=False)
print(" ".join(words))
输出:
人工智能 正在 改变 我们 的 生活 方式
更多关于 jieba
的使用方法,可以查看官方文档:jieba
生成词云
词云是一种将文本数据中的关键词以视觉化方式展示的技术。它能直观地反映文本中词语的重要性和频率。
Python 的 wordcloud
库提供了强大的词云生成功能。下面是一个基本示例:
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 假设我们已经有了分词后的文本
word_list = "人工智能 大数据 云计算 区块链 物联网"
wordcloud = WordCloud(
font_path='path/to/chinese/font.ttf', # 中文字体路径
width=800,
height=400,
background_color='white'
).generate(word_list)
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
更多关于 wordcloud
的使用方法,可以查看官方文档:wordcloud
。
一个完整的例子
下面是一个完整的例子,将分词和生成词云结合起来,根据多个招聘岗位的描述生成词云:
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
text = """
· 负责公司区块链项目中台代码编写,与前端对接;
· 与合约工程师配合进行合约联调,实现与链端交互;
· 深入了解业务背景,能抽象业务需求,负责数据应用、数据服务层的设计与研发;
· 负责中台服务的部署、性能监控和故障排除;
...
"""
words = jieba.cut(text, cut_all=False)
words = [word for word in words if word not in ['和', '的', '与', '相关', '有', '并', '如', '或', '对']]
word_list = " ".join(words)
# 设置词云参数
wordcloud = WordCloud(
font_path='simhei.ttf',
width=800,
height=400,
background_color='white',
max_words=200,
max_font_size=100,
random_state=42
).generate(word_list)
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()