您的功能请求是否与问题相关?请描述。
我遵循了 tutorial on Named Entity Recognition 。然后我注意到标签格式没有遵循任何最常用的标签格式(standoff,IOB2,BILUO等)。是否可以添加对这些标签格式的支持?
描述使用场景
我尝试用 IOB2 格式训练一个模型替换教程中展示的标签格式(对于我的项目来说太简单和模糊)。例如,我将文本 "Blade Runner is a 1982 neo-noir science fiction film directed by Ridley Scott" 中的标签 Movie Movie O O Date O O O O O O Person Person
替换为 B-Movie I-Movie O O B-Date O O O O O O B-Person I-Person
。
但是当我用这个训练好的模型预测一些数据点时,我得到了不符合定位规则的标签,例如:
"Harrison Ford and Rutger Hauer starred in it" - I-Person I-Person O B-Person I-Person O O O
可视化 "Harrison Ford" 文本片段的输出,我们可以看到即使前一个标记没有 B-Person
标签,模型仍然错误地给第一个标记("Harrison")分配了 I-Person
标签。而对于 "Rutger Hauer",两个标记的标签都正确地遵循了定位规则。
描述您希望得到的解决方案
期望的解决方案始终是获得标签的正确位置,所以如果我们能输入特定的标签格式(例如 IOB2),模型在发现错误时自动验证标签的位置,并进行必要的替换就很好了。
描述您考虑过的替代方案
我可以自己解决这些错误,但对于一个命名实体识别模型来说,不需要额外的验证就可以自动返回干净的输出是很理想的。
附加上下文
一个实际的例子,展示了模型结果(IOB2)没有遵循其训练时的标签格式:
https://prnt.sc/9SFilgpvlusX
3条答案
按热度按时间vcudknz31#
感谢分享这个观点。没有遵循特定格式的原因是为了保持灵活性。例如,可以通过使用0和1来构建一个抽取式摘要模型,或者保留和不作为标签。因此,将格式限制在特定格式上会受到限制。
另一方面,我认为我们可以引入一个后处理函数来捕捉这类情况,一个修复IOB前缀的函数。
如果你有一个已经执行修复的函数,你会考虑贡献它吗?
hzbexzde2#
嘿,@w4nderlust。当然!我正在使用IOB2标签格式,所以我已经构建了一个函数来修复错误预测的IOB2标签:
例如,以下代码片段:
输出结果为:
['<SOS>,O,O,B-PER,I-PER,B-MISC,B-PER,B-PER,O,O,<EOS>,I-PER,O,O']
o2rvlv0m3#
你好,@henchaves,你想提交一个修复你提出的PR吗?