iamaziz / ar_wordcloud

A tiny wrapper for Arabic WordCloud plots

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

✨ May, 17 2020 ✨

ar_wordcloud

PyPI version

A tiny wrapper around wordcloud.WordCloud to support WordCloud with Arabic text.

Installation:

  • $ pip install ar_wordcloud

Usage:

Also, see the notebook example.

Import and instantiate the main class:

from ar_wordcloud import ArabicWordCloud

awc = ArabicWordCloud(background_color="white")

Then, either build a word cloud from a raw text string:

t = 'أهلاً وسهلا، اللغة العربية جميلة'
wc = awc.from_text(t)
wc.to_file('hello.png')

Or, build a word cloud from a dictionary:

d = {"مرحبا": 12, "برمج": 8, "من": 10, "رمضان كريم": 15, "العيد قرب": 12, "اهلين": 1, "كورونا": 3}
dict_wc = awc.from_dict(d, ignore_stopwords=True)
awc.plot(dict_wc, title="كل عام وانتم بخير", width=2, height=2)

Or, read text from a file:

wc = awc.from_file('examples/arabic.txt')
wc.to_file('examples/arabic.png')


Using a mask

Also, you can use a mask:

from ar_wordcloud import ArabicWordCloud
from ar_wordcloud.utils import read_mask_image

mask_img = read_mask_image() # NOTE: pass `mask_img_url` param to use a different mask, the default is a heart 
awc = ArabicWordCloud(background_color="white", mask=mask_img, contour_width=4, scale=0.5)

awc.from_file('examples/arabic.txt').to_image()


Multiple fonts support

It's also possible to choose a different Arabic font:

from ar_wordcloud import ArabicWordCloud

awc = ArabicWordCloud(font='NotoSansArabic-ExtraBold.ttf')

t = f"عيدفطر2020 سعيد، كل عام وانتم بخير"
awc.from_text(t).to_image()

# To see the available fonts:
print(awc.fonts.available_fonts)

If the entered font name is not correct, there'll be a friendly assertion message:

AssertionError: بالله أتأكد ان اسم الخط المُدخل صحيح
Please make sure the selected font name is correct!

TODO:

  • support mask plots
  • clean input text (remove punct .. etc)
  • support input from file e.g. awc.from_file(fname)
  • browse available fonts and select favorite
  • fix English font
  • cli support

PRs are welcome, thanks 🙏


Credit: this repo was born from the discussion in this PR.

About

A tiny wrapper for Arabic WordCloud plots


Languages

Language:Python 100.0%