Распознавание именованных объектов (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.