2016-04-05 7 views
0

私はnltkとpythonを初めて使用しています。私は評価機能を使用して、私が読んだテキスト文書の精度をテストしようとしていました。これは私がこれまで持っていたものです。nltkタグ付きドキュメントの評価機能を使用

これを使用して正確さを計算することができません。次のエラーが表示されます。

ValueError:アンパックするには1つ以上の値が必要です。

これを修正する方法がわかりません。ありがとう。 NLTKを使用してUnigramTaggerを訓練し、使用するには

+0

タガー評価入力は=タプルのリストである) – alvas

答えて

0

>>> 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()への入力は、タプルのリストであり、タプルの最初の項目は単語であり、タプルの2番目の項目はPOS(すなわち、UnigramTagger.train()関数と同じ入力タイプ)です。 。

それでは、最初の2部、90%および10%にツリーバンクの文章を分割しましょうhttps://github.com/nltk/nltk/blob/develop/nltk/tag/api.py#L53 を参照してください:

>>> 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 
+0

は、ご回答いただきありがとうございます。私は '評価'コマンドがすでにコーパスにあるデータのために働いているのを見る。私はそれが私の文のために働く方法、それがコーパスに存在しないデータのための方法があるかどうか疑問に思っていました。 –

+0

あなたは 'evaluate()'を使用するためにあなたのコーパスに手作業で注釈を付ける必要があります – alvas

+0

大丈夫です。 –

関連する問題