В предыдущем вопросе я спросил сообщество о том, как посчитать частоту каждых двух слов подряд в предложении, и я получил отличный ответ! теперь я пытаюсь построить облако слов из результатов, используя пакет pytagcloud.
Проблема, которая у меня есть, заключается в том, что созданные изображения переполнены, а слова сливаются друг с другом. есть идеи, есть ли функция для разделения слов и их читаемости, или есть ли альтернативный способ сделать это в python.
Спасибо!
Мой код ниже. это ссылка текста, который я использовал для теста. Я пытался использовать меньшее количество словосочетаний, но это не изменило скученность текста на картинке.
Я также добавил несколько функций, таких как игра с «макетом» и «размером» и «fontname='Lobster' и fontzoom=1" но ни один из них не дает оптимальных результатов, которые представляют собой чистое изображение облака слов, где слова не переполнены.
import operator
import urllib2
from roundup.backends.indexer_common import STOPWORDS
import requests, collections, bs4
Data = "TEXT FROM The link above- TEXT file"
two_words = [' '.join(ws) for ws in zip(Data, Data[1:])]
wordscount = {w:f for w, f in Counter(two_words).most_common() if f > 12}
sorted_wordscount = sorted(wordscount.iteritems(), key=operator.itemgetter(1))
print sorted_wordscount;
from pytagcloud import create_tag_image, create_html_data, make_tags, LAYOUT_HORIZONTAL, LAYOUTS, LAYOUT_MIX, LAYOUT_VERTICAL, LAYOUT_MOST_HORIZONTAL, LAYOUT_MOST_VERTICAL
from pytagcloud.colors import COLOR_SCHEMES
from pytagcloud.lang.counter import get_tag_counts
create_tag_image(make_tags(sorted_wordscount), 'filename.png', size=(1300,1150), background=(0, 0, 0, 255), layout=LAYOUT_MIX, fontname='Molengo', rectangular=True)
Это пример результатов вывода, которые я получаю: ЗДЕСЬ
Оптимальный результат будет похож на один изображений ЗДЕСЬ