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

使用Python生成中文文本的独特词云图

发布时间:2023-12-17 05:11:34

生成中文文本的独特词云图可以通过Python的wordcloud库实现。首先,需要安装wordcloud库和jieba库,可以使用pip命令进行安装:

pip install wordcloud
pip install jieba

下面是一个使用示例,用于生成中文文本的独特词云图:

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image

# 读取文本文件并分词
def read_file(filename):
    with open(filename, 'r', encoding='utf-8') as f:
        text = f.read()
    seg_list = jieba.cut(text)
    words = ' '.join(seg_list)
    return words

# 加载停止词表
def load_stopwords(filename):
    stopwords = set()
    with open(filename, 'r', encoding='utf-8') as f:
        for line in f:
            stopwords.add(line.strip())
    return stopwords

# 生成词云图
def generate_wordcloud(words, stopwords, mask_image=None):
    wordcloud = WordCloud(background_color='white', 
                          max_words=200, 
                          max_font_size=100,
                          min_font_size=10,
                          font_path='simsun.ttf',  # 使用中文字体
                          stopwords=stopwords, 
                          mask=mask_image)
    wordcloud.generate(words)

    # 显示词云图
    plt.figure(figsize=(8, 8))
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis('off')
    plt.show()

# 主函数
def main():
    # 读取文本文件
    words = read_file('example.txt')

    # 加载停止词表
    stopwords = load_stopwords('stopwords.txt')

    # 加载遮罩图片(可选)
    mask_image = Image.open('mask.png')

    # 生成词云图
    generate_wordcloud(words, stopwords, mask_image)

if __name__ == '__main__':
    main()

在上面的示例中,首先需要定义一个read_file函数,用于读取中文文本文件并进行分词。然后,使用jieba库对文本进行分词处理,将分词结果转换为字符串。接下来,可以定义一个load_stopwords函数用于加载停止词表,用于过滤常用词语。停止词表是一个文本文件,每行一个停止词。

然后,可以使用WordCloud类的实例来生成词云图。在生成词云图时,可以设置指定的参数,例如背景颜色、最大词数、最大字体大小、最小字体大小、中文字体等。还可以通过读取遮罩图片的方式,将词云图限制在指定的形状内。

最后,在主函数中先读取文本文件、加载停止词表,然后调用generate_wordcloud函数生成并显示词云图。在显示词云图时,可以设置图像大小等参数。

需要注意的是,生成中文文本的独特词云图需要使用中文字体,上述示例中使用了"simsun.ttf"字体文件。另外,还可以自定义遮罩图片,将词云图限制在特定的形状内。