《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  # 格式化输出

 

posted on 2017-04-15 16:09  冰霁  阅读(558)  评论(0编辑  收藏  举报

导航