思考题:
处理布朗语料库的新闻和言情文体,找出一周中最有新闻价值并且是最浪漫的日子。定义一个变量days 包含星期的链表如[‘Monday’, …]。然后使用cfd.tabulate(samples=days)为这些词的计数制表。接下来用绘图替代制表尝试同样的事情。你可以在额外的参数conditions=[‘Monday’, …]的帮助下控制星期输出的顺序。
代码如下:
days=['Monday', 'Tuesday', 'Wednesday','Thursday', 'Friday', 'Saturday', 'Sunday']
cfd = nltk.ConditionalFreqDist((c, d) for c in ['news','romance'] for d in brown.words(categories=c))
cfd.tabulate(samples=days)
cfd.plot(samples=days)
# 以一定比例取日子的新闻价值和浪漫性属性作为综合评价指标
import matplotlib.pyplot as plt
idays = [1,2,3,4,5,6,7]#代表星期一到星期日
lr = []
for rr in range(0,10,1):
r = rr/10; # 默认以0.1为步长
res =[(r)*cfd['news'][d]+(1-r)*cfd['romance'][d] for d in days ]#
plt.plot(idays, res)
lr.append(res.index(max(res)))
else:
print (lr)
plt.show()
结果:
[0, 0, 0, 0, 0, 0, 6, 6, 6, 6]
分析:
由图和数据可以看出,星期一和星期天是结果的两个候选解:若r<=0.5即更侧重新闻价值时,答案为星期一;若r>0.5即更侧重浪漫性时,答案为星期天。