【问题标题】:Create wordcloud from dictionary values从字典值创建 wordcloud
【发布时间】:2017-08-25 23:48:43
【问题描述】:

我刚刚编写了一个脚本,该脚本从数千个 XML 文件中提取了 Dutch Parlement 中的所有语音文本。对于每个说话者,它都会计算说话者说出某些单词的次数。

完成此操作后,我计算了荷兰议会中每个发言者的每个单词的 TF * IDF 值。如果您对此不熟悉,请参阅此链接:TF IDF explanation

所以现在我为荷兰议会中的每个演讲者准备了一本字典,其中键是他所说的单词,值是相应的 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 的任何帮助将不胜感激。

提前致谢!

【问题讨论】:

  • github.com/amueller/word_cloud/issues/207 之后,您应该可以在其中执行WordCloud().generate_from_frequencies(MyData),其中 MyData 是一个字典。
  • @fredtantini - 你的建议对我有用。您应该将其发布为答案并获得一些甜蜜的业力点:)。

标签: python python-2.7 dictionary word-cloud


【解决方案1】:
dictionary= {u'asielzoekers': 0.0034861170591325486,.. u'samsom': 0.0019304632325980841} 


from PIL import Image
import matplotlib.pyplot as plt
from wordcloud import WordCloud

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)

【讨论】:

  • 似乎 wordcloud 不适用于 python >= 3.7
【解决方案2】:
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)

我们得到:

【讨论】:

    【解决方案3】:

    用字典创建 Wordcloud

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

    使用 WordCloud 的以下模块方法从字典名称-值对值生成可视化的 wordcloud 图像:generate()generate_from_text()generate_from_frequencies() 在我尝试了很多次之后无法解决如何克服这个问题问题。

    检查 Stack Overflow 是否有任何解决方法后,我尝试在我的程序中从上述答案中复制解决方案。它没有解决我遇到的问题,即创建和显示 wordcloud 图像时出现TypeError 异常。

    从他们的官方模块站点检查"WordCloud API Documentation" 后,我发现您必须手动使用称为“multidict”的东西。它是一个 Python 模块,它的作用就像一个字典,利用..

    "[a] 键值对的集合,其中键可能出现的次数超过 一次在容器中”

    -引用自Multidict's main PyPi introductory page

    摘自“WordCloud's Gallery of Example” 页面,这里是使用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

    【讨论】:

      猜你喜欢
      • 2015-04-08
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 2016-11-20
      • 1970-01-01
      • 2021-05-01
      相关资源
      最近更新 更多