Введение

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

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

Что такое распознавание именованных объектов (NRE)?

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

В этой статье мы обсудим, как выполнить распознавание именованных объектов с помощью SpaCy, популярной библиотеки Python для НЛП.

Как работает НРЭ?

NRE — сложная задача, которая включает несколько этапов и требует сложных алгоритмов машинного обучения, таких как Скрытые марковские модели (HMM), Условные случайные поля (CRF)и Наличие машин опорных векторов (SVM). Выбор алгоритма часто зависит от конкретной задачи и имеющихся данных, и большинство из них имеют общие шаги, перечисленные ниже.

  1. Предварительная обработка. Сначала текст подвергается предварительной обработке путем удаления ненужной информации, такой как стоп-слова, и разбиения текста на отдельные слова.
  2. Тегирование части речи (POS). Каждое слово в тексте помечается своей частью речи (например, существительное, глагол, прилагательное). Это важно, потому что именованные сущности часто являются существительными или именами собственными.
  3. Разбиение на фрагменты. Затем текст разбивается на фразы, соответствующие именованным объектам. Это включает в себя определение смежных групп слов, которые принадлежат друг другу, на основе их тегов части речи.
  4. Классификация. Затем каждая фраза классифицируется по определенным категориям именованных объектов, таким как человек, организация, местоположение, дата или числовое выражение. Это делается с помощью алгоритмов машинного обучения, таких как деревья решений, машины опорных векторов или нейронные сети, которые обучаются на аннотированных текстовых данных.
  5. Постобработка. Наконец, результаты подвергаются постобработке для обработки случаев, когда в одном предложении обнаруживается несколько именованных объектов или когда один и тот же именованный объект упоминается под разными именами (например, синонимами). . Результатом является список именованных сущностей и соответствующих им категорий.

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

Что такое SpaCy?

SpaCy — это библиотека обработки естественного языка (NLP) с открытым исходным кодом на основе Python, которая была создана, чтобы быть быстрой, эффективной и простой в использовании. Он предлагает множество функций обработки естественного языка (NLP), таких как классификация текста, распознавание именованных объектов, тегирование частей речи и анализ зависимостей. Он построен с использованием Python и разработан, чтобы быть быстрым, эффективным и масштабируемым.

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

Преимущества использования SpaCy

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

  1. Высокая производительность. SpaCy оптимизирован для повышения производительности, а скорость его обработки выше, чем у многих других библиотек НЛП. Он предназначен для масштабирования и может эффективно обрабатывать большие объемы текстовых данных.
  2. Предварительно обученные модели. Он предоставляет предварительно обученные модели для распознавания именованных объектов (NER), тегирования частей речи (POS), анализа зависимостей и других задач НЛП. Эти модели обучаются на больших объемах текста и могут быть точно настроены для конкретных доменов.
  3. Простой в использовании API. Предоставляет удобный и интуитивно понятный API, который упрощает использование и понимание. Он имеет простой и последовательный интерфейс, что упрощает его изучение и использование как новичками, так и опытными пользователями.
  4. Настройка: он позволяет настраивать свои модели, что позволяет обучать модели для определенных областей или задач. Пользователи также могут добавлять свои пользовательские компоненты в конвейер для более конкретной обработки.
  5. Активная разработка. Это активно развивающаяся библиотека с большим сообществом участников и пользователей. Это означает, что ошибки быстро исправляются, а новые функции регулярно добавляются, что делает его надежной и актуальной библиотекой для задач НЛП.

Используйте Comet для отслеживания метрик, гиперпараметров и моделей для вашего проекта spaCy!

Архитектура SpaCy

Архитектура делится на три основных компонента:

  1. Языковая модель. Этот компонент обеспечивает основные функции НЛП SpaCy. Он отвечает за токенизацию, маркировку частей речи, разбор зависимостей и распознавание именованных сущностей. Языковая модель обучается на больших объемах текстовых данных, и полученная модель используется для анализа нового текста.
  2. Конвейер. Этот компонент представляет собой серию шагов обработки, через которые проходит текст. Каждый шаг обработки реализуется как компонент в конвейере, и выходные данные одного компонента становятся входными данными для следующего. Конвейер можно настроить так, чтобы он включал или исключал определенные компоненты, в зависимости от конкретной задачи НЛП.

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

Общий образ архитектуры модели SpaCy показан ниже.

Установка и загрузка библиотеки SpaCy

Перед использованием SpaCy его необходимо установить. Вы можете сделать это с помощью pip, менеджера пакетов для Python.

pip install spacy

После установки SpaCy вам необходимо скачать языковую модель. SpaCy предоставляет несколько предварительно обученных моделей для разных языков. В этом примере мы будем использовать модель английского языка.

python -m spacy download en_core_web_sm

Теперь, когда вы установили и загрузили англоязычную модель, вы готовы приступить к реализации NER.

Внедрение NER с помощью SpaCy

Первым шагом в реализации NER с помощью SpaCy является загрузка текста, который вы хотите проанализировать. Например, допустим, у вас есть следующий текст заголовка новости:

# Example text
text = "Apple is looking to buying a U.S.A startup for $5 billion"

Загрузка языковой модели

После загрузки языковой модели мы можем загрузить ее в нашу программу Python с помощью функции spacy.load(). Мы будем использовать модель en_core_web_sm, которая представляет собой небольшую английскую модель, включающую векторы слов, синтаксис и именованные объекты. Вот пример загрузки языковой модели:

Чтобы проанализировать этот текст с помощью SpaCy, нам сначала нужно создать модель nlp и передать ей текст, как показано ниже.

import spacy
#Loading the language Model
nlp = spacy.load("en_core_web_sm")

text = "Apple is looking to buying a U.S.A startup for $5 billion"

doc = nlp(text)

Затем вы можете получить доступ к именованным объектам в тексте, используя свойство ents объекта doc. Это свойство возвращает итератор Span объектов, где каждый Span объект представляет именованный объект в тексте.

# Iterate over the entities in the text
for ent in doc.ents:
    # Print the text of the entity and its label (e.g. "Apple" and "ORG")
    print(ent.text, ent.label_)

Свойство text объекта Span возвращает фактический текст именованного объекта, а свойство label_ возвращает категорию именованного объекта. SpaCy поддерживает несколько категорий именованных сущностей, включая PERSON, ORG, GPE, DATE, TIME и MONE.

Вывод

Apple      ORG 
U.S.A      GPE 
$5 billion MONEY

Здесь ORG обозначает организацию, GPE обозначает геополитическую единицу, а MONEY обозначает денежное выражение. Обратите внимание, что SpaCy автоматически распознает и помечает именованные объекты в тексте на основе своих предварительно обученных моделей. Вы также можете обучать пользовательские модели с помощью SpaCy, если хотите распознавать определенные именованные объекты для своего приложения.

Заключение

В этой части вы узнали, как работает распознавание именованных объектов (NER), когда его можно применять, и как обучить специальную модель NER для извлечения медицинских терминов из текста журнала. Чтобы построить индивидуальную модель NER для ваших приложений, вы можете использовать ту же процедуру; все, что вам нужно, это некоторые аннотированные данные. Если вы не можете найти уже существующие наборы данных, подходящие для вашего варианта использования, вы можете создать свой собственный с помощью одного из этих инструментов аннотирования данных.

Примечание редактора. Heartbeat — это интернет-издание и сообщество, созданное участниками и посвященное предоставлению лучших образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.

Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение нашего еженедельного информационного бюллетеня (Еженедельник глубокого обучения), заглянуть в блог Comet, присоединиться к нам в Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов и событий. и многое другое, что поможет вам быстрее создавать более качественные модели машинного обучения.