Используйте конфигурацию инструмента аннотаций / службу автоматической аннотации от brat

Я хочу использовать личный API для распознавания именованных объектов (NER) и использовать brat для визуализации. Похоже, что brat предлагает инструмент для автоматического добавления аннотаций, но документация по его настройке скудна. .

Есть ли доступные рабочие примеры этой функции?

Может ли кто-нибудь объяснить мне, каким должен быть формат ответа API?


person FraSchelle    schedule 24.08.2020    source источник


Ответы (1)


Наконец-то мне удалось понять, как это работает, благодаря этой теме в списке распространения GoogleGroup BRAT.

Текст отправляется в API автоматического аннотатора в виде строки байтов в теле запроса POST, а формат BRAT, требуемый в ответ от этого API, имеет форму словаря словарей 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, ... являются обязательными ключами (и соответствуют индексу Term в файле .ann, который BRAT генерирует во время ручной аннотации)
  • тип ключей, смещения и тексты являются обязательными, в противном случае вы получите некоторую ошибку в журнале BRAT (вы можете просмотреть этот журнал, как описано в теме GoogleGroup, указанной выше)
  • формат значений строгий (тип получает строку, смещения получает список кортежей (или списка) или целых чисел, тексты получает список строк), в противном случае вы получаете ошибки BRAT

Я предполагаю, что строки в текстах должны соответствовать смещениям, иначе должна быть ошибка или как минимум проблема с отображением тегов (это уже так, если вы генерируете файлы .ann из автоматического алгоритма обнаружения и имеете разные начать и остановить, чем соответствующий текст)

Я надеюсь, что это помогает. Сегодня утром мне удалось создать API с помощью Flask, но мне нужно было создать flask.Response, чтобы получить правильный вывод формат. Кроме того, входящий формат из BRAT в API Flask не мог быть перехвачен, пока я не использовал flask.request с методом request.get_body().

Кроме того, я должен упомянуть, что я не смог использовать примеры, приведенные в BRAT GitHub:

Я имею в виду, что я не мог заставить их работать, но я вообще не знаком с пакетами API и HTTP в Python. По крайней мере, я понял, какой правильный формат для ответа API.

Наконец, я понятия не имею, как сделать формат отношений между сущностями (т.е. стрелки BRAT) из API, хотя

кажется, работает с такой вещью.

Обсуждение в группе Google

кажется, упоминается, что невозможно отправить отношения между объектами обратно из API автоматической аннотации и заставить их работать с BRAT.

может потом попробую :-)

person FraSchelle    schedule 05.05.2021