词云图未正确显示单词的频率。

9
我已经在词云中绘制了我的文本数据。 这是我拥有的数据框架。
vocab   sumCI
aid      3
tinnitu  3
sudden   3
squamou  3
saphen   3
problem  3
prednison 3
pain    2
dysuria 3
cancer  2

然后我将它转换为字符串,就像这样。(实际上,我已经复制了数据框中每个单词出现的次数,然后将其提供给函数):

aid aid aid tinnitu tinnitu tinnitu sudden sudden sudden squamou squamou squamou

然后我使用这段代码来可视化文本数据:
def generate_wordcloud(text): # optionally add: stopwords=STOPWORDS and change the arg below
    wordcloud = WordCloud(
                          background_color="white",
                          width=1200, height=1000,
                          relative_scaling = 1.0,
                          collocations=False
                          ).generate(text)
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()

cidf=cidf.loc[cidf.index.repeat(cidf['sumCI'])].reset_index(drop=True)
strCI = ' '.join(cidf['vocab'])
print(strCI)
generate_wordcloud(strCI)

然后结果就像这样:
你会发现大多数单词重复了2或3次,但它们在词云中的大小并没有显示出来。即使是相同大小的单词,它们的大小也有很大的差异!
word_cloud_pic
例如:
例如,在此数据框中查看“tinnitu”和“dysuria”,它们的频率都为3,“tinnitu”很大,但“dysuria”很小,很难找到。
谢谢 :)

虽然你可能不喜欢输出结果,但这并不意味着它是错误的。你有没有像证据一样可以证明它是“错误”的? - DisappointedByUnaccountableMod
@barny 谢谢你的回答。从数据框的计数和词云的输出可以清楚地看出,它并不一定显示计数!但在文档中已经提到,更大的单词具有更高的频率。例如,在这个数据框中看看 "tinnitu" 和 "dysuria",它们都有3个频率,tinnitu相当大,但是dysuria你会发现很难找到,因为它非常小。 - sariii
1
所以看一下WordCloud的源代码,向作者提出问题,检查代码... - DisappointedByUnaccountableMod
1个回答

6

经过大量搜索,我找到了解决方法。我最终使用了generate_from_frequencies(text)而不是仅仅使用generate。 但是如果频率相同的话,它们的大小并不相同。

如果你看一下文档,他们也提到了排名或顺序(这是我真的无法理解的事情,他们最好将其作为一个选项。例如,如果算法看到相同的频率,应该采取什么方法:1.基于顺序 2.不做任何处理并给出相同的大小)。

根据我的研究和输出,当它看到相同的频率并且基于它所拥有的空间时,它可能会改变大小,这是不好的。

我的说法只是基于我的实验和阅读文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接