python高等教育出版社课后答案第六章_python自然语言处理第六章习题

本文通过Python的nltk库构建一个名字性别分类器,利用名字语料库进行训练、开发测试和最终测试。采用NaiveBayesClassifier进行训练,实现了对名字的性别预测,并对比了开发测试集和测试集的性能。
摘要由CSDN通过智能技术生成

2.使用本章所述的3种分类器之一,以及你能想到的任何特征。尽可能好地建立一个名字性别分类器。从将名字语料库分成3个子集开始:500个词为测试集,500个词为开发测试集,剩余6900个词为训练集。然后从示例的名字性别分类器开始,逐步改善。使用开发测试集检查你的进展。一旦对分类器感到满意,在测试集上检查它的最终性能。相比在开发测试集上的性能,它在测试集上的性能如何?这是你期待的吗?

import nltkfrom nltk.corpus import namesimport randomnames=[(name,'male') for name in names.words('male.txt'), (name,'female') for name in names.word('female.txt')] #已经分好类的数据集 random.shuffle(names) #随机排列元素 def gender_features(word): return {'lastword':word[-1]} #函数:对数据进行处理test_names=names[:500] #测试集原始数据devtest_names=names[500:1000] #开发测试集原始数据train_names=names[1000:] #训练集原始数据

test_set=[(gender_features(n),g) for (n,g) in test_names] #测试集dev_test=[(gender_features(n),g) for (n,g) in devtest_names] #开发测试集train_set=[(gender_featutes(n),g) for (n,g) in train_names] #训练集classifier=nltk.NaiveBayesClassifier.train(train_set) #训练贝叶斯分类器classifier.classify(gender_features('Neo')) #测试分类器print nltk.classify.accuracy(classifier,devtest_set #1.0 测试评估print nltk.classify.accuracy(classifier,test_set) #1.0 测试评估

3.Senseval2语料库包含了旨在训练词-词义消歧分类器的数据。它包含4个词的数据:hard,interest,line和serve。选择这4个词中的一个,加载相应的数据。

from nltk.corpus import senseval

instances=senseval.instances('hard.pos')

size=int(len(instances)*0.1)

tarin_set,test_set=instances[size:],instances[:size]

使用这个数据集建立一个分类器,使其能正确预测出一个给定实例的词意标签。

4.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值