Python 在nltk标记的文档中使用评估功能

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

我不熟悉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_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()