使用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"字体文件。另外,还可以自定义遮罩图片,将词云图限制在特定的形状内。
