Код для подсчета количества слогов в словах в файле - PullRequest
2 голосов
/ 01 апреля 2011

У меня есть следующий фрагмент кода для подсчета количества слогов в словах в словаре (словарь произношения CMU).Подсчитывает количество слогов для всех слов в словаре.Теперь мне нужно заменить cmudict на мой входной файл и найти количество слогов для каждого слова в файле, который выводится на печать.Простое открытие входного файла в режиме чтения не работает, так как dict () не может быть указан как атрибут файла.Код приведен ниже:

from curses.ascii import isdigit 
from nltk.corpus import cmudict 

d = cmudict.dict() # get the CMU Pronouncing Dict

def nsyl(word): 
    """return the max syllable count in the case of multiple pronunciations"""
    return max([len([y for y in x if isdigit(y[-1])]) for x in d[word.lower()]])


w_words = dict([(w, nsyl(w)) for w in d.keys() if w[0] == 'a'or'z'])
worth_abbreviating = [(k,v) for (k,v) in w_words.iteritems() if v > 3]
print worth_abbreviating 

Может кто-нибудь, пожалуйста, помогите мне?

1 Ответ

2 голосов
/ 01 апреля 2011

Не уверен, что это решит всю проблему, но:

w_words = dict([(w, nsyl(w)) for w in d.keys() if w[0] == 'a'or'z'])

, вероятно, должно быть

w_words = dict([(w, nsyl(w)) for w in d.keys() if w[0] == 'a' or w[0] == 'z'])

, поскольку

if w[0] == 'a'or'z' означает if (w[0] == 'a') or ('z').Строка 'z' истинна, поэтому условие всегда истинно.

Например,

In [36]: 'x' == 'a'or'z'
Out[36]: 'z'

In [37]: 'x' == 'a' or 'x'=='z'
Out[37]: False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...