《Python自然语言处理》第二章 习题解答 练习12
问题描述:CMU发音词典包含某些词的多种发音。它包含多少种不同的词汇?具有多种发音的词汇在这个词典中的比例是多少?
因为nltk.corpus.cmudict.entries()不能用set()方法来去掉重复词,只能进行遍历,然后计数。而多种发音词汇在这个词典中的比例先对每种发音数进行计数,然后除以字典总数。
代码:
1 import nltk 2 from __future__ import division 3 4 entries = nltk.corpus.cmudict.entries() 5 ky = entries[0][0] 6 cnt = 0 7 for key, pron in entries: # 不同发音计数 8 if ky != key: 9 ky = key 10 cnt += 1 11 12 length = len(entries) # CMU字典总数 13 lenSets = [len(pron) for key, pron in entries] # 多种发音的计数 14 percentage = [] 15 16 for i in range(1, max(lenSets) + 1): 17 percentage.append(lenSets.count(i) / length * 100) 18 19 print cnt 20 for i in percentage: 21 print '%.3f %%' % i # 格式化输出