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

Python 计算文件中单词的音节数的代码,python,nltk,Python,Nltk,到目前为止,我有下面一段代码来计算cmudict(CMU发音词典)中单词的音节数。它计算字典中所有单词的音节数。现在我需要用输入文件替换cmudit,并找到文件中作为输出打印的每个单词的音节数。仅在读取模式下打开输入文件不起作用,因为无法将dict()作为文件的属性提供。 代码如下: from curses.ascii import isdigit from nltk.corpus import cmudict d = cmudict.dict() # get the CMU Pronou

到目前为止,我有下面一段代码来计算cmudict(CMU发音词典)中单词的音节数。它计算字典中所有单词的音节数。现在我需要用输入文件替换cmudit,并找到文件中作为输出打印的每个单词的音节数。仅在读取模式下打开输入文件不起作用,因为无法将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 从curses.ascii导入isdigit 从nltk.corpus导入cmudit d=cmudit.dict()#获取CMU的发音dict def nsyl(字): “”“返回多发音情况下的最大音节数”“” 返回最大值([len([y表示x中的y,如果是数字(y[-1])]))表示x中的x[word.lower()])) w_words=dict([(w,nsyl(w))表示d.键中的w.如果w[0]=“a”或“z”]) worth_abbreating=[(k,v)表示(k,v)在w_words.iteritems()中,如果v>3] 值得缩写的印刷品
谁能帮帮我吗

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

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'])

如果w[0]=='a'或'z'
表示
如果(w[0]=='a')或('z')
。字符串
'z'
是真的,因此条件总是真的

比如说,

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

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

否代码工作正常,显示所有单词(从a到z)及其音节计数。我需要做的是对一个输入文件做同样的操作。在这种情况下,如果w[0]='a'或'z'])可以缩短为
w_words=dict([(w,nsyl(w))表示w In d.keys())
。你能发布输入文件内容的片段吗?哦,对了!它也适用于缩写形式:)输入文件是sample.txt,其中包含以下文本:我对你的炫耀感到震惊,你拒绝我的请求是屈尊俯就,而我从未认真拒绝你的请求。你的行为既复杂又夸张。下一次出差时,你不会在你的手机上打我的手机号码。这个代码是用来打印音节数超过3的单词的。因此,它有助于根据音节计数确定复合词。