spaCy:tokenizer_exceptions 的 NORM 部分是什么?

Ale*_*hek 1 python nlp tokenize spacy

我正在添加tokenizer_exceptions我的语言。我在看'gonna'英语的例子,所以写了如下规则:

'?.?.': [
    {ORTH: "?.", NORM: "????", LEMMA: "???"},
    {ORTH: "?.", NORM: "????????", LEMMA: "????????"}
],
Run Code Online (Sandbox Code Playgroud)

然后当我标记化时,我希望NORM-parts of rule 将在token.norm_(尽管没有任何关于 的文档Token.norm_)。但相反,我看到ORTH-part intoken.norm_并且在token-instance 中没有任何地方我可以看到NORM规则的-part。

那么什么是-member,Token.norm_什么是NORM-rule 的 -parttokenizer_exceptions呢?

Ine*_*ani 6

更一般地回答这个问题:在 spaCy v1.x 中,NORM主要用于提供标记的“规范化”形式,例如,如果标记文本“不完整”(如gonna示例中所示),则使用完整的屈折形式,或替代拼写。v1.x 中规范的主要目的是使其作为可访问的.norm_属性以供将来参考。

但是,在 v2.x 中,目前处于 alpha 中,该NORM属性变得更加相关,因为它也用作模型中的特征。这使您可以将具有不同拼写的单词标准化为一种常见的拼写,并确保这些单词获得相似的表示——即使其中一个在您的训练数据中出现频率较低。这方面的例子是英语中的美式与英式拼写,或货币符号,它们都被标准化为$。为使这更容易,v2.0 引入了一个新的语言数据组件,规范异常

如果您正在开发自己的语言模型,我绝对建议您查看 v2.0 alpha(现在非常接近第一个候选版本)。

  • @AlexMedveshchek 在 v1.x 中,模型中未使用“NORM”,但在标记器异常中设置它对于提供其他属性未涵盖的信息仍然很有价值。在许多情况下,规范化形式与引理相同,因此是多余的——例如`[{ORTH: 'ca', LEMMA: 'can'}, {ORTH: "n't", LEMMA: 'not'}]` . 但是,在“gonna”示例中,第一个标记如下所示:`{ORTH: 'gon', LEMMA: 'go', NORM: 'going'}` – 如果没有 `NORM`,您将无法跨越那个“要去”==“要去”。 (2认同)