1
votes

Comment utiliser la police Arial lors de la création d'un nuage de mots tout en utilisant Python3 dans Google-Colab?

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:

  1. 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>
  2. Utiliser arabic_reshaper: n'a pas fonctionné

  3. 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 commentaires

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


3 Réponses :


2
votes

Avec la langue persane, vous avez trois problèmes à résoudre:

  1. Les caractères persans ne s'affichent pas correctement. Cela résoudra soit avec l'encodage, soit la police, ce que je pense que vous l'avez résolu.
  2. Le caractère persan apparaît mais il est séparé, dans ce cas vous devez utiliser la fonction 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.
  3. Mots persans écrits de gauche à droite, vous devriez résoudre ce problème avec la bibliothèque 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()


2 commentaires

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



1
votes

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)))


0 commentaires

1
votes

Vous voudrez peut-être tester ces bibliothèques de nuages ​​de mots spécifiques pour le persan.

Vérifiez-les aussi:

 entrez la description de l'image ici

et

 entrez la description de l'image ici


0 commentaires