Обзор мероприятий

Вебинар NER (Named-entity recognition): Поиск ФИО из текста

Время прочтения: 6 мин.

Ниже читай ответы на вопросы, заданные в ходе вебинара

В новостях про Путина неверно обработано имя собственное «Россия».  Результат был «0», хотя ожидалось «1». Выглядит как ошибка

Ирина Богоявленская: Задача стояла в распознавании ФИО. Названия стран могут являться именованными сущностями, при необходимости можно обучить модель выявлять именно их.

Какими инструментами Вы пользуетесь?

Ирина Богоявленская: Я использовала язык программирования python и библиотеки: nltk, keras и sklearn.

В каком формате были исходные документы, как извлекали текст?

Ирина Богоявленская: Документы были представлены в виде текстовых файлов в формате txt. Текст извлекался с помощью стандартных инструментов из языка python.

Если человек поменял фамилию (напр.девушка вышла замуж), предусмотрено ли какое-либо соответствие старой и новой фамилии?

Ирина Богоявленская: В рамках нашей задачи это было не предусмотрено.

Какие BI — системы применимы в банковской сфере?

Ирина Богоявленская: Данный вопрос не относится к теме доклада. В банковской сфере применимы такие BI системы как: Oracle, Power BI, SAP BI и SAS BI. Описание BI-систем: https://mopinion.com/business-intelligence-bi-tools-overview/

  • Приведите, пожалуйста, пару кейсов аудита, в которых использовали технологию.

Ответ: Осуществление поиска конкретного человека по ФИО среди набора распоряжений, а так же извлечение из текста приказа/распоряжения ответственных участников процедуры, то есть извлечение списка ФИО, указанных в документе.

  • Насколько я понял, lstm по умолчанию использует сигма-функцию в качестве функции активизации. Пробовали выбирать что-нибудь более быстрое в вычислении, типа ReLu?

Ответ: Сигмойду нельзя заменить на другую функцию в LSTM, потому что ее цель нормировка значений от 0 до 1.

  • Какие еще критерии оценки качества распознания можно использовать, кроме перечисленных Вами (полнота и точность).

Ответ: Для данной задачи лучше всего подходит F-мера.

  1. Модель учитывает, что ФИО пишутся с заглавной буквы? Или модель ищет только на основе сочетаний букв, которые были в обучающей выборке?

Ответ: Написано ли слово с заглавной буквы или нет безусловно является важным признаком для модели. ФИО, написанные с маленькой буквы, могут хуже улавливаться нейронной сетью.

  1. То есть, если будут ошибочно написаны ФИО с маленькой буквы, то модель пропустит такое слово и не пометит как ФИО?

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

  1. С чего начать новичкам?

Ответ: Для анализа естественного языка с помощью нейронных сетей могу посоветовать CS224n: Natural Language Processing with Deep Learning.

  1. Не проще было бы использовать регулярные выражения? задать маску ФИО, и запустить поиск?

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

  1. F-метрика, имеется в виду, F-1?

Ответ: Я использовала F-2, так как больше внимания уделялось полноте.

  1. С разными окончаниями находит?

Ответ: Да, библиотека pymorphy2 приводит слова в начальную форму.

  1. Почему во входных векторах была пунктуация? Вы её не убираете на предобработке?

Ответ: Нет, пунктуация является важным признаком для нейронной сети в рамках этой задачи.

  1. Таким образом можно обрабатывать только текстовые файлы или скан-копии документов тоже?

Ответ: Вид исходных данных не имеет значения, от этого зависит лишь их обработка.

  1. Скажите, пожалуйста, ещё раз про датасет.

Ответ: Я использовала Nerus и сгенерированные организационно-распорядительные документы. Ссылка на dataset: https://github.com/natasha/nerus Для генерации приказов/распоряжений использовались шаблоны, в которые вставлялись случайные функции судов РФ и случайные, сгенерированные ФИО.

  1. Добрый день, всем участникам! Можно ли получить dataset и тескт программы на python.

Ответ: К сожалению, не могу предоставить текст программы. Ссылка на dataset: https://github.com/natasha/nerus

  • Анализирует документы Office или может распознавать с документов pdf или других картинок

Ответ: Вид исходных данных не имеет значения, от этого зависит лишь их обработка. Для извлечения текста из сканов или других картинок могу посоветовать библиотеку pytesseract.

  • Со скан образами документов не работает?

Ответ: Модель на вход получает тензор из слов, замененных на индексы. Исходный формат текста не имеет значения, от этого лишь зависит его обработка.

  • Возможно ли извлечение информации из файлов в формате pdf?

Ответ: Да, могу посоветовать библиотеку pytesseract.

  • Если не находит фамилию. то как-то формируется список не найденных фамилий?

Ответ: Формирование такого списка возможно только для размеченных данных.

  • НЛТК умеет работать с русским языком?

Ответ: Да, подробнее о библиотеке nltk можно прочитать по ссылке: https://www.nltk.org/api/nltk.tokenize.html

  • Если в PDF формате, какое качество требуется?

Ответ: Нужно пробовать, многое зависит от предобработки изображения.

  • Справляется ли сеть с распознаванием различных вариаций имен (Наталья-Наталия), разговорными формами имен (Наташа), склонениями или прилагательными, указывающими на принадлежность к тому или иному ФИО?

Ответ: Да, если различные формы записи присутствуют в словаре.

  • Есть ли возможность обрабатывать формат pdf?

Ответ: Вид исходных данных не имеет значения, от этого зависит лишь их обработка. Для извлечения текста из сканов или других картинок могу посоветовать библиотеку pytesseract.

  • Можно попросить еще список обучающей литературы прислать.

Ответ: Для анализа естественного языка с помощью нейронных сетей могу посоветовать CS224n: Natural Language Processing with Deep Learning.

  • Где можно обучиться?

Ответ: Для анализа естественного языка с помощью нейронных сетей могу посоветовать CS224n: Natural Language Processing with Deep Learning.

  • Какой был размер vocabulary у LSTМки?

Ответ: Словарь насчитывает более 50 000 слов.

  • Распознаётся ли фамилия из 1-2 букв? Такие фамилии бывают.

Ответ: Да, размер фамилии не имеет значения.

  • Где можно взять обучающую литературу?

Ответ: Для анализа естественного языка с помощью нейронных сетей могу посоветовать CS224n: Natural Language Processing with Deep Learning.

  • Вебинар для программистов и ИТ специалистов?

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

  • Качество скана влияет на результат?

Ответ: Да, чем лучше качество скана, тем лучше удастся извлечь текст, а чем точнее извлечен текст, тем лучше сработает модель.

  • Здравствуйте! Опоздал немного) есть ли где датасет с фио для обучения?

Ответ: Nerus содержит размеченные ФИО. Ссылка на dataset: https://github.com/natasha/nerus

  • В чем отличие от elastiksearch?

Ответ: Elasticsearch не решает задачу NER. Безусловно это очень полезный инструмент, но найти ФИО в тексте документа не поможет.

  • А как выглядит результат отработки запроса? Выдается список документов с ФИО?

Ответ: Модель на выходе выдает тензор размерности входного тензора с 0 и 1. Далее выходной тензор обрабатывается и выходит список документов и извлеченных ФИО.

  • Распознаются ли фамилии, соответствующие словам существительным (на пример: Кузнец, Скворец и т.д.)?

Ответ: Да, но возможны как и ложно-положительные, так и ложно-отрицательные срабатывания.

  • Можно ли сократить имя НАТА и вытянуть все имена Наталия, Наталья и тд.

Ответ: Да это возможно, но выходит за рамки задачи NER.

  • Где можно взять библиотеку для обучения?

Ссылка на dataset: https://github.com/natasha/nerus

  • Где лежит готовая реализация ЛСТМки для кераса, которую можно импортировать как модуль и использовать? Внутри кераса доступна?

Ответ: Слой LSTM лежит в модуле keras.layers. Однако для реализации модели требуется добавление дополнительных слоев (как минимум Embedding, Dense).

  • Если клиент поменяет, например, фамилию или имя, то не сможет найти?

Ответ: Хранение данных о изменении фамилии или имени не требовалось в рамках нашей задачи.

  • Ирина, а есть ли реализация на pytorch?

Ответ: Да, модуль LSTM входит в состав библиотеки PyTorch.

  • Распознаются ли двойные фамилии?

Ответ: Да, это не является сложной задачей для нейронной сети. К тому же в datasete присутствовали фамилии, состоящие из двух слов.

  • Я имела в виду, что мы не знаем, что менял клиент демографические данные или нет, что в таком случае учитывается изменение или нет?

Ответ: Хранение демографических данных о клиенте не требовалось в рамках нашей задачи.

Советуем почитать