【问题标题】:How to extend SpaCy English model with domain-specific rules?如何使用特定领域的规则扩展 SpaCy 英语模型?
【发布时间】:2017-09-26 12:29:20
【问题描述】:

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

我的第一个更改是对标记器的简单更改;我首先定义了一个自定义类:

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"

如何构建依赖于已构建模型的特定领域“语言”子类?我是否必须将en_core_web_md 文件显式复制到磁盘上名为en_mydomain 的新文件夹中?

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

【问题讨论】:

    标签: spacy python-packaging


    【解决方案1】:

    docs,您可以像这样创建一个链接:

    python -m spacy link en_core_web_md en_mydomain
    

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

    【讨论】:

    • 这确实成功加载了模型,但它也碰巧破坏了spacy.load。我已经在github.com/explosion/spaCy/issues/1366 报告了这个问题,你的答案可能是正确的,但我可能会等待关于 GH 问题的后续跟进,以确保他们不建议采取不同的做法。
    • 最好使用spacy package 创建自定义语言并明确覆盖meta.json 以引用您的新语言名称。
    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2010-09-06
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多