doccano в настоящее время выводит только аннотации на уровне персонажей. Однако некоторые рабочие процессы, используемые для НЛП, требуют ввода в виде списков слов и списка меток токенов:
Sample sentence:
['Two', ',', 'Samsung', 'based', ',', 'electronic', 'cash', 'registers', 'were', 'reconstructed', 'in', 'order', 'to', 'expand', 'their', 'functions', 'and', 'adapt', 'them', 'for', 'networking', '.']
Sample sentence labels:
['O', 'O', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
В более раннем выпуске (№7) упоминается, что это было сделано таким образом из-за того, что некоторые языки не разделены пробелами. Я думаю, было бы хорошо иметь возможность, и пользователи, которые аннотируют языки, разделенные пробелами, могут использовать ее для беспрепятственного ввода в свой рабочий процесс.
Пример взят из: https://github.com/microsoft/nlp/blob/master/examples/ named_entity_recognition/ner_wikigold_bert.ipynb
Всем привет! Я написал нечто подобное для себя, и я хотел бы внести свой вклад в PR :) Однако я не уверен, как обращаться с неправильно маркированными токенами. А именно, что если токен был помечен только частично? Для своих целей я распечатываю неверно маркированный токен, который является предупреждением для пользователя скрипта, и отбрасываю аннотацию токена, но в производственной среде это не выход.
Другое дело, каким должен быть токен «не-сущности»? 'O'
? Затем мы должны запретить пользователю добавлять такую метку, которая может ввести в заблуждение некоторых людей. Или, может быть, нам стоит создать форму, в которой пользователь сам может предоставить токен? Или оставьте поле пустым?
Я думаю, что эта функция - отличная просьба, но мы должны договориться, как именно с этим справиться: smile: Я хотел бы прочитать ваши предложения
У меня есть план создать новый пакет Python с именем doccano-transformer
.
Он преобразует аннотированные документы в другие форматы, такие как https://github.com/chakki-works/doccano/issues/362 , https://github.com/chakki-works/doccano/issues/454 и так далее. Итак, вывод уровня токена должен быть включен в doccano-transformer
.
Есть обновления по этому поводу? Я хотел бы импортировать набор данных просто как .txt (в котором каждая строка представляет собой предложение):
George Washington went to Washington.
Sam Houston stayed home.
... и экспортируйте его (после аннотирования) следующим образом, также в .txt:
George B-PER
Washington I-PER
went O
to O
Washington B-LOC
Sam B-PER
Houston I-PER
stayed O
home O
Другими словами, экспорт в широко известном формате аннотаций IOB. Поэтому для этого Doccano должен автоматически знать, что если аннотированный объект содержит более 1 токена, он должен быть аннотирован метками B (начало) и I (внутри). Кроме того, существуют более сложные схемы аннотаций, помимо IOB, такие как BIOES. Здесь S (single) используется для представления фрагмента, содержащего один токен. Схема аннотации BIOES приведет к следующему:
George B-PER
Washington E-PER
went O
to O
Washington S-LOC
Sam B-PER
Houston E-PER
stayed O
home O
Было бы здорово, если бы я мог экспортировать аннотированные наборы данных в форматах IOB или BIOES (или других). Многие современные библиотеки для NER требуют аннотации на уровне токенов для обучения моделей (Flair от Zalando, Transformers от HuggingFace, ...).
Мы выпустили доккано-трансформер . Он поддерживает преобразование данных. В настоящее время поддерживаемые задачи называются распознаванием сущностей, а поддерживаемые форматы - CoNLL2003 и spaCy.
У нас есть план по расширению задач и форматов.
Пожалуйста, с нетерпением ждите этого.
Самый полезный комментарий
У меня есть план создать новый пакет Python с именем
doccano-transformer
.Он преобразует аннотированные документы в другие форматы, такие как https://github.com/chakki-works/doccano/issues/362 , https://github.com/chakki-works/doccano/issues/454 и так далее. Итак, вывод уровня токена должен быть включен в
doccano-transformer
.