使用当前 spacy 版本重新训练自定义语言模型(兼容性问题)

Retrain custom language model with the current spacy version (Compatibility issues)

我安装了带有两种语言模型的 spacy:vi_spacy(不是我的),这是来自 Github here 和日语 ja_core_news_trf 模型的 spacy 的自定义越南语言模型。 我首先使用 python -m spacy download ja_core_news_trf 安装了 ja_core_news_trf 模型 anaconda 命令行中的命令,它没有问题。然后,当我在命令行中使用安装 vi_spacy 并尝试它时,它成功了。但是当我尝试日式模型时,它不再起作用了。

每次我收到这个错误:

OSError: [E050] Can't find model 'ja_core_news_trf'. It doesn't seem to be a Python package or a valid path to a data directory.

即使当我键入 pip list 命令时 ja_core_news_trf 已安装。 经过调查,我发现 vi_spacy 仅适用于 spacy v3.0.8,但 ja_core_news_trf 需要 spaCy >=3.2.0,<3.3.0,并且与当前版本不兼容。输入 python -m spacy info 后我收到此错误消息:

UserWarning: [W095] Model 'ja_core_news_trf' (3.2.0) requires spaCy >=3.2.0,<3.3.0 and is incompatible with the current version (3.0.8). This may lead to unexpected results or runtime errors. To resolve this, download a newer compatible model or retrain your custom model with the current spaCy version. For more details and available updates, run: python -m spacy validate

在 运行 python -m spacy validate 我得到这个:

   ja_core_news_trf   >=3.2.0,<3.3.0   3.2.0     --> n/a
    vi_core_news_lg    >=3.0.5,<3.1.0   0.0.1     ✔

 The following packages are custom spaCy pipelines or not available for spaCy
v3.0.8:
ja_core_news_trf

所以我的问题是如何使用当前的 spaCy 版本重新训练自定义越南模型?当然我试着联系开发者但是他没有回复,所以我想自己做这可能。

在几乎所有情况下,spaCy v3 模型都是 forwards-compatible 较新版本的 spaCy v3,因此请下载 ja_core_news_trf 然后使用 pip install --no-deps 安装越南模型,以便 pip 没有安装旧版本的 spacy 作为依赖项。

加载时您会收到一条警告,指出旧型号 可能 不兼容,但请在您的数据上对其进行测试,只要性能与旧型号相同即可spacy版本,应该可以用。

参见:https://spacy.io/usage/v3-2#upgrading

如果您可以访问原始训练数据,则只能重新训练模型。