【问题标题】:Extending Lemma Lookup Table in Spacy在 Spacy 中扩展引理查找表
【发布时间】:2018-03-22 16:20:16
【问题描述】:

我目前正在使用 NLP 库 Spacy 处理文本。然而,Spacy 并没有正确地对所有单词进行词形还原,因此我想扩展查找表。目前我正在将 Spacy 的常量查找表与我的扩展合并,然后覆盖 Spacy 的本机查找表。

但是,我有一种感觉,这种方法可能不是最好和最一致的方法。

问题:是否有另一种可能更新 Spacy 中的查找表,例如更新或扩展功能?我已经阅读了文档,但找不到类似的东西。还是这种方法“很好”?

我当前方法的工作示例:

import spacy
nlp = spacy.load('de')
Spacy_lookup = spacy.lang.de.LOOKUP
New_lookup = {'AAA':'Anonyme Affen Allianz','BBB':'Berliner Bauern Bund','CCC':'Chaos Chaoten Club'}
Spacy_lookup.update(New_lookup)
spacy.lang.de.LOOKUP = Spacy_lookup
tagged = nlp("Die AAA besiegt die BBB und den CCC unverdient.")
[ print(each.lemma_) for each in tagged]

Die
Anonyme Affen Allianz
besiegen
der
Berliner Bauern Bund
und
der
Chaos Chaoten Club
unverdient
.

【问题讨论】:

  • 你会将引理用于其他 spaCy 组件(例如标记器、解析器、ner)吗?我有一个类似的问题here 这可能会有所帮助。

标签: python python-3.x nlp spacy


【解决方案1】:

您的解决方案看起来不错。

但是,我更简洁的解决方法是利用自定义 spaCy 管道功能。具体来说,如果令牌在您的文档中,您可以创建一个更新引理属性的新组件,然后将其堆叠到您的管道中。

示例代码:

import spacy
custom_lookup = {'AAA':'Anonyme Affen Allianz','BBB':'Berliner Bauern Bund','CCC':'Chaos Chaoten Club'}

def change_lemma_property(doc):
    for token in doc:
        if (token.text in custom_lookup):
            token.lemma_ = custom_lookup[token.text]
    return doc

nlp = spacy.load('de')
nlp.add_pipe(change_lemma_property, first=True)
text = 'Die AAA besiegt die BBB und den CCC unverdient.'
doc = nlp(text)
[print(x.lemma_) for x in doc]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    相关资源
    最近更新 更多