Python wordcloud无法显示希伯来语

时间:2019-04-24 19:37:55

标签: python-3.x nlp data-visualization word-cloud

我正在尝试为希伯来语中的文本创建wordcloud。 文字是:

  

אתהסיפורשלנוסיפרנולעצמנוכלהזמן。 בכפייתיות。 בעלפה。 לפעמים   התעייפנועודלפנישהתחלנוובכלזאתסיפרנובמשךשעות。 הקשבנורובקשב   אחדלשני,כיבכלערבשבוסופרהסיפור,התחוורולנופרטיםחדשים,שנישנ   רבותאחרישכברלאהיינושם。 למשל,לאידענושחלקמילדיקבוצת“אורן”   םהיומבוגריםמאיתנובחמששניםעבדועםהבוקרים。 ושהםחיובמובלעתשלחיי   קרהונגריבתוךהקיבוץשלנו。 לאידענושלוֹפֶס(“זיןשלסוס”)שימש   .ברְכתבוקרטובוערבטוב。 לאידענושאיתימ"אורן“רכבילסוסהברחבי   הגבעותשלנובאיןמפריעכברכשהיהבןשש。 הסיפוריםסופרורקבעלפה,   בניגודלכלהתקנוניםהכתובים。 הםבקעומבורותהממטרותבדשאיםשהקיפואת   חדרהאוכל,מחרכיהמבצרהצלבני,לנו,מהחריציםבמדרכותהאבןהצרות   והיפות。 אתסיפורינוהיינומספריםבעינייםבורקות。 אמרנו,“לאייאמןשאת   הפרותהיושוחטיםעלהרמפה,לעינינו,אתראשיהתרנגולותהיומולקים,   אילוכלום”,“אבלדיברנוכאילוהיואלהשנותינוהיפות。”   תותינוהיפות,טבולותבזהב。 דווקאכיחיינובטמפרטורהשלמתחתלאפסבחום   הלוהטשלשמשנצחית。 היינודרוכיםומסוקרניםבכליוםמחדש。 היינוערים   בבקריםועריםבלילות。 רצנוודילגנוממקוםלמקום,ידינודביקותמשרף   אורניםוחלבתאנים。 ,לכךקרוביםהיינואחדלשני,כלהיוםוכלהלילה,   ובכלזאתלאידענוכלוםאחדעלהשני。 ולאידענוכלוםעלעצמנו。 תמיד   סיפרנו,עודאז,בלילותירחכתו,בביתהילדים。 כבראזסיפרנויומם   ולילה,כדילישון,כדילאלישון,יושביםבמסדרוןבפתחיהחדרים,אועל   המיטותבתוךהחדרים,ומגזימיםלמוותאתחופשותינוהעירוניותעםהמשפחות   הביולוגיותשלנו(נסענו,אמאואבאואחים。במשךשךבועהיינומשפחהעירונית,   לבושיםבבגדינסיעהחגיגייםשעברוביןכלהילדיםהנוסעיםלעיר)。 כשחזרנו,   ,לאחדלחודמדירתהקיבוץברחובשינקיןבתלאביב,סיפרנועלאותוקרקס   מדראנושכולםהלכואליו。 אאושוערבשבוהיינועםמשפחתנוהביולוגית   בקרקסלאדמהלערביםהאחרים-באותוערבאריותברחומהכלוב,לוליין   מהחבל,ככהאמרנו。 סיפרנואחדלשניסיפוריםשבינםלביןהמציאותלאהיה   דבר。 לפעמים,אחרישעזבנו,ניסינולספראתסיפורנולעירוניים。 לאהצלחנו   להעביראתהסיפור,לאאתהעלילהולאאתהטון。 קולנוצרם,כ

我使用以下代码(文本在单独的.txt文件中给出):

import codecs
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
stopwords = set(STOPWORDS)
book_txt_f = codecs.open(fn, "r", encoding="UTF-8")
book_txt = book_txt_f.read(2000)

wordcloud = WordCloud(
        background_color='white', stopwords=stopwords,  max_words=200, max_font_size=40, scale=3, random_state=1).generate(str(book_txt))

fig = plt.figure(1, figsize=(6, 6))
plt.axis('off')
plt.imshow(wordcloud)
plt.show()

但是该数字(未附加)无法显示希伯来语: enter image description here 可能是什么原因?我该如何解决?

1 个答案:

答案 0 :(得分:0)

这实际上不是文本文件编码的问题(可以使用print(book_txt)进行检查),但是与WordCloud使用的字体有关。您可以在创建WordCloud对象时指定font_path。例如,在Windows上使用Courier Bold字体:

wordcloud = WordCloud(
        font_path = 'C:\Windows\Fonts\courbd.ttf',
        background_color='white',
        stopwords=stopwords, 
        max_words=200,
        max_font_size=40,
        scale=3,
        random_state=1).generate(book_txt)

输出:

Hebrew word cloud