Попытка тройного извлечения в открытой области НЛП (27)

NLP

   Когда я писал эту статью, мое сердце было взволновано, это потому, что, так как я написал статью в июне прошлого годаПопытка построить граф знаний с использованием извлечения отношенийС тех пор я пытаюсь найти способ извлечения троек в чистом поле.Многие читатели задавали мне этот вопрос.Сегодня автор даст ответ,хотя это не правильный ответ(и не правильный сейчас? ответ), но, по крайней мере, я написал свой собственный ответ.

   Я не так давно придумал эту систему извлечения, но мое настроение менялось от волнения и экстаза в начале до отупения и неудовлетворенности до сих пор. Факты доказали,что тройная добыча в чистом поле слишком сложна.Личными усилиями и IQ автора невозможно дать точный ответ.Поэтому название статьи-попытка,и как попытка не может решить эту проблема. Тем не менее, я все еще хочу кое-что написать, надеюсь, это сможет немного вдохновить автора, и в то же время это также подведение итогов моих исследований за последние полгода.

   Об основном введении и распространенных методах тройной экстракции автор уже рассказывал во многих статьях, поэтому я не буду здесь слишком много рассказывать, заинтересованные читатели могут обратиться к статьеПопытка построить граф знаний с использованием извлечения отношенийиПопытка извлечь тройки из ограниченных полей НЛП (двадцать шесть). В этой статье будет представлена ​​попытка автора извлечь тройки в чистом поле.

   Исходный код этого проекта открыт для Github, и соответствующий URL-адрес будет указан в конце статьи. Структура этого проекта выглядит следующим образом:

项目结构
Этот проект разделен на четыре части, основные модули следующие:

  • Extract_example: используйте обученную модель для извлечения троек основных романов и новостей, чтобы сформировать пример карты знаний;
  • sequence_labeling: обучающая маркировка, которая обучает алгоритм маркировки последовательности на данных помеченного объекта;
  • spo_tagged_platform: платформа маркировки, маркировка субъекта, предиката и объекта, а также допустимость триплета;
  • text_classification: классификация текста, используемая для определения правильности извлеченного триплета.

   Блок-схема системы экстракции этого проекта выглядит следующим образом:

抽取系统流程图
   Далее автор представит их один за другим.

Аннотационная платформа

Автор использует торнадо для создания простой платформы для маркировки. На странице маркировки специалисту по маркировке необходимо ввести помеченное предложение (извлечение на уровне предложения) и подлежащее, сказуемое, объект, нажать «Показать SPO» и отметить допустимую тройку как 1. , недопустимые тройки помечаются 0. Причина этого метода маркировки заключается в том, что мы можем помечать подлежащее, сказуемое, дополнение в предложении, и эти помеченные сущности будут образовывать возможные комбинации триплетов, а затем использовать 0, 1, чтобы отметить, является ли эта тройка допустимой, так что тройное извлечение может быть проводится в открытом поле.

   Простой пример аннотации выглядит следующим образом:

标注例子
Давайте сделаем некоторые пояснения к приведенным выше результатам аннотации. Наши аннотации основаны на предложениях. Выполняется аннотация на уровне предложений. Различные элементы помечены знаком #, чтобы различать их. Два субъекта, 1 предикат (общий) и 2 отмечены. объект, где сказуемое является общим для этих субъектов и объектов, поэтому его нужно отметить только один раз. Таким образом, нажмите «Показать SPO», всего будет отображено 4 тройки, s, p, o разделены #, 0, 1 указывают, является ли это допустимой тройкой, а значение по умолчанию — 0.

   Автор использовал свободное время для маркировки в общей сложности более 3200 образцов, для маркировки последовательностей это более 3200 образцов, а для классификации текста - более 9000 образцов.

аннотация последовательности

   Для приведенного выше примера аннотаций будет сформирована следующая последовательность аннотаций:

美	B-SUBJ
国	I-SUBJ
疾	I-SUBJ
控	I-SUBJ
中	I-SUBJ
心	I-SUBJ
主	B-PRED
任	I-PRED
雷	B-OBJ
德	I-OBJ
菲	I-OBJ
尔	I-OBJ
德	I-OBJ
(	O
左	O
圈	O
)	O
和	O
美	B-SUBJ
国	I-SUBJ
国	I-SUBJ
立	I-SUBJ
卫	I-SUBJ
生	I-SUBJ
研	I-SUBJ
究	I-SUBJ
院	I-SUBJ
过	I-SUBJ
敏	I-SUBJ
和	I-SUBJ
传	I-SUBJ
染	I-SUBJ
病	I-SUBJ
研	I-SUBJ
究	I-SUBJ
所	I-SUBJ
主	B-PRED
任	I-PRED
福	B-OBJ
西	I-OBJ
(	O
右	O
圈	O
)	O

Разделите набор данных на обучающий набор и тестовый набор с соотношением 8: 2. Классическая модель глубокого обучения ALBERT + Bi-LSTM + CRF используется для распознавания сущностей, максимальная длина текста установлена ​​​​на 128, а обучение выполняется для 100 эпох. Для ознакомления с этой моделью вы можете обратиться к статьеНЛП (25) Реализовать модель ALBERT+Bi-LSTM+CRF. Результаты обучения    на тестовом наборе следующие:

accuracy:  93.69%; precision:  76.26%; recall:  82.33%; FB1:  79.18
OBJ: precision:  80.47%; recall:  88.81%; FB1:  84.44  927
PRED: precision:  76.89%; recall:  83.69%; FB1:  80.14  1021
SUBJ: precision:  71.72%; recall:  75.32%; FB1:  73.48  983

Общее значение F1 на тестовом наборе близко к 80%.

Категоризация текста

   Что касается классификации текста, то необходимы дополнительные пояснения.

  Хотя название этой статьи посвящено попытке извлечь триплеты в области развития, когда я на самом деле комментирую, я по-прежнему отмечаю больше титулов персонажей, отношений между персонажами, отношений компании и человека, главных ролей в фильмах и телевизионных драмах, информации о режиссере и т. д. Существует более 9000 допустимых образцов классификации текста, всего 1365 взаимосвязей, и 20 лучших взаимосвязей с наибольшим числом выглядят следующим образом:

数量最多的20个关系
   Если взять приведенные выше данные маркировки в качестве примера, сформированные данные маркировки выглядят следующим образом:

美国疾控中心#主任#雷德菲尔德#1#美国疾控中心主任雷德菲尔德(左圈)和美国国立卫生研究院过敏和传染病研究所主任福西(右圈)
美国疾控中心#主任#福西#0#美国疾控中心主任雷德菲尔德(左圈)和美国国立卫生研究院过敏和传染病研究所主任福西(右圈)
美国国立卫生研究院过敏和传染病研究所#主任#雷德菲尔德#0#美国疾控中心主任雷德菲尔德(左圈)和美国国立卫生研究院过敏和传染病研究所主任福西(右圈)
美国国立卫生研究院过敏和传染病研究所#主任#福西#1#美国疾控中心主任雷德菲尔德(左圈)和美国国立卫生研究院过敏和传染病研究所主任福西(右圈)

В реальном обучении модели субъект в исходном тексте будет заменен на S*len(субъект), предикат будет P, а объект будет O.    Разделите набор данных на обучающий и тестовый наборы в соотношении 8:2. Используется классическая модель глубокого обучения ALBERT+Bi-GRU+ATT+FC, задана максимальная длина текста 128, обучается 30 эпох, используется механизм ранней остановки. следующие:

训练过程的loss和acc图像
Окончательная точность на тестовом наборе составляет около 96%.

Извлечение троек из новых данных

   После обучения приведенной выше модели мы можем инкапсулировать ее в службу HTTP. Для вновь введенного предложения мы сначала используем модель аннотации последовательности, чтобы предсказать субъект, сказуемое и дополнение, объединить их в триплет и соединение предложения, ввести его в модель классификации текста и оценить, является ли триплет действительным. 0 недействителен, 1 действителен.

   Глядя на несколько примеров из Интернета, прогнозируемые результаты таковы:

例子1
例子2
例子3
  extract_exampleЭффект извлечения есть в каталоге, включая несколько романов и некоторые новостные эффекты.Для демонстрации этого аспекта вы можете обратиться к другому проекту:GitHub.com/percent4/может быть…. Также обратите внимание на статьюПример построения графа знанийНесколько примеров построения графа знаний приведены в .

Суммировать

   Процесс написания этой статьи относительно прост, и в ней нет кода, потому что автор сделал много предзнаменований в предыдущих статьях, в основном ориентируясь на модель. Кроме того, этот проект относительно большой, и он не подходит для подробного описания здесь.Автор дает здесь только идеи и общий процесс обработки.Для конкретного кода реализации, пожалуйста, обратитесь к адресу Github ниже.

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

  • Увеличьте количество маркировки данных.В настоящее время существует только более 3200 образцов алгоритма маркировки последовательности;
  • С точки зрения модели: теперь он в виде конвейера, и соответствующие эффекты в порядке, но в целом не так хороши, как совместная форма;
  • Для других троек, которые вы хотите нарисовать, рекомендуется добавить эту метку;
  • Предсказание текста занимает много времени (эта проблема решена).

  Данный проект является попыткой автора добывать тройки в чистом поле.До этого было очень мало статей или проектов в этой области,поэтому можно сказать,что это исследовательский этап.

  Исходный код и данные предоставлены в проекте Github по адресуGitHub.com/percent4/tickets….

   Мой общедоступный номер WeChatPython爬虫与算法, добро пожаловать, обратите внимание~

использованная литература

  1. Попытка построить граф знаний с использованием извлечения отношения:Блог Woohoo.cn на.com/decision chain 91/afraid/…
  2. Попытка тройного извлечения ограниченных полей НЛП (26):blog.CSDN.net/Decision Chain 91/AR…
  3. NLP (25) реализует модель ALBERT+Bi-LSTM+CRF:blog.CSDN.net/Decision Chain 91/AR…
  4. Пример построения графа знаний:blog.CSDN.net/Decision Chain 91/AR…
  5. Реальная битва НЛП (21) извлечения отношений персонажей:blog.CSDN.net/Decision Chain 91/AR…
  6. «Метод диаграммы знаний, практика и применение» Ван Хаофена, Ци Гуйлиня, Чена Хуацзюня, опубликовано China Industry Information Publishing Group и Electronic Industry Press.