5.2 分离训练和测试数据

现在,我们正在一些数据上训练一个标注器,必须小心不要在相同的数据上测试,如我们在前面的例子中的那样。一个只是记忆它的训练数据,而不试图建立一个一般的模型的标注器会得到一个完美的得分,但在标注新的文本时将是无用的。相反,我们应该分割数据,90%为测试数据,其余 10%为测试数据:

  1. >>> size = int(len(brown_tagged_sents) * 0.9)
  2. >>> size
  3. 4160
  4. >>> train_sents = brown_tagged_sents[:size]
  5. >>> test_sents = brown_tagged_sents[size:]
  6. >>> unigram_tagger = nltk.UnigramTagger(train_sents)
  7. >>> unigram_tagger.evaluate(test_sents)
  8. 0.811721...

虽然得分更糟糕了,但是现在我们对这种标注器的用处有了更好的了解,如它在之前没有遇见的文本上的表现。