欢迎访问宙启技术站
智能推送

有效利用STOPWORDS生成中文词云的关键技巧

发布时间:2023-12-25 04:51:38

中文词云是一种可视化工具,用于展示文本中关键词的频率分布情况。而停用词(STOPWORDS)是一类在文本分析中经常用到的词语列表,它们通常包含一些常见的、无实际意义的词语,如介词、连词、代词等,这些词在文本分析中往往无法带来有效的信息,因此在制作中文词云时往往需要去掉这些停用词,以避免干扰关键词的展示效果。

在生成中文词云时,有效利用停用词可以提高关键词的准确性和可读性。以下是一些使用例子和关键技巧,帮助你更好地利用停用词生成中文词云:

1. 导入相关库和停用词表:

   import jieba
   from wordcloud import WordCloud, STOPWORDS
   

2. 加载停用词表:

   stopwords = set(STOPWORDS)
   

3. 分词并过滤停用词:

   text = "这是一段待处理的中文文本"
   wordlist = jieba.cut(text)
   filtered_words = [word for word in wordlist if word not in stopwords]
   

4. 统计词频:

   word_freq = {}
   for word in filtered_words:
       if word in word_freq:
           word_freq[word] += 1
       else:
           word_freq[word] = 1
   

5. 创建词云图:

   wc = WordCloud(background_color="white", max_words=200, width=800, height=400, contour_color='steelblue')
   wc.generate_from_frequencies(word_freq)
   

6. 可选:自定义词云图样式:

   wc.set_font_path('SimSun.ttf')  # 设置字体
   wc.set_mask(image_path)  # 设置词云形状
   wc.recolor(color_func=grey_color_func, random_state=3)  # 自定义颜色
   

7. 可选:显示词云图:

   import matplotlib.pyplot as plt
   
   plt.imshow(wc, interpolation='bilinear')
   plt.axis("off")
   plt.show()
   

通过上述步骤,你可以生成一张中文词云图,其中包含了有效利用停用词的关键技巧。下面是一个完整的例子,展示如何生成一个基于《红楼梦》文本的中文词云图:

import jieba
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt

# 加载停用词表
stopwords = set(STOPWORDS)

# 读取文本
with open('hongloumeng.txt', 'r', encoding='utf-8') as f:
    text = f.read()

# 分词并过滤停用词
wordlist = jieba.cut(text)
filtered_words = [word for word in wordlist if word not in stopwords]

# 统计词频
word_freq = {}
for word in filtered_words:
    if word in word_freq:
        word_freq[word] += 1
    else:
        word_freq[word] = 1

# 创建词云图
wc = WordCloud(background_color="white", max_words=200, width=800, height=400, contour_color='steelblue')
wc.generate_from_frequencies(word_freq)

# 设置字体和形状
wc.set_font_path('SimSun.ttf')
wc.set_mask('hongloumeng.png')

# 显示词云图
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()

通过上述代码,你将可以生成一张基于《红楼梦》文本的中文词云图。你可以根据自己的需要,调整参数和自定义词云图的样式,以更好地展示关键词的频率分布情况。