我在Python中使用andreasmueller编写的wordcloud模块来可视化学生将要完成的一项调查的结果。很棒的模块,非常漂亮的图片,但是我很难让它识别所有的单词,即使是在设置stopwords=None
和{
这里有一个例子。首先,我在Jupyter笔记本中安装依赖项:
import matplotlib.pyplot as plt
%matplotlib inline
from wordcloud import WordCloud
from scipy.misc import imread
然后假设我将所有的响应放入一个字符串中:
^{pr2}$然后我执行这个情节:
wordcloud = WordCloud(ranks_only = True,stopwords=None).generate(words)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
但由于某些原因,它忽略了“做”和“fa-so”,尽管它们的频率很高。在
有什么提示吗?除了“不要用云”这个词。这是一个愚蠢的调查,它邀请了一个愚蠢的想象。谢谢。在
更新
仍然不能包括连字符的单词(例如“fa-so”),它们就退出了。在
看着wordcloud.py,如果stopwords参数为None,则它使用内置的stopwords集-因此您不会禁止使用stopwords。尝试用
stopwords=set()
调用它。在中的内置标记化wordcloud.py将一个单词识别为一系列字母数字字符(因此fa-so被拆分为fa-so),忽略大小写,同时合并简单的复数(例如dogs到dog)并忽略单个数字。如果您想绕过这个问题,您需要构建一个元组列表,每个元组都包含一个单词及其频率,然后调用WordCloud.generate_from_频率(频率)。在
我无法安装wordcloud,但在wordfreq函数中使用\S+(即,它将连续的非空白字符识别为一个单词)进行的这种简化标记化绝对有效:
您可以查看的源代码wordcloud.py-您可以直接或更安全地修改它,并且可以像这个例子一样扩展/修改行为。在
相关问题 更多 >
编程相关推荐