从字典值

时间:2017-03-31 16:10:12

标签: python python-2.7 dictionary word-cloud

我刚刚写了一个脚本,它提取了几千个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的帮助都将受到高度赞赏。

提前致谢!

3 个答案:

答案 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)

我们得到: enter image description here

答案 2 :(得分:0)

用词典创建词云

05/02/21 | 2021 年 2 月 5 日 |

使用 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