Как я могу сгруппировать термины из нескольких слов при создании Python Wordcloud? - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь создать облако слов, используя python, из списка ингредиентов, некоторые из которых имеют более одного слова в названии. Я бы хотел, чтобы wordcloud рассматривал эти имена как отдельные элементы, но я не знаю, как этого добиться. Например:

import wordcloud as w
import numpy as np
import matplotlib.pyplot as plt

ingredients = ['cabernet sauvignon', 'apple', 'black pepper',
             'rice', 'smoked salmon',
             'dried tomato', 'butter', 'mushroom', 'goat cheese']
frequencies = [55, 83, 33, 42, 19, 23, 5, 69, 1]

# Wordcloud asks for a string, and I have tried separating the terms with ',' and '~'

text = ''
for i, word in enumerate(ingredients):
    text = text + frequencies[i] * (word + ',') 

wordcloud = w.WordCloud(collocations = False).generate(text)

plt.imshow(wordcloud, interpolation = 'bilinear')
plt.axis("off")
plt.show()

Полученное слово-облако выглядит следующим образом. Но, например, я бы хотел, чтобы термин «каберне совиньон» отображался как одно слово.

https://i.imgur.com/ljXk8T6.png

1 Ответ

1 голос
/ 08 октября 2019

Создайте dict в форме {phrase: count, ...} и используйте generate_from_frequencies:

d = dict(zip(ingredients, frequencies))
wordcloud = w.WordCloud(collocations=False).generate_from_frequencies(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...