如何使用特定领域的规则扩展 SpaCy 英语模型?

How to extend SpaCy English model with domain-specific rules?

我正在使用 SpaCy 处理来自独特主题领域的英文文本的 NLP 任务。我想逐步改进 SpaCy 现存的英语模型(具体来说我是从 'en_core_web_md' 开始),并将它们打包以便我的同事可以重复使用。

我的第一个更改是对分词器的简单更改;我首先定义了一个自定义 class:

class DomainSpecificEnglish(English.Defaults):
    lang = 'en_mydomain'

    class Defaults(English.Defaults):
        # my custom changes the tokenizer here


spacy.util.set_lang_class(DomainSpecificEnglish.lang, DomainSpecificEnglish)

目前,我会继续使用en_core_web_md的词汇和词向量(稍后我也会重新训练它们)。 ,但 SpaCy 通过 lang 字符串查找这些模型文件,不再是 "en".

如何构建依赖于已构建模型的特定领域 "language" subclass?我是否必须明确地将 en_core_web_md 文件复制到磁盘上名为 en_mydomain 的新文件夹?

一旦成功,我希望将这个小项目(class)打包为一个 Python egg,我的同事可以安装。理想情况下,我不应该要求他们也 运行 额外的 post 安装命令来在磁盘上移动文件。

docs,您可以像这样创建 link:

python -m spacy link en_core_web_md en_mydomain

这只会创建一个符号link,因此不会复制任何文件,它会立即完成。