【问题标题】:Is it possible to add custom entity labels to Spacy 3.0 config file?是否可以将自定义实体标签添加到 Spacy 3.0 配置文件?
【发布时间】:2021-09-30 04:32:47
【问题描述】:

我正在使用 spacy-transformers 和 roBERTa 开发自定义 NER 模型。我真的只为此使用 CLI,并试图更改我的 Spacy config.cfg 文件以说明管道中的自定义实体标签。

我是 Spacy 的新手,但我了解到人们通常使用 ner.add_label 来完成此操作。我想知道是否可以更改配置的 [initialize.components.ner.labels] 中的某些内容,但还没有找到好的方法。

我似乎找不到以类似方式更改配置文件的任何选项 - 有谁知道这是否可行,或者实现这些自定义标签的最简洁方法是什么?

为清楚起见编辑:我的问题可能与我的配置理论不同。现在我得到一个输出,但不是文本标签,而是数字标签,例如:

('Oct',383) ('2019',383) ('February',383)

提前感谢您的帮助!

【问题讨论】:

    标签: spacy spacy-3 spacy-transformers


    【解决方案1】:

    如果您正在使用基于配置的训练,通常您不必在任何地方指定标签 - spaCy 将查看训练数据并从那里获取标签列表。

    在某些情况下这不起作用。

    您的训练数据中没有标签。这些标签无法学习,所以我认为这是一个错误,但有时您必须使用您一直在使用的数据给定的。

    您的训练数据非常大。在这种情况下,读取所有训练数据以获取完整的标签列表可能是个问题。您可以使用init labels 命令生成数据,这样就不必每次开始训练时都扫描输入数据。

    【讨论】:

    • 啊 - 谢谢你的确认!这就是我的假设(不必指定)。奇怪的是,我得到的结果是一系列似乎与这些标签相关的数字。因此,我得到的不是“日期”,而是:('Oct',383) ('2019',383) ('February',383)。有任何想法吗?我可能应该在我的问题中澄清这一点。我的训练数据并不庞大,但阅读信息时可能存在问题。我会尝试初始化标签以防万一!
    • 接受上述答案,因为它对于我最初的问题是正确的。
    • 我不明白你在做什么。您正在运行什么 cli 命令/代码来提供该输出,您期望什么输出?
    • 我对潜在问题的理论是不正确的。我正在关注一个教程,并期望 ent.label 返回我的标签,但它返回的是它们的数字表示。我错误地认为这意味着与配置中的标签有关。结果我所要做的就是将下划线添加到 ent.label_(而不是 ent.label)。您的解决方案回答了我的问题,它是如何措辞的,我只是问错了!
    • 啊,好吧,有道理。有一个属性约定,非下划线版本是字符串 ID,下划线版本是人类可读的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多