Распознавание именованных сущностей (NER), важный аспект интеллектуального анализа текстовых данных.

Введение

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

  • как называется вариант covid19 в новостях?
  • какие инструменты упоминаются в данной должностной инструкции и на каком уровне владения?
  • и т. д.

Цель этой статьи — использовать spaCy и roBERTa из преобразователей spaCy для автоматической идентификации и извлечения сущностей, как определено ранее во введении.

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

Вы можете посмотреть полное видео на YouTube, если хотите:

Экспериментальные данные

Мы будем выполнять извлечение объектов из двух разных текстовых данных, короткого текста и гораздо более длинного соответственно (от CNN и Etoro) и, наконец, сравним производительность традиционных spaCy и roBERTa.

  • Краткий текст: «Эми Шнайдер, технический менеджер из Окленда, штат Калифорния, стала первой женщиной и четвертым участником Jeopardy!» чтобы заработать более 1 миллиона долларов в виде выигрышей в пятничном выпуске».
  • Подробный текст: «Безусловно, хорошие новости для потребителей, а также хорошие новости для инвесторов. В недавних отчетах Apple, охватывающих три месяца до 31 декабря 2016 года, главный финансовый директор компании Лука Маэстри объявил: «Мы вернули инвесторам почти 15 миллиардов долларов за счет выкупа акций и дивидендов в течение квартала». на акцию, равную дивиденду за предыдущие три квартала и превышающему 52 цента, выплаченных за каждый из четырех кварталов до этого.
    Бизнес в Apple идет оживленно. 31 января Тим Кук, исполнительный директор Apple, сказал о последних трех месяцах 2016 года: «Мы рады сообщить, что результаты нашего праздничного квартала принесли Apple самый высокий квартальный доход за всю историю и побили несколько рекордов». Мы продали больше iPhone, чем когда-либо прежде, и установили рекорды по доходам для iPhone, сервисов, Mac и Apple Watch».

Предпосылки

Речь идет об установке всех необходимых библиотек для анализа.

Действия по извлечению и визуализации именованных сущностей

Первая функция print_entities используется для извлечения именованного объекта из заданного текста и конвейера (в нашем случае это традиционный преобразователь spaCy или spaCy). Это работает следующим образом:

  • pipeline — это языковой объект, который мы получаем из инструкцииspacy.load. Он содержит все компоненты и данные, необходимые для обработки text
  • pipeline(text)запускает pipeline и возвращает обработанный document
  • именованные объекты получаются путем итерации по объекту document.ents.
  • затем на каждой итерации мы можем получить доступ к тексту сущности из.textи метке сущности из .label_

Вторая функция visualize_entitiesвыполняетdisplacy.render функцию для получения хорошей визуализации всех объектов.

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

Традиционный спаси

Библиотека с открытым исходным кодом для промышленного НЛП, прошедшая обучение на корпусе OntoNotes 5.0.

Анализ короткого текста

print_entities(nlp_sm, short_text)

visualize_entities(nlp_sm, short_text)

Традиционный spaCy успешно идентифицировал CNN как организацию (ORG), Эми Шнайдер как ЛИЧНОСТЬ, Окленд и Калифорнию как геополитическую сущность (GEP) и т. д. Исчерпывающий список определений кодов сущности можно найти в разделе Сущность. Names Annotation» раздела Этот файл.

Анализ длинного текста

print_entities(nlp_sm, long_text)

visualize_entities(nlp_sm, short_text)

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

  • неправильное определение Apple Watch как ОРГ (Организации) вместо Продукта.
  • отсутствует для идентификации iPhone и Mac.

Посмотрим, как модель roBERTa поведет себя на тех же текстах.

Трансформеры SpaCy — roBERTa

Это из библиотеки spacy-transformerslibrary, представленной spaCy в 2019 году. Она предназначена для питания конвейеров spacy путем подключения spaCy к моделям-трансформерам HuggingFace.

Анализ короткого текста

print_entities(roberta_nlp, short_text)

visualize_entities(roberta_nlp, short_text)

Пока все хорошо, ничего не меняется по сравнению с результатом традиционного spaCy на коротком тексте.

Анализ длинного текста

print_entities(roberta_nlp, long_text)

visualize_entities(roberta_nlp, long_text)

Следующая сводная таблица содержит результаты как традиционного spacy, так и roBERTa для длинного текста. Мы можем ясно видеть, что roBERTa превзошел традиционный spacy. roBERTa потерпел неудачу только один раз, не идентифицировав Mac. С другой стороны, традиционный spacy не может идентифицировать iPhone и Mac, но также неправильно идентифицирует Apple Watch.

Я надеюсь, что эта статья была полезной. Попробуйте сами, запустив код с моего GitHub по ссылке ниже. Следите за мной на YouTube, чтобы увидеть больше интерактивных сессий!

Дополнительные ресурсы

Гитхаб

Спаси для английского

Космические трансформеры

Пока пока 🏃🏾