0

我想使用个人 API 进行命名实体识别 (NER),并使用brat进行可视化。似乎小子提供了一个自动注释工具,但关于其配置的文档很少。

是否有此功能的可用工作示例?

有人可以解释一下 API 的响应格式应该是什么吗?

4

1 回答 1

0

由于 BRAT 的 GoogleGroup 扩散列表中的这个主题,我终于设法理解它是如何工作的

文本作为 POST 请求正文中的字节字符串发送到 Automatic Annotator API,并且此 API 响应所需的格式 BRAT 采用字典字典的形式,namel(

{
"T1": {
"type": "WhatEverYouWantString", # must be defined in the annotation.conf file
"offsets": [(0, 2), (10, 12)], # list of tuples of integers that correspond to the start and end position of
"texts": ["to", "go"]
}
"T2" : {
"type": "SomeString",
"offsets":[(start1, stop1), (start2, stop2), ...]
"texts":["string[start1:stop1]", "string[start2:stop2]", ...
}
"T3" : ....
}

然后,你把这个字典变成 JSON 格式,然后把它发回给 BRAT。

笔记 :

  • "T1", "T2", ... 是必填键(对应于.annBRAT 在手动注释时生成的文件中的 Term 索引)
  • “type”、“offsets”和“texts”键是强制性的,否则您会在 BRAT 的日志中出现一些错误(您可以按照上面链接的 GoogleGroup 线程中的说明查阅这些日志)
  • 值的格式是严格的(“type”获取字符串,“offsets”获取元组(或列表)或整数列表,“texts”获取字符串列表),否则会出现 BRAT 错误

我认为“文本”中的字符串必须对应于“偏移量”,否则应该有错误,或者至少标签显示有问题(如果您.ann从自动检测算法生成文件,情况已经如此并且具有与相关文本不同的开始和停止)

我希望它有所帮助。今天早上我设法使用Flask制作了 API ,但我需要构造一个flask.Response对象来获得正确的输出格式。此外,在我使用带有方法的flask.request对象之前,无法捕获从 BRAT 到 Flask API 的传入格式。request.get_body()

另外,我不得不提一下,我无法使用 BRAT GitHub 中给出的示例:

我的意思是我不能让它们工作,但我对 Python 中的 API 和 HTTP 包一点也不熟悉。至少我弄清楚了 API 响应的正确格式是什么。

最后,我不知道如何从 API 中建立实体之间的关系(即 BRAT 箭头)格式,虽然

似乎适用于这样的事情。

GoogleGroup 讨论

似乎提到不可能从自动注释 API 发回实体之间的关系并使它们与 BRAT 一起使用。

我可以稍后再试:-)

于 2021-05-05T18:39:55.270 回答