Облако слов Python не может представить иврит - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь создать 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 голосов
/ 25 апреля 2019

Это на самом деле не проблема с кодировкой текстового файла (вы можете проверить это с помощью print(book_txt)), а со шрифтом, используемым WordCloud. Вы можете указать font_path при создании объекта WordCloud. Например, используя шрифт Courier Bold в Windows:

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

...