关于POS标记符的最动态语料库是 树库语料库 。然而,Brown Corpus Just拒绝用HMM和TnT标记器产生结果。对此有何解释?
size = int(len(brown.tagged_sents())*0.9)
train = brown.tagged_sents()[:size]
test = brown.tagged_sents()[size:]
trainer = hmm.HiddenMarkovModelTrainer()
tagger = trainer.train_supervised(train)
print(tagger.evaluate(test))
tnt_tagger = tnt.TnT()
tnt_tagger.train(train)
print(tnt_tagger.evaluate(test))
答案 0 :(得分:2)
您的代码是正确的 - 至少对于hmm
标记符。你不会说什么"只是拒绝产生结果"真的意思是,但你可能意味着它似乎挂起了?它没有。您必须意识到使用这些算法训练模型需要很长时间,而且最重要的是nltk通常不是为速度而设计的 - 它主要关注的是教育。
使用100个句子的训练集测试您的代码,您应该能够确认它是否有效。 (你还需要等一下)。
train = brown.tagged_sents()[:100]
test = brown.tagged_sents()[100:200]
TnT代码是另一回事,因为它本身不支持未知单词。请参阅help(tnt)
并从那里获取。