用于计算文件中单词中音节数的代码

时间:2011-04-01 12:32:01

标签: python nltk

到目前为止,我有以下代码来计算cmudict(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 个答案:

答案 0 :(得分:2)

不确定这会解决整个问题,但是:

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'是Truish,因此条件始终为True。

例如,

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

In [37]: 'x' == 'a' or 'x'=='z'
Out[37]: False