Введение

Обработка естественного языка (NLP) — это область, которая дает компьютерам возможность распознавать человеческие языки и связывает людей с компьютерами. Проекты НЛП можно создавать разными способами, и один из них — использование библиотеки Python S paCy.

В этом посте будет рассказано о том, как работает самое передовое программное обеспечение НЛП SpaCy. Вы также обнаружите выдающиеся качества SpaCy и то, чем они отличаются от NLTK, который предлагает интригующий взгляд на НЛП.

Что такое спаци?

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

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

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

С помощью SpaCy вы можете использовать конвейер для преобразования необработанного текста в окончательный документ, что позволяет вам добавлять дополнительные компоненты конвейера в вашу библиотеку НЛП и реагировать на ввод пользователя.

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

Установка SpaCy

Установка Python в системе является обязательным условием для настройки SpaCy. Они доступны для скачивания и установки на сайте Python.

Установка SpaCy и его модели — это следующий шаг после установки Python и pip. Для этого можно использовать следующую команду.

pip install spacy

python -m spacy download en_core_web_sm

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

Comet теперь интегрирована со SpaCy! Узнайте больше и начните бесплатно уже сегодня.

Объекты и функции SpaCy

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

  1. Doc: это наиболее часто используемый объект-контейнер. Чтобы создать наш первый контейнер документов, рекомендуется всегда называть этот объект «doc» (в нижнем регистре). Затем вызовите объект «nlp» и передайте текст в качестве одного аргумента для создания контейнера документов.
with open ("dataFolder/wiki_data.txt", "r") as f:
    text = f.read()

#Create a Doc container with the text file wiki_data.txt
doc = nlp(text)

#To print all the text held in The doc container
print (doc)

2. Токенизация: основные текстовые единицы, используемые в каждой деятельности НЛП, — это словесные токены. Это процесс сегментации текста на «токены», состоящие из слов, запятых, пробелов, символов, знаков препинания и других элементов. Разбиение текста на токены — начальный этап обработки текста.

from spacy.lang.en import English
 ​
 nlp = English()
 ​
 # Process the given text line
 doc = nlp("Singapore is nice place to visit")
 ​
 # Select the first token from the line
 token1 = doc[0]
 ​
 # Print the first token from the text
 print(token1.text) 

 Output: Singapore

На изображении ниже показано слово и его положение токена во входном тексте.

3. Маркировка частей речи (POS):SpaCy имеет методы для организации предложений в списки слов и классификации каждого слова в соответствии с его частью речи в контексте. Разделение слов на грамматические характеристики, такие как существительные, глаголы, прилагательные и наречия, является частью процесса POS.

В приведенном ниже коде поясняется тегирование POS:

 import  spacy
 nlp  = spacy.load("en_core_web_sm")
 text1 = "Susan is my neighbor; She is charming and having 1 brother"
 # Now, Process the input text
 doc = nlp(text1)
 for token in doc:
     # Get the token text, part-of-speech (POS) tag 
     token_text1 = token.text
     token_pos1 = token.pos_

     # This is for formatting only
     print(f"{token_text1:<12}{token_pos1:<8}")  

Вывод:

 
 Susan       NOUN
 is          AUX 
 my          ADJ
 neighbor    NOUN
 she         PROPN
 ................
 ................
 1           NUM 

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

Код в этом разделе демонстрирует распознавание сущностей простыми словами. Для этого сначала импортируйте SpaCy и загрузите модель для обработки текста. Затем выполните итерацию по каждому объекту и выведите его метку.

import spacy
 nlp = spacy.load("en_core_web_sm")
 text1 = "Upcoming iPhone XII release date leaked as apple discloses it's pre-orders"
 # Process the input text
 doc = nlp(text1)

 # Iterate over the entities
 for ent in doc.ents:
     # Print the entity from the input text and label
     print(ent.text, ent.label_)

Вывод:Apple ORG

Разница между SpaCy и NLTK

NLTK и SpaCy существенно различаются по нескольким параметрам.

1. NLTK может поддерживать различные языки, но у SpaCy есть модели только для семи языков: английского, французского, немецкого, испанского, португальского, итальянского и голландского.

2. SpaCy использует объектно-ориентированный подход, при котором при анализе текста он возвращает объект документа, слова и предложения которого сами являются объектами, тогда как NLTK принимает строки в качестве входных данных и возвращает строки или списки строки в качестве вывода, потому что это библиотека обработки строк.

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

4. В NLTK нет поддержки векторов слов, но у SpaCy есть такая возможность.

На изображении ниже показана быстрая разница между NLTK и SpaCy.

Заключение

При разработке системы НЛП отличным выбором являются NLTK и SpaCy. Но, как мы видели, SpaCy — лучший инструмент для использования в реальных условиях из-за его высокого удобства и производительности, которые обусловлены его основным принципом предоставления услуги, а не просто инструмента. Надеюсь, эта статья вдохновила вас на эксперименты со SpaCy.

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

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

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