问题描述
我想使用个人API进行命名实体识别(NER),并使用brat进行可视化。似乎小子提供了Automatic annotation tool,但有关其配置的文档很少。
是否有此功能的可用示例?
有人可以解释一下API响应的格式是什么吗?
解决方法
我终于理解了它是如何工作的,感谢 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”、...是必填键(对应于 BRAT 在手动注释过程中生成的
.ann
文件中的 Term 索引) - “type”、“offsets”和“texts”键是必需的,否则您会在 BRAT 的日志中遇到一些错误(您可以按照上面链接的 GoogleGroup 线程中的说明查阅这些日志)
- 值的格式是严格的(“type”得到一个字符串,“offsets”得到一个元组(或列表)或整数列表,“texts”得到一个字符串列表),否则你会得到 BRAT 错误立>
我认为“texts”中的字符串必须对应“offsets”,否则应该会出现错误,或者至少是标签显示有问题(如果您生成{{1 }} 文件来自自动检测算法,并且与相关文本具有不同的开始和停止)
希望能帮到你。今天早上我设法使用 Flask 制作了 API,但我需要构造一个 flask.Response
对象以获得正确的输出格式。此外,在我使用带有 .ann
方法的 flask.request
对象之前,无法捕获从 BRAT 到 Flask API 的传入格式。
另外,我不得不提到我无法使用 BRAT GitHub 中给出的示例:
- https://github.com/nlplab/brat/blob/master/tools/tokenservice.py
- https://github.com/nlplab/brat/blob/master/tools/randomtaggerservice.py
我的意思是我无法让它们工作,但我对 Python 中的 API 和 HTTP 包根本不熟悉。至少我弄清楚了 API 响应的正确格式是什么。
最后,我不知道如何从 API 中建立实体(即 BRAT 箭头)格式之间的关系
似乎可以处理这样的事情。
GoogleGroup 讨论
似乎提到无法从自动注释 API 发回实体之间的关系并使它们与 BRAT 一起使用。
我以后可以试试:-)