2016-05-19 4 views
0

Я нахожу распределение частот для некоторых слов в разных жанрах Brown corpus.Разница между ключевым словом 'sample' и 'samples' в python nltk ConditionalFreqDist

Мой код:

import nltk 
from nltk.corpus import brown 

cfd = nltk.ConditionalFreqDist(
     (genre, word) 
     for genre in brown.categories() 
     for word in brown.words(categories = genre)) 

genres = ['news', 'religion', 'hobbies', 'science_fiction', 'romance', 'humor'] 
modals = ['can', 'could', 'may', 'might', 'must', 'will'] 

cfd.tabulate(conditions = genres, samples = modals) 

Выход для кода выше:

    can could may might must will 
      news 93 86 66 38 50 389 
     religion 82 59 78 12 54  71 
     hobbies 268 58 131 22 83 264 
science_fiction 16 49 4 12 8  16 
     romance 74 193 11 51 45  43 
      humor 16 30 8 8 9  13 

Но когда я заменить 'образцы' по 'образцу' в последней строке выше кода. Это дает FreqDist для каждого слова в корпусе.

Я не знаю разницы между «образцом» и «образцами»?

спасибо.

ответ

0

cfd.tabulate() просто игнорирует любой аргумент ключевого слова, который не упоминается в его реализации. Вот почему sample=models по-прежнему создает полную таблицу для FreqDist. Если вы полностью исключаете это, эффект должен быть таким же.

Это поведение не является специфичным для NLTK, но выполняется для любой функции/метода Python, которая принимает произвольных списков аргументов. Я бы рекомендовал прочитать раздел the Python Tutorial об этом, я нахожу его очень понятным.

+0

Thankyou llia для ответа – a0n1i2k3

+0

Мое удовольствие, надеюсь, это поможет :) –