Как использовать шрифт Arial при создании облака слов при использовании Python3 в Google-Colab? - PullRequest
1 голос
/ 25 апреля 2019

У меня есть набор данных текстов в твиттере, который представляет собой смесь английского, арабского и фарси. Я хотел создать облако слов из этого. К сожалению, мое облако слов показывает пустые квадраты для арабских и персидских слов на фотографии. Мне довелось услышать о трех способах решения этой проблемы:

  1. Использование разных кодировок: я пробовал "UTF-8", "UTF-16", "UTF-32" и "ISO-8859-1", которые не устранили проблему

  2. Использование arabic_reshaper: не работает

  3. Использование шрифта, который одновременно поддерживает три языка, таких как шрифт «Arial»: при попытке изменить шрифт на Arial в облаке слов я получаю следующую ошибку:

ввод

wordcloud = WordCloud(font_path = 'arial',stopwords = stopwords, background_color = "white", max_font_size = 50, max_words = 100).generate(reshaped_text)

plt.imshow(wordcloud, interpolation='bilinear')

plt.axis("off")

plt.show()

выход

cannot open resource

Этот код хорошо работает в Anaconda, но не в Google-Colab. Единственное, что нужно решить, это , какой путь я должен ввести для font_path в Google-Colab

Ответы [ 2 ]

2 голосов
/ 26 апреля 2019

С персидским языком вам нужно решить три задачи:

  1. Персидский символ отображается неправильно.Это решит либо кодировку, либо шрифт, который, я думаю, вы решили.
  2. Персидский символ появляется, но они разделены, в этом случае вам следует использовать функцию arabic_reshaper reshape.Имейте в виду, что это не решит вашу проблему полностью, и вам нужен шаг 3.
  3. Персидские слова, написанные слева направо, вы должны решить эту проблему с помощью библиотеки python-bidi.

Для примера я успешно создал облако слов со следующим кодом:

import matplotlib.pyplot as plt
import arabic_reshaper
from bidi.algorithm import get_display
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

txt = '''I would love to try or hear the sample audio your app can produce. I    do not want to purchase, because I've purchased so many apps that say they do something and do not deliver.  

Can you please add audio samples with text you've converted? I'd love to see the end results.

Thanks!

سلام حال سلام سلام سلام حال شما چطوره است نیست

'''

word_cloud = WordCloud(font_path='arial', stopwords=STOPWORDS, background_color="white", max_font_size=50, max_words=100)
word_cloud = word_cloud.generate_from_text(get_display(arabic_reshaper.reshape(txt)))

plt.imshow(word_cloud, interpolation='bilinear')
plt.axis("off")
plt.show()
1 голос
/ 26 апреля 2019

Я загрузил шрифт на свой google-диск и использовал этот код, который работал:

wordcloud = WordCloud(font_path='/content/drive/My Drive/ARIAL.TTF',stopwords=stopwords, background_color="white", max_font_size=50, max_words=100).generate(get_display(arabic_reshaper.reshape(all_tweets)))

...