|
|
#第一种普通词云图,下面第二种奖杯词云图,暂时注释掉了
|
|
|
import os
|
|
|
import jieba
|
|
|
from wordcloud import WordCloud
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
directory = 'E:\前端\软件工程\弹幕收集按序'
|
|
|
|
|
|
#合并所有文件内容
|
|
|
text = ""
|
|
|
for filename in os.listdir(directory):
|
|
|
if filename.endswith('.txt'):
|
|
|
with open(os.path.join(directory, filename), 'r', encoding='utf-8') as file:
|
|
|
text += file.read()
|
|
|
|
|
|
words = jieba.cut(text)
|
|
|
|
|
|
#停用词列表
|
|
|
stop_words = set([
|
|
|
"我", "你", "他", "她", "它", "是", "的", "了", "在", "吗", "啊", "吧",
|
|
|
"也", "有", "这", "那", "从", "为", "上", "下", "和", "与", "就", "不",
|
|
|
"中", "还", "要", "会", "能", "对", "着", "个", "把", "所以", "但", "也",
|
|
|
"所以", "从", "如", "她", "他", "它", "还", "也", "吗", "啊", "哦", "?", "!",",","。"
|
|
|
])
|
|
|
|
|
|
#过滤停用词
|
|
|
filtered_words = [word for word in words if word.strip() and word not in stop_words]
|
|
|
|
|
|
#词频统计
|
|
|
word_freq = {}
|
|
|
for word in filtered_words:
|
|
|
word_freq[word] = word_freq.get(word, 0) + 1
|
|
|
|
|
|
#生成词云
|
|
|
wordcloud = WordCloud(font_path='simsun.ttc', width=800, height=400, background_color='white').generate_from_frequencies(word_freq)
|
|
|
|
|
|
# 显示词云
|
|
|
plt.figure(figsize=(10, 5))
|
|
|
plt.imshow(wordcloud, interpolation='bilinear')
|
|
|
plt.axis("off")
|
|
|
plt.show()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#第二种奖杯词云图
|
|
|
|
|
|
# from wordcloud import WordCloud, STOPWORDS
|
|
|
# import matplotlib.pyplot as plt
|
|
|
# import numpy as np
|
|
|
# import jieba.posseg as pseg
|
|
|
# from collections import Counter
|
|
|
# import PIL.Image as Image
|
|
|
# from matplotlib import colors
|
|
|
# import os
|
|
|
|
|
|
# directory = 'E:\\前端\\软件工程\\弹幕收集按序'
|
|
|
|
|
|
# #合并所有文件内容
|
|
|
# text = ""
|
|
|
# for filename in os.listdir(directory):
|
|
|
# if filename.endswith('.txt'):
|
|
|
# with open(os.path.join(directory, filename), 'r', encoding='utf-8') as file:
|
|
|
# text += file.read()
|
|
|
|
|
|
# words = pseg.cut(text)
|
|
|
|
|
|
# #按指定长度和词性提取词
|
|
|
# report_words = []
|
|
|
# for word, flag in words:
|
|
|
# if (len(word) >= 2) and ('n' in flag): #提取的是名词
|
|
|
# report_words.append(word)
|
|
|
|
|
|
# #统计高频词汇
|
|
|
# result = Counter(report_words).most_common(300)
|
|
|
|
|
|
# #建立词汇字典
|
|
|
# content = dict(result)
|
|
|
# #输出词频统计结果
|
|
|
# for i in range(50):
|
|
|
# word,flag=result[i]
|
|
|
# print("{0:<10}{1:>5}".format(word,flag))
|
|
|
|
|
|
# #设置停用词
|
|
|
# stopwords = set(STOPWORDS)
|
|
|
# stopwords.update(["我", "你", "他", "她", "它", "是", "的", "了", "在", "吗", "啊", "吧",
|
|
|
# "也", "有", "这", "那", "从", "为", "上", "下", "和", "与", "就", "不",
|
|
|
# "中", "还", "要", "会", "能", "对", "着", "个", "把", "所以", "但", "也",
|
|
|
# "所以", "从", "如", "她", "他", "它", "还", "也", "吗", "啊", "哦", "?", "!", ",", "。"])
|
|
|
|
|
|
# #设置png掩膜
|
|
|
# background = Image.open("E:\前端\奖杯4.png").convert('RGB')
|
|
|
# mask = np.array(background)
|
|
|
|
|
|
# font_path = r"C:\Windows\Fonts\STLITI.TTF"
|
|
|
|
|
|
# max_font_size =100
|
|
|
# min_font_size =10
|
|
|
|
|
|
# #建立颜色数组,可随意更改显示颜色
|
|
|
# color_list = ['#FF274B']
|
|
|
# #调用颜色数组
|
|
|
# colormap = colors.ListedColormap(color_list)
|
|
|
|
|
|
# #生成词云
|
|
|
# wordcloud = WordCloud(scale=4, #输出清晰度
|
|
|
# font_path=font_path, #输出路径
|
|
|
# colormap=colormap, #字体颜色
|
|
|
# width=1600, #输出图片宽度
|
|
|
# height=900, #输出图片高度
|
|
|
# background_color='white', #图片背景颜色
|
|
|
# stopwords=stopwords, #停用词
|
|
|
# mask=mask, #掩膜
|
|
|
# max_font_size=max_font_size, #最大字体大小
|
|
|
# min_font_size=min_font_size) #最小字体大小
|
|
|
# wordcloud.generate_from_frequencies(content)
|
|
|
|
|
|
# #使用 matplotlib 显示词云
|
|
|
# plt.imshow(wordcloud, interpolation='bilinear')
|
|
|
# plt.axis('off')
|
|
|
# plt.show()
|
|
|
# #保存词云图
|
|
|
# wordcloud.to_file("wordcloud.png")
|