【问题标题】:How to add custom slangs into spaCy's norm_exceptions.py module?如何将自定义俚语添加到 spaCy 的 norm_exceptions.py 模块中?
【发布时间】:2018-03-26 13:56:01
【问题描述】:

SpaCy 的文档有一些关于添加新俚语here 的信息。

不过,我想知道:

(1) 什么时候应该调用下面的函数?

lex_attr_getters[NORM] = add_lookups(Language.Defaults.lex_attr_getters[NORM], NORM_EXCEPTIONS, BASE_NORMS)

根据介绍指南here,spaCy的典型用法如下:

import spacy
nlp = spacy.load('en')
# Should I call the function add_lookups(...) here?
doc = nlp(u'Apple is looking at buying U.K. startup for $1 billion')

(2) 在处理管道中何时处理规范异常?

我假设一个典型的管道是这样的:tokenizer -> tagger -> parser -> ner。

是否在分词器之前处理了规范异常?此外,规范异常组件相对于其他预处理组件(例如停用词、词形还原器)是如何组织的(请参阅组件的完整列表 here)?什么在什么之前?


我是 spaCy 的新手,我们将不胜感激。谢谢!

【问题讨论】:

    标签: nlp spacy


    【解决方案1】:

    规范异常是语言数据的一部分,属性 getter(获取文本并返回规范的函数)使用语言类初始化,例如English。您可以查看此here 的示例。这一切都发生在管道构建之前

    这里的假设是规范异常通常是特定于语言的,因此应该在语言数据中定义,独立于处理管道。规范也是词汇属性,因此它们的 getter 依赖于底层的词位,即词汇表中不区分上下文的条目(与标记相反,它是上下文中的单词)。

    不过,token.norm_ 的好处在于它是可写的——因此您可以轻松添加 custom pipeline component,在您自己的字典中查找令牌的文本,并在必要时覆盖规范:

    def add_custom_norms(doc):
        for token in doc:
            if token.text in YOUR_NORM_DICT:
                token.norm_ = YOUR_NORM_DICT[token.text]
        return doc
    
    nlp.add_pipe(add_custom_norms, last=True)
    

    请记住,NORM 属性也用作模型中的特征,因此根据您要添加或覆盖的规范,您可能只想在 之后应用自定义组件> 调用标注器、解析器或实体识别器。

    例如,默认情况下,spaCy 将所有货币符号标准化为"$",以确保它们都接收到相似的表示,即使其中一个在训练数据中出现频率较低。如果您的自定义组件现在用"Euro" 覆盖"€",这也会对模型的预测产生影响。因此,您可能会看到对 MONEY 实体的预测不太准确。

    如果您计划训练自己的模型并考虑您的自定义规范,您可能需要考虑实施自定义语言子类。或者,如果您认为要添加的俚语默认应包含在 spaCy 中,您可以随时提交pull request,例如英文norm_exceptions.py

    【讨论】:

    • 感谢您的出色回答和及时回复!实施自定义语言子类似乎是合适的,因为在我的情况下,语言使用是特定于行业和特定国家的。我将根据docs 训练我自己的 word2vec 模型。在训练期间,是否会在训练词向量之前首先对词进行归一化(例如“cos”->“because”)?我想按照您在货币符号上给出的示例,并首先对一些单词进行规范化,以便它们具有相同的向量/表示,尽管它们具有不同的 ORTH 值。
    • spacy (2.0.18): 'spacy.tokens.token.Token' 对象的属性 'norm_' 不可写
    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 2022-01-18
    • 2013-08-02
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多