Чаще всего системы ИИ подвергаются воздействию большого количества разнообразной информации, такой как голос человека, изображения с текстовым содержимым, необработанные документы, такие как статьи в НОВОСТЯХ, и т. Д. Для того, чтобы воздействовать на эту неструктурированную форму информации (данных), ИИ должен выполнять один из важнейших процессов, называемый извлечением информации (IE). Извлечение информации - это процесс извлечения ключевой информации, связанной с неструктурированными данными. Другими словами, извлечение структурированных данных из неструктурированных данных.

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

  • Потребность в извлечении информации с помощью варианта использования
  • Этапы извлечения информации из текстовых данных
  • Распознавание именованных сущностей (NER) и извлечение отношений
  • Реализация NER с использованием машинного обучения

Потребность в извлечении информации

Система извлечения информации использует широкий спектр приложений на основе НЛП. Например, извлечение резюме из большого объема текста, такого как Википедия, диалоговые системы ИИ, такие как чат-боты, извлечение информации об объявлениях фондового рынка из финансовых новостей и т. Д. Фактически, присутствуют виртуальные помощники, такие как Google Assistant, Amazon Alexa, Apple Siri и другие. использовать передовые системы IE для извлечения информации из больших энциклопедий. Для дальнейшего обсуждения рассмотрим пример использования.

Система бронирования авиабилетов - пример использования

Представьте, что вы внедряете диалоговую систему бронирования авиабилетов, которая может отображать соответствующие рейсы при запросе на естественном языке, таком как «покажите мне рейсы, которые прибывают в Торонто из Цинциннати в следующий понедельник утром». Для обработки этого запроса система должна иметь возможность извлекать полезные именованные сущности из неструктурированного текстового запроса и преобразовывать их в структурированный формат. Когда мы говорим о структурированном формате, это может быть что угодно, например JSON или другие пары ключ-значение, которые можно анализировать и использовать для запроса к базе данных и получения соответствующих деталей полета.

Используя эти именованные объекты, вы можете искать в базе данных и получать все соответствующие результаты полета. Как правило, именованные объекты относятся к именам людей, организаций (IBM, Payoda), местам (Индия, Ченнаи, Нью-Йорк), конкретным датам и времени (пятница, 19:00) и т. Д.

Этапы извлечения информации из необработанного текста

Хотя текстовые данные доступны в большом количестве, запутанность естественного языка особенно затрудняет извлечение из них полезной информации. Однако независимо от того, насколько сложна задача извлечения информации, есть несколько общих шагов, которые образуют конвейер почти всех систем IE.

Токенизация

Токенизация - это часть лексической обработки, которая обычно выполняется как предварительная задача в приложениях NLP. Токенизация включает в себя разделение текстовых документов на семантически значимые единицы, такие как предложения и слова (токены).

Как правило, токенизация предложения выполняется путем разделения текста по окончанию предложения («.»), А затем токенизации слова путем разделения предложения по пустому пространству. Тем не менее, сложные методы используются для разметки более сложных текстовых структур, таких как слова, которые часто идут вместе, такие как «Лос-Анджелес», которые иногда называют словосочетаниями.

Добавление тегов части речи

Маркировка части речи (PoS) - это первый уровень синтаксической обработки, который маркирует слово в соответствии с ролью, которую оно играет в предложении. Некоторые общие формы тегов pos - это существительные, глаголы, местоимения, прилагательные, наречия, предлоги, междометия, союз и т. Д. Ниже приведен пример тегов Pos.

Набор стандартных тегов PoS, используемых в библиотеке NLTK по умолчанию, включен в справочный раздел. На самом деле, это непростая задача пометить слово, например, в следующем предложении «песня стала большим хитом», слово «хит» - это существительное, тогда как в предложении «он ударил меня»: « хит »- это Глагол. Чтобы справиться с такой двусмысленностью, нужны более продвинутые методы, которые заслуживают отдельного блога.

Распознавание именованных сущностей и извлечение отношений

Важнейшим компонентом систем IE является распознавание именованных сущностей (NER). Распознавание именованных сущностей - это проблема идентификации и классификации сущностей по таким категориям, как имена людей, местоположения, организации, выражения количеств, времени, измерений, денежных значений и т. Д. В общих чертах, сущности относятся к именам людей, организаций (например, Jet Airways, American Airlines), местам / городам (Бангалор, Бостон) и т. Д.

При распознавании сущностей каждый токен помечается меткой IOB, а затем соседние токены объединяются вместе на основе их меток. Метки IOB (I-inside, O-out, B-начало) чем-то похожи на теги PoS, но включают в себя настраиваемые метки для конкретного домена. Например, для пользовательского запроса «Сколько стоит рейс American Airlines из Нью-Йорка в Лос-Анджелес» помеченные ярлыки IOB находятся слева.

Как только мы находим теги PoS и метки IOB, возникает задача сопоставить отношения между объектами.

Модели распознавания сущностей

Модели на основе правил

Разделение на части - это один из процессов извлечения текста на основе правил, который используется для построения моделей распознавания именованных сущностей. При подбрасывании фрагмент разбивает на части фразы, которые имеют смысл в тексте. Чанкер построен на наборе производственных правил, также известных как правила грамматики. Например, в случае NER грамматика может быть шаблоном для соответствия фразе-существительному, поскольку именованные сущности в основном являются существительными.

Как видите, правила фрагментов основаны на тегах PoS, теги Pos становятся необходимой задачей перед фрагментированием. Блоки существительных могут быть далее сокращены до именованных сущностей, применяя к блоку правило на основе IOB.

Вероятностные модели

Доступны различные подходы для построения вероятностной модели NER, такие как модели униграммы и биграммы, условные случайные поля, наивный байесовский классификатор и т. Д. Более того, мы реализуем одну из моделей NER на основе машинного обучения (ML).

Распознавание именованных сущностей (NER) с использованием машинного обучения:

Цель модели машинного обучения - назначить соответствующие теги IOB словам в пользовательском запросе.

Давайте создадим классификатор, используя алгоритм машинного обучения, чтобы классифицировать слова в предложении и присвоить каждому классу метку IOB. Он включает в себя следующие задачи:

  1. Понимание данных
  2. Предварительная обработка
  3. Извлечение функций
  4. Создание модели
  5. Оценка модели

Загрузка и анализ данных

Набор данных Информационных систем для авиаперевозок (ATIS) состоит из запросов пользователей (на английском языке) о бронировании и информации о рейсах в США.

Каждое слово в пользовательском запросе (запросе) помечается в соответствии с его типом сущности, например, в запросе «какие рейсы доступны в понедельник из Сан-Франциско в Питтсбург», «Сан-Франциско» и «Питтсбург» помечены как «источник» и «места назначения» соответственно, в то время как «утро» обозначается как «время суток».

Взгляните на некоторые из примеров пользовательских запросов:

Структура набора данных

После загрузки набора данных вы найдете два столбца, которые имеют форму списка чисел, где список чисел в первом столбце (запрос) соответствует списку слова запроса, а список чисел во втором столбце (метке) соответствует список IOB запроса.

Предварительная обработка

Как правило, начальные задачи предварительной обработки включают очистку данных, токенизацию предложений и слов. Набор данных ATIS, который у нас есть, уже в токенизированной форме, что означает, что мы можем приступить к тегированию PoS.

Мы можем применить функцию тегов pos к столбцу текста запроса, чтобы получить соответствующие теги PoS. Представим себе один из запросов с тегами в виде дерева.

Извлечение функций

Как и любые другие модели классификации машинного обучения, у нас могут быть функции для задач маркировки последовательностей. Возможностями могут быть морфология слова (верхний / нижний регистр), POS-теги слов по соседству, наличие слова в справочном словаре некоторых наиболее распространенных объектов, таких как географические местоположения и т. Д.

Поиск в словаре

Географический справочник - это каталог, в котором хранятся данные, касающиеся названий географических объектов, таких как города, штаты, страны и т. Д., А также некоторых других характеристик, связанных с географией. Пример файла географического справочника для США приведен ниже в разделе ссылок. В нашем случае это можно использовать как справочную таблицу.

Давайте создадим функцию для извлечения некоторых полезных предикторов меток IOB, таких как само слово, тег pos, предыдущий pos, word_is_city, word_is_state и word_is_country. Ниже представлены извлеченные данные функции одного из пользовательских запросов.

Построение и оценка модели

Мы используем встроенные классификаторы НЛТК для задачи классификации. Мы реализовали наивную байесовскую модель и модель дерева решений для классификации слов пользовательского запроса по метке IOB. Реализацию кода можно найти в записной книжке GitHub, доступной в разделе ссылок.

Конечно, мы также можем настроить гиперпараметры дерева решений (maxdepth, num_leaves, min_sample_split и т. Д.), Чтобы оптимизировать модель в соответствии с потребностями.

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

Источники изображений и ссылки:

Автор: Сантош Раджасингарам