我一直在使用Python的wordcloud
包来绘制wordcloud
。这是代码示例:
from wordcloud import WordCloud, STOPWORDS
import matplotlib
import matplotlib.pyplot as plt
stopwords = set(STOPWORDS)
def show_wordcloud(data, title = None):
wordcloud = WordCloud(
background_color='black',
stopwords=stopwords,
max_words=200,
max_font_size=40,
scale=3,
random_state=1 # chosen at random by flipping a coin; it was heads
).generate(str(data))
fig = plt.figure(1, figsize=(15, 15))
plt.axis('off')
if title:
fig.suptitle(title, fontsize=20)
fig.subplots_adjust(top=2.3)
matplotlib.rcParams.update({'font.size': 22})
plt.title('Most Used Words for Emotion Tag 2 (What is the highlight?)')
plt.imshow(wordcloud)
plt.savefig('2.jpg')
plt.show()
show_wordcloud(df2['words'])
现在,我从Wordcloud的官方文档中了解到,最常见的不停词似乎更大,但是这里出现的than叫声比孟加拉语高。但是当我检查一下鸣叫的频率时:
In [20]: df2[df2['words'].str.contains("Chirping")]
Out[20]: words tagid
Chirping of birds 2
Chirping of birds 2
现在,当我检查孟加拉的频率时:
In [21]: df2[df2['words'].str.contains("Bengal")]
Out[21]: words tagid
The mighty Bay Of Bengal 2
Royal Bengal Tigers 2
#NammaBengaluru 2
Traditional Bengali Meal 2
Royal Bengal Tiger 2
Enterning Taj Bengal. 2
“孟加拉语”在“徒步旅行”左侧的单词“ Part”下方显示为黄色的黄色。
现在我不明白为什么会这样,或者我怎么解决。我也想知道是否有一种方法可以从wordcloud
中删除介词,例如在旁边,旁边,里面等。
有没有一种方法可以分配权重或频率,然后绘制wordcloud
?
答案 0 :(得分:0)
您可以发布“数据”变量的示例输出吗?整个文本传递到画布对象时可能会出现。
您可以使用getFrequencyDictForText()
API根据文本中单词的频率分配权重,以获取文本的频率,并使用makeImage()
生成画布。
请在此处参考API文档:https://amueller.github.io/word_cloud/auto_examples/frequency.html#sphx-glr-auto-examples-frequency-py
答案 1 :(得分:0)
频率保存在 word_
类型的 WordCloud
属性中。它以字典类型保存,如下所示:
{
'word1': 1.00,
'word2': 0.980093876357,
'word3': 0.978478648733,
...
}
所以,玩它。下面的函数将值取反,使频率最低的值最高。
def invert_wc(wc):
keys = list(wc.words_.keys())
values = list(wc.words_.values())
values.reverse()
wc.words_ = dict(zip(keys, values))
return wc
然后,只需生成它:
wc.generate_from_frequencies(wc.words_)
这不是灵丹妙药,必须针对每个案例进行分析。