python自然语言处理第六章习题

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

import nltk
from nltk.corpus import names
import random
names=[(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.

你可能感兴趣的:(Python)