Недавно я начал путешествие по НЛП с использованием SpaCy, и у меня есть ~ 5500 строк, которые я хочу обозначить. Для первых 100 я сделал это, используя электронную таблицу с пользовательскими столбцами, которую затем запускали через скрипт для создания словарей Python. На листе я обводил строку, тип метки, значение метки. Затем сценарий определяет положение значения метки внутри строки.

Таким образом, на подготовку данных по продукту отнимает много времени, и они подвержены ошибкам.

Есть ли какие-либо инструменты, чтобы помочь с этим? Мне буквально просто нужна возможность выделить подстроку, а затем выбрать тип метки. Я мог бы построить это сам, но я чувствую, что это может уже существовать.

3
user533507 19 Окт 2017 в 12:16

3 ответа

Лучший ответ

Я один из сопровождающих spaCy, и мы действительно много думали об этой проблеме! Поэтому мы создали Prodigy, инструмент аннотации, который интегрируется с spaCy и помещает модель в цикл, чтобы помочь вам обучать и оценивать модели быстрее. В настоящее время он находится в бета-версии, но вы можете подписаться на бесплатное приглашение. Prodigy использует немного другой подход к концепции click-drag-highlight-select других инструментов аннотации. Он использует модель в цикле, чтобы предлагать аннотации с наиболее подходящим градиентом для обучения, и запрашивает только простую двоичную обратную связь: принять или отклонить. Это позволяет быстро перемещаться по примерам. Когда вы аннотируете, модель в цикле обновляется, и ее предсказания будут влиять на то, что Prodigy просит дальше.

Это особенно хорошо работает, если вы хотите улучшить существующие типы сущностей, присутствующие в вашей модели spaCy, или если вы работаете с большим количеством примеров текста, который вы хотите использовать для аннотаций.

Если вы ищете инструмент для более точного выделения и аннотирования участков текста, вам также следует проверить Brat. Я не уверен на 100%, как выглядит результат, но вы наверняка сможете преобразовать его в формат обучения spaCy. Существует также обучаемая версия визуализатора displaCy ENT, разработанный кем-то из сообщества.

7
Ines Montani 19 Окт 2017 в 11:43

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

2
sam 28 Авг 2019 в 05:44

Вместо использования таблицы Excel вы можете использовать любую базу данных документов, например, Mongo DB, для сохранения высказываний и меток в структуре JSON. что-то вроде

 { "text": "who is John", "entities" : [ { "type": "PER" "startPos" :7 "endPos" :11 } ] }
0
Ayan Siddiqui 11 Янв 2019 в 06:49