簡體   English   中英

如何在python中生成孟加拉文本的wordcloud?

[英]How to generate wordcloud of bangla text in python?

我試過下面的代碼:

!pip install python-bidi
from wordcloud import WordCloud
from matplotlib import pyplot as plt
from bidi.algorithm import get_display

text="""মুস্তাফিজ"""

bidi_text = get_display(text)
print(bidi_text)
# https://github.com/amueller/word_cloud/issues/367
# https://stackoverflow.com/questions/54063438/create-wordcloud-in-python-for-foreign-language-hebrew
# https://www.omicronlab.com/bangla-fonts.html
rgx = r"[\u0980-\u09FF]+"
wordcloud = WordCloud(font_path='/content/Siyamrupali.ttf').generate(bidi_text)

#wordcloud = WordCloud(font_path='/content/FreeSansBold.ttf').generate(bidi_text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

然后我得到這個錯誤:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-87-56d899c0de07> in <module>()
     12 # https://www.omicronlab.com/bangla-fonts.html
     13 rgx = r"[\u0980-\u09FF]+"
---> 14 wordcloud = WordCloud(font_path='/content/Siyamrupali.ttf').generate(bidi_text)
     15 
     16 #wordcloud = WordCloud(font_path='/content/FreeSansBold.ttf').generate(bidi_text)

2 frames
/usr/local/lib/python3.6/dist-packages/wordcloud/wordcloud.py in generate_from_frequencies(self, frequencies, max_font_size)
    381         if len(frequencies) <= 0:
    382             raise ValueError("We need at least 1 word to plot a word cloud, "
--> 383                              "got %d." % len(frequencies))
    384         frequencies = frequencies[:self.max_words]
    385 

ValueError:我們需要至少 1 個詞來繪制詞雲,得到 0。

這一行不是選擇孟加拉語單詞:wordcloud = WordCloud(font_path='/content/Siyamrupali.ttf').generate(bidi_text)

我嘗試了幾乎所有的孟加拉語字體: https ://www.omicronlab.com/bangla-fonts.html

沒有任何效果

您沒有使用您在詞雲中定義的正則表達式更改正則表達式 在處理詞雲中的文本時,它無法匹配模式並返回一個空列表。 在創建詞雲對象時傳遞rgx變量將解決您的問題。

wordcloud = WordCloud(font_path='/content/Siyamrupali.ttf',regexp=rgx).generate(bidi_text)

這是代碼的完整片段。

!pip install python-bidi
from wordcloud import WordCloud
from matplotlib import pyplot as plt
from bidi.algorithm import get_display

text="""মুস্তাফিজ"""

bidi_text = get_display(text)
print(bidi_text)
# https://github.com/amueller/word_cloud/issues/367
# https://stackoverflow.com/questions/54063438/create-wordcloud-in-python-for-foreign-language-hebrew
# https://www.omicronlab.com/bangla-fonts.html
rgx = r"[\u0980-\u09FF]+"
wordcloud = WordCloud(font_path='/content/Siyamrupali.ttf', 
regexp=rgx).generate(bidi_text)

#wordcloud = WordCloud(font_path='/content/FreeSansBold.ttf').generate(bidi_text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

我使用以下代碼在孟加拉語中生成了一個詞雲。 你可以試試:

def generate_Word_cloud(self,author_post,vocabularyWordnumber,img_file,stop_word_root_path):

stop_word_file = stop_word_root_path+'/stopwords-bn.txt'
print(stop_word_file)
f = open(stop_word_file, "r", encoding="utf8")
stop_word = f.read().split("\n")
print(stop_word)

final_text = " ".join(author_post)
print(final_text)
wordcloud = WordCloud(stopwords = stop_word, font_path='/usr/share/fonts/truetype/freefont/kalpurush.ttf',
    width = 600, height = 500,max_font_size=300, max_words=vocabularyWordnumber,
                      min_word_length=4, background_color="black").generate(final_text)
wordcloud.to_file(img_file)

我遵循了這條評論,最終可以解決 Ubuntu 中的問題。

第 1 步:!sudo apt-get install libfreetype6-dev libharfbuzz-dev libfribidi-dev gtk-doc-tools

第 2 步:!wget -O raqm-0.7.0.tar.gz https://raw.githubusercontent.com/python-pillow/pillow-depends/master/raqm-0.7.0.tar.gz

現在 raqm-0.7.0.tar.gz 文件應該在您的下載部分。

第 3 步:!tar -xzvf raqm-0.7.0.tar.gz

第 4 步:!cd raqm-0.7.0

第 5 步:!./configure --prefix=/usr && make -j4 && sudo make -j4 install

第 6 步:現在您只需重新安裝 Pillow 庫。 激活正確的環境。 然后運行以下命令:

python3 -m pip install --upgrade pip python3 -m pip install --upgrade Pillow

就是這樣! 現在你有一個可用的 Pillow 庫,可以在圖像中生成適當的孟加拉語和其他印度語字體。

此外,正如@Farzana Eva 在她的評論中所建議的,您需要在 wordcloud 對象中傳遞 rgx 變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM