Python 在nltk标记的文档中使用评估功能
我不熟悉nltk和python。我试图使用评估功能来测试我阅读的文本文档的准确性。这就是我目前所拥有的Python 在nltk标记的文档中使用评估功能,python,nlp,nltk,n-gram,pos-tagger,Python,Nlp,Nltk,N Gram,Pos Tagger,我不熟悉nltk和python。我试图使用评估功能来测试我阅读的文本文档的准确性。这就是我目前所拥有的 from nltk.tag import UnigramTagger from nltk.corpus import treebank from nltk.tokenize import word_tokenize train_sents = treebank.tagged_sents() tagger = UnigramTagger(train_s
from nltk.tag import UnigramTagger
from nltk.corpus import treebank
from nltk.tokenize import word_tokenize
train_sents = treebank.tagged_sents()
tagger = UnigramTagger(train_sents)
text1 = "This is the first sentence. Now this is another one!
How many do you plan to write?"
words = word_tokenize(text1)
value = tagger.tag(words)
accuracy = tagger.evaluate(words)
我无法用这个来计算准确度。我得到以下错误
ValueError:需要多个值才能解包
我不知道如何纠正这一点。谢谢 要使用NLTK训练和使用
UnigramTagger
:
>>> from nltk.tag import UnigramTagger
>>> from nltk.corpus import treebank
>>> from nltk import word_tokenize
>>> sent1 = "This is the first sentence."
>>> train_sents = treebank.tagged_sents()
>>> tagger = UnigramTagger(train_sents)
>>> tagger.tag(word_tokenize(sent1))
[('This', u'DT'), ('is', u'VBZ'), ('the', u'DT'), ('first', u'JJ'), ('sentence', u'NN'), ('.', u'.')]
要评估标记器,您需要有带注释的句子来验证标记器中的标记。UnigramTagger.evaluate()
的输入是一个元组列表,元组中的第一项是单词,第二项是位置(即与UnigramTagger.train()
函数相同的输入类型)。
.
看
让我们先把树库句子分成两部分,90%和10%:
>>> train_sents = treebank.tagged_sents()
>>> treebank_sents = treebank.tagged_sents()
>>> len(treebank_sents)
3914
>>> int(0.9 * len(treebank_sents))
3522
>>> train_sents = treebank.tagged_sents()[:3522]
>>> test_sents = treebank.tagged_sents()[3522:]
>>> tagger = UnigramTagger(train_sents)
>>> tagger.evaluate(test_sents)
0.8647328244274809
Tagger评估输入是一个元组列表=),感谢您的回复。我发现“evaluate”命令适用于语料库中已有的数据。我想知道是否有一种方法可以让它对我的句子起作用,那就是语料库中不存在的数据。你必须手动注释你的语料库才能使用
evaluate()