Распознавание именованных объектов (NER) (также известное как идентификация объектов, разделение объектов и извлечение объектов). ) — это подзадача извлечения информации, которая направлена ​​на поиск и классификацию упоминаний названного лица в неструктурированном тексте по заранее определенным категориям, таким как имена людей, организации, местонахождение, медицинские коды, время выражения, количества, денежные значения, проценты и т. д.

Ссылка на приложение: https://coolcaught.herokuapp.com

Модель обучена на GMB (Groningen Meaning Bank), который включает8категорий типа сущности следующим образом:

  • гео = географический объект
  • орг = организация
  • за = человек
  • gpe = Геополитическая сущность
  • тим = индикатор времени
  • искусство = Артефакт
  • накануне = событие
  • nat = природное явление

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

Теги объектов кодируются с использованием схемы аннотаций BIO, где каждая метка объекта имеет префикс с буквой B или I. B-обозначает начало и I-внутри объекта, которые добавляются в начале каждой категории. Префиксы используются для обнаружения многословных объектов. На данном этапе я не использовал эту информацию, поэтому некоторые слова, такие как «Сан-Франциско», могут быть отмечены отдельно. Все остальные слова, которые не относятся к интересующим объектам, помечаются тегом O.

Поскольку такого рода проблемы требуют моделей маркировки последовательностей, таких как CRF, LSTM, GRU. В этом посте мы представим условное случайное поле (CRF)

Что такое КРФ?

Условное случайное поле (сокращенно CRF) – это дискриминационная модель маркировки последовательностей.

CRF принимает входную последовательность, то есть слова предложения, в качестве входных данных и последовательность выходных состояний, то есть именованные теги сущностей. В условных случайных полях мы моделируем условную вероятность.

Подробнее о методе можно прочитать здесь: CRF

Разработка функций

Функции в основном основаны на контексте, т. Е. Теги POS и т. Д. Я буду использовать встраивание в будущем и особенно ELMO от Allen NLP, поскольку они кажутся одним из современных решений.

Разработка и развертывание приложений

Для этого я использовал Flask, который представляет собой микрофреймворк для Python на основе Werkzeug, Jinja 2 иGunicorn Green Unicorn который представляет собой HTTP-сервер Python WSGI для UNIX и развернул его на Heroku, которая представляет собой платформу как услугу (PaaS) для запуска ваших приложений в облаке.

Приложение все еще находится в разработке, но я буду признателен, если у кого-то есть какие-либо отзывы, и последним здесь является приложение, которое я назвал coolcaught.