wordcloud.png

在当今数据爆炸的时代,能够从海量文本中提取有价值的信息成为了一个关键能力。无论是数据分析师、市场研究员还是内容创作者,都需要高效的工具来理解和可视化文本数据。

今天尝试了一下,使用 Python 来对文本进行分词,然后通过词云的方式展示词频,效果还不错,想着也应该写一篇文章来记录一下。

一共分为两步:

  1. 分词
  2. 生成词云

在这里,我使用了 jieba 库来进行中文分词,wordcloud 库来生成词云。

分词

分词是将连续文本切分成独立词语的过程。对于中文等词语边界不明显的语言,分词尤为重要。

分词技术主要有三种方法:

  1. 基于规则的分词:通过预设的词典和规则进行切分,速度快,但依赖词典更新。
  2. 基于统计的分词:通过对大规模语料进行训练,统计词频、词间关联度,实现自动切分,适应性强。
  3. 基于深度学习的分词:结合神经网络,通过上下文理解文本,效果更佳,但计算资源要求较高。

在 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()