6 基于转换的标注

n-gram 标注器的一个潜在的问题是它们的 n-gram 表(或语言模型)的大小。如果使用各种语言技术的标注器部署在移动计算设备上,在模型大小和标注器准确性之间取得平衡是很重要的。使用回退标注器的 n-gram 标注器可能存储 trigram 和 bigram 表,这是很大的稀疏阵列,可能有数亿条条目。

第二个问题是关于上下文。n-gram 标注器从前面的上下文中获得的唯一的信息是标记,虽然词本身可能是一个有用的信息源。n-gram 模型使用上下文中的词的其他特征为条件是不切实际的。在本节中,我们考察 Brill 标注,一种归纳标注方法,它的性能很好,使用的模型只有 n-gram 标注器的很小一部分。

Brill 标注是一种 基于转换的学习 ,以它的发明者命名。一般的想法很简单:猜每个词的标记,然后返回和修复错误。在这种方式中,Brill 标注器陆续将一个不良标注的文本转换成一个更好的。与 n-gram 标注一样,这是有 监督的学习 方法,因为我们需要已标注的训练数据来评估标注器的猜测是否是一个错误。然而,不像 n-gram 标注,它不计数观察结果,只编制一个转换修正规则列表。

Brill 标注的的过程通常是与绘画类比来解释的。假设我们要画一棵树,包括大树枝、树枝、小枝、叶子和一个统一的天蓝色背景的所有细节。不是先画树然后尝试在空白处画蓝色,而是简单的将整个画布画成蓝色,然后通过在蓝色背景上上色“修正”树的部分。以同样的方式,我们可能会画一个统一的褐色的树干再回过头来用更精细的刷子画进一步的细节。Brill 标注使用了同样的想法:以大笔画开始,然后修复细节,一点点的细致的改变。让我们看看下面的例子:

  1. >>> nltk.tag.brill.demo()
  2. Training Brill tagger on 80 sentences...
  3. Finding initial useful rules...
  4. Found 6555 useful rules.
  5. B |
  6. S F r O | Score = Fixed - Broken
  7. c i o t | R Fixed = num tags changed incorrect -> correct
  8. o x k h | u Broken = num tags changed correct -> incorrect
  9. r e e e | l Other = num tags changed incorrect -> incorrect
  10. e d n r | e
  11. ------------------+-------------------------------------------------------
  12. 12 13 1 4 | NN -> VB if the tag of the preceding word is 'TO'
  13. 8 9 1 23 | NN -> VBD if the tag of the following word is 'DT'
  14. 8 8 0 9 | NN -> VBD if the tag of the preceding word is 'NNS'
  15. 6 9 3 16 | NN -> NNP if the tag of words i-2...i-1 is '-NONE-'
  16. 5 8 3 6 | NN -> NNP if the tag of the following word is 'NNP'
  17. 5 6 1 0 | NN -> NNP if the text of words i-2...i-1 is 'like'
  18. 5 5 0 3 | NN -> VBN if the text of the following word is '*-1'
  19. ...
  20. >>> print(open("errors.out").read())
  21. left context | word/test->gold | right context
  22. --------------------------+------------------------+--------------------------
  23. | Then/NN->RB | ,/, in/IN the/DT guests/N
  24. , in/IN the/DT guests/NNS | '/VBD->POS | honor/NN ,/, the/DT speed
  25. '/POS honor/NN ,/, the/DT | speedway/JJ->NN | hauled/VBD out/RP four/CD
  26. NN ,/, the/DT speedway/NN | hauled/NN->VBD | out/RP four/CD drivers/NN
  27. DT speedway/NN hauled/VBD | out/NNP->RP | four/CD drivers/NNS ,/, c
  28. dway/NN hauled/VBD out/RP | four/NNP->CD | drivers/NNS ,/, crews/NNS
  29. hauled/VBD out/RP four/CD | drivers/NNP->NNS | ,/, crews/NNS and/CC even
  30. P four/CD drivers/NNS ,/, | crews/NN->NNS | and/CC even/RB the/DT off
  31. NNS and/CC even/RB the/DT | official/NNP->JJ | Indianapolis/NNP 500/CD a
  32. | After/VBD->IN | the/DT race/NN ,/, Fortun
  33. ter/IN the/DT race/NN ,/, | Fortune/IN->NNP | 500/CD executives/NNS dro
  34. s/NNS drooled/VBD like/IN | schoolboys/NNP->NNS | over/IN the/DT cars/NNS a
  35. olboys/NNS over/IN the/DT | cars/NN->NNS | and/CC drivers/NNS ./.