如何使用特定于域的规则来扩展SpaCy英语模型?
问题描述:
我正在使用SpaCy处理来自独特主题域的英文文本上的NLP任务。我想逐步改进SpaCy现有的英文模式(具体来说我从'en_core_web_md'
开始),并将它们打包以便同事轻松重复使用。如何使用特定于域的规则来扩展SpaCy英语模型?
我的第一个改变是对标记器的简单改变;我已经通过定义一个自定义类开始:
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.load'。我已经在https://github.com/explosion/spaCy/issues/1366 报告了这个问题,你可能是正确的答案,但我可能会等待生长激素问题的后续行动,以确保他们不会推荐做这件事不同。 –
最好使用'spacy package'创建自定义语言,并显式重写'meta.json'来引用您的新语言名称。 –