J'ai un ensemble de données de textes Twitter qui est un mélange d'anglais, d'arabe et de farsi. Je voulais en créer un nuage de mots. Malheureusement, mon nuage de mots montre des carrés vides pour les mots arabes et persans sur la photo. J'ai entendu parler de trois façons de résoudre ce problème:
En utilisant différents encodages: j'ai essayé "UTF-8", "UTF-16", "UTF-32" et "ISO-8859-1" qui n'ont pas résolu le problème
li>Utiliser arabic_reshaper: n'a pas fonctionné
Utilisation d'une police qui prend en charge simultanément les trois langues comme la police "Arial": en essayant de changer la police en Arial dans le nuage de mots, je reçois l'erreur suivante:
cannot open resource
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()
Ce code fonctionne bien dans Anaconda mais pas dans Google-Colab. La seule chose à résoudre est quel chemin dois-je entrer pour font_path dans Google-Colab
3 Réponses :
Avec la langue persane, vous avez trois problèmes à résoudre:
arabic_reshaper
de reshape
. Gardez à l'esprit que cela ne résout pas complètement votre problème et que vous avez besoin de l'étape 3. python-bidi
. Pour un exemple, j'ai réussi à créer un nuage de mots avec le code suivant:
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()
Oui merci, mais la partie principale de mon problème demeure qui est de donner le chemin correct aux arguments font_path. J'ai également essayé font_path = '/ Library / Fonts / Arial.ttf' qui a à nouveau renvoyé la même erreur (impossible d'ouvrir la source). Veuillez noter que mes textes en persan et en arabe sont imprimés correctement mais ne sont pas affichés sur la photo du nuage de mots. PS. J'utilise google-colab
J'ai exécuté votre code sur ma plate-forme locale et cela a fonctionné là-bas. Il semble que google-colab soit le cas. Juste si vous pouviez trouver le moyen de donner une police arial à l'argument font_path, je suppose que ce sera fait. Merci beaucoup encore
J'ai téléchargé la police sur mon lecteur Google et utilisé ce code qui a fonctionné:
wordcloud = WordCloud (font_path = '/ content / lecteur / Mon lecteur / ARIAL.TTF', stopwords = mots vides, background_color = "white", max_font_size = 50, max_words = 100) .generate (get_display (arabic_reshaper) .reshape (all_tweets)))
Vous voudrez peut-être tester ces bibliothèques de nuages de mots spécifiques pour le persan.
Vérifiez-les aussi:
et
Je pense que vous n'abordez pas correctement le dossier. Il doit s'agir de quelque chose comme ceci:
wordcloud = WordCloud (font_path = '/ Library / Fonts / Arial.ttf'). Generate (tex t)
oui, je suppose que je dois corriger le font_path, mais celui que vous avez mentionné a également renvoyé la même erreur. Au fait, j'utilise la plateforme google-colab.
Ce code fonctionne bien dans Anaconda mais pas dans Google-Colab. La seule chose à résoudre est de savoir quel chemin dois-je entrer pour font_path dans Google-Colab