1

到目前为止,我一直在使用 Spacy 2.3.1。我创建了自己的继承自Language类的自定义类,并在其中使用 Python 脚本训练了一个 NER 管道。

但是在 Spacy 3.0 中,引入了一系列方便的 CLI 命令和配置,以训练自定义管道,强烈建议使用这些管道而不是 Python 脚本。这是nlp对象的配置示例:

...

[nlp]
lang = "fa"
pipeline = ["transformer","ner"]
batch_size = 32
disabled = []
before_creation = null
after_creation = null
after_pipeline_creation = null
tokenizer = {"@tokenizers":"spacy.Tokenizer.v1"}

...

如您所见,该lang属性应该是 Spacy 库中的预定义语言之一。有什么方法可以在配置中指出我需要创建一个我自己的自定义语言的对象作为nlp对象?

4

1 回答 1

2

文档中实际上有一个关于此的部分。基本思想是您必须将您的语言添加到注册表中。文档中的示例:

import spacy
from spacy.lang.en import English

class CustomEnglishDefaults(English.Defaults):
    stop_words = set(["custom", "stop"])

@spacy.registry.languages("custom_en")
class CustomEnglish(English):
    lang = "custom_en"
    Defaults = CustomEnglishDefaults

# This now works! 
nlp = spacy.blank("custom_en")
于 2021-04-12T04:39:14.970 回答