web-dev-qa-db-ja.com

python)のリスト内のアイテムのワードクラウドを生成する

 my_list=["one", "one two", "three"]

そして、私はこのリストのワードクラウドを使用して生成しています

 wordcloud = WordCloud(width = 1000, height = 500).generate(" ".join(my_list))

すべてのアイテムを文字列に変換しているので、Wordクラウドを生成しています

   "one","two","three"

 But I want to generate Word cloud for the values, "one","one two","three"

リスト内のアイテムのワードクラウドを生成するのを手伝ってください

7
pyd

一つの方法、

import matplotlib.pyplot as plt

#convert list to string and generate
unique_string=(" ").join(my_list)
wordcloud = WordCloud(width = 1000, height = 500).generate(unique_string)
plt.figure(figsize=(15,8))
plt.imshow(wordcloud)
plt.axis("off")
plt.savefig("your_file_name"+".png", bbox_inches='tight')
plt.show()
plt.close()

カウンター辞書を作成する別の方法は、

#convert it to dictionary with values and its occurences
from collections import Counter
Word_could_dict=Counter(my_list)
wordcloud = WordCloud(width = 1000, height = 500).generate_from_frequencies(Word_could_dict)

plt.figure(figsize=(15,8))
plt.imshow(wordcloud)
plt.axis("off")
#plt.show()
plt.savefig('yourfile.png', bbox_inches='tight')
plt.close()
9
pyd

WordCloudは、引数として正規表現を取ります。これを使用して、分割文字をスペースの代わりに+にすることができます。

regexp=r"\w[\w' ]+"

次に、単語のリストを+で結合する必要があります。また、これを使用して単語を分割します。結果は次のコードになります。

wordcloud = WordCloud(width=1000, height=500, regexp=r"\w[\w' ]+").generate("+".join(my_list))
1
ikkuh