Отображение оси Y в процентном формате при построении условного распределения частоты - PullRequest
0 голосов
/ 01 апреля 2019

При построении условного частотного распределения для некоторого набора слов в текстовых корпусах ось Y отображается в виде числа, а не процентов

Я следую коду, описанному в «Обработка естественного языка с Python» Стивена Берда,Эван Кляйн и Эдвард Лопер для отображения частотного распределения слов для разных языков UDHR в Jupyter Notebooks.

from nltk.corpus import udhr
languages = ['Chickasaw', 'English', 'German_Deutsch', 'Greenlandic_Inuktikut', 'Hungarian_Magyar', 'Ibibio_Efik']
cfd = nltk.ConditionalFreqDist((lang, len(word)) for lang in languages\
                                                 for word in udhr.words(lang + '-Latin1'))
cfd.plot(cumulative = True)

Я ожидаю, что по оси Y будет отображаться совокупный процент (как в книге), но вместо этого у-ось показывает совокупный счет.Посоветуйте, пожалуйста, как превратить ось Y в кумулятивный процент.

1 Ответ

1 голос
/ 02 мая 2019

Вот решение, которое обеспечит вывод, который вы ищете:

inltk.download('udhr')
import pandas as pd
from nltk.corpus import udhr

languages = ['Chickasaw', 'English', 'German_Deutsch', 'Greenlandic_Inuktikut', 'Hungarian_Magyar', 'Ibibio_Efik']

cfd = nltk.ConditionalFreqDist(
    (lang, len(word))
    for lang in languages
    for word in udhr.words(lang + '-Latin1'))

def plot_freq(lang):
    max_length = max([len(word) for word in udhr.words(lang + '-Latin1')])
    eng_freq_dist = {}

    for i in range(max_length + 1):
        eng_freq_dist[i] = cfd[lang].freq(i)

    ed = pd.Series(eng_freq_dist, name=lang)

    ed.cumsum().plot(legend=True, title='Cumulative Distribution of Word Lengths')

Затем мы можем использовать эту новую функцию для отображения всех языков, представленных в примере:

for lang in languages:
plot_freq(lang)

В этой теме мы приводим примеры из книги NLTK Глава 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...