我刚刚写了一个脚本,它提取了几千个XML文件的Dutch Parlement中的所有语音文本。对于每个发言者,它都会计算说话者说出一些话的次数。
执行此操作后,我计算了荷兰语Parlement中每个发言者的每个单词的TF * IDF值。如果您对此不熟悉,请参阅此链接:TF IDF explanation
所以现在我在荷兰语Parlement中为每个发言者提供了一个字典,其中的键是他所说的单词,其值是相应的TF * IDF值:
{u'asielzoekers': 0.0034861170591325486,
u'belastingverlaging': 0.0018551991553514675,
u'buma': 0.0020712555982839408,
u'islam': 0.0029519544163739155,
u'moslims': 0.0027958002747301355,
u'ouderen': 0.0022803123245457566,
u'pechtold': 0.0021525864470786928,
u'president': 0.003281844532743345,
u'rutte': 0.0023488684001475584,
u'samsom': 0.0019304632325980841}
现在我想从这些值创建一个wordcloud。我很快就查看了由 amueller 编写的wordcloud模块但是,据我所知,这个模块不能使用字典而只是纯文本。
因此,任何有关如何从字典值创建wordcloud的帮助都将受到高度赞赏。
提前致谢!
答案 0 :(得分:2)
dictionary= {u'asielzoekers': 0.0034861170591325486,.. u'samsom': 0.0019304632325980841}
from PIL import Image
import matplotlib.pyplot as plt
wc = WordCloud(background_color="white",width=1000,height=1000, max_words=10,relative_scaling=0.5,normalize_plurals=False).generate_from_frequencies(dictionary)
plt.imshow(wc)
答案 1 :(得分:1)
import matplotlib.pyplot as plt
from wordcloud import WordCloud
word_could_dict = {'Git':100, 'GitHub':100, 'push':50, 'pull':10, 'commit':80, 'add':30, 'diff':10,
'mv':5, 'log':8, 'branch':30, 'checkout':25}
wordcloud = WordCloud(width = 1000, height = 500).generate_from_frequencies(word_could_dict)
plt.figure(figsize=(15,8))
plt.imshow(wordcloud)
答案 2 :(得分:0)
使用 WordCloud 的以下模块方法从字典名称-值对值生成可视化的 wordcloud 图像:generate()
、generate_from_text()
和 generate_from_frequencies()
在我尝试了很多次之后无法正常工作了解如何克服这个问题。
检查堆栈溢出是否有任何解决方法,我尝试在我的程序中复制上述答案中的解决方案。它没有解决我遇到的问题,即创建和显示 wordcloud 图像时出现 TypeError
异常。
从他们的官方模块站点检查 "WordCloud API Documentation" 后,我发现您必须手动使用称为“multidict”的东西。它是一个 Python 模块,它的作用就像一个字典,使用..
<块引用>"[a] 键值对的集合,其中键可能出现的次数超过 一旦在容器中"
- 引用自 Multidict's main PyPi introductory page
摘自“WordCloud 示例库” 页面,这里是使用 multidict
模块构建频率字典的片段wordcloud 显示:
import multidict as multidict
...
def getFrequencyDictForText(sentence):
# instantiate multidict object
fullTermsDict = multidict.MultiDict()
tmpDict = {}
# making dict for counting frequencies
for text in sentence.split(" "):
...
val = tmpDict.get(text, 0)
tmpDict[text.lower()] = val + 1
for key in tmpDict:
fullTermsDict.add(key, tmpDict[key])
return fullTermsDict
def makeImage(text):
alice_mask = np.array(Image.open("alice_mask.png"))
# instantiate and define wordcloud properties
wc = WordCloud(background_color="white", max_words=1000, mask=alice_mask)
# generate wordcloud
wc.generate_from_frequencies(text)
# display and show "wc"
plt.imshow(wc, interpolation="bilinear")
plt.show()
...
...
注意:这不是完整的来源。要查看完整代码,请查看 Amueller WordCloud website