Практический NLP с Python-библиотекой spaCy для SEO-задач в Google Colab

Python NLP spaCy Data Science примеры обучение, курсы Data Science примеры обучение, анализ больших данных Python Google Colab примеры курсы обучение, анализ больших данных на графах примеры, аналитик данных примеры курсы обучение, Школа Больших Данных Учебный Центр Коммерсант

В рамках продвижения наших курсов по Data Science и Machine Learning, сегодня познакомимся с Python-библиотекой spaCy и русскоязычной NLP-моделью, развернув их в интерактивной среде Google Colab. В качестве практического примера решим небольшую SEO-задачу: определим части речи для каждого слова в небольшом тексте и количество их повторений.

Применение библиотеки spaCy на русскоязычной ML-модели для NLP в Google Colab

Машинное обучение давно и успешно применяется для задач обработки естественного языка (NLP, Natural Language Processing). Причем современный Data Scientist не часто разрабатывает собственную ML-модель распознавания текста самостоятельно. Обычно используются готовые библиотеки, например, spaCy. Эта библиотека с открытым исходным кодом для NLP, написанная на Python и Cython. В отличие от пакета NLTK, который чаще применяется для обучения и исследований, spaCy широко используется в реальных проектах.

Центральными структурами данных в spaCy являются объекты документ (Doc) и словарь (Vocab):

  • Doc хранит последовательности токенов и все их аннотации. Он создается объектом Tokenizer, а затем модифицируется внутренними компонентами конвейера, которые координируются объектом Language. Он берет необработанный текст и отправляет его по конвейеру, возвращая аннотированный документ.
  • Vocab хранит набор справочных таблиц, что делает общую информацию доступной для всех документов. Благодаря централизованному хранению в словаре строк, векторов слов и лексических атрибутов нет необходимости хранить несколько копий этих данных, что экономит память и обеспечивает единый источник истины.

Текстовые аннотации нужны для обеспечения единого источника истины: объект Doc владеет данными, а Span и Token являются представлениями, указывающими на них.

NLP scpaCy Python
Объекты Python-библиотеки spaCy для NLP-задач

Чтобы продемонстрировать пример использования библиотеки spaCy для NLP-задач, воспользуемся интерактивной средой Google Colab. Сперва нужно установить библиотеку:

! pip install spacy

SpaCy обучить собственные ML-модели или загрузить предварительно обученные статистические алгоритм для разных задач.  В рамках этой демонстрации будем использовать предварительно обученную модель на русском языке ru_core_news_sm. Это NLP-конвейер, включающий несколько компонентов, таких как токенизатор, синтаксический анализатор, лемматизатор и пр. Чтобы загрузить эту модель, выполним в Google Colab следующую инструкцию:

! python -m spacy download ru_core_news_sm

При применении NLP-методов к тексту, spaCy разбивает этот текст на токены, получая объект Doc, который содержит последовательность объектов класса Token и другую полезную информацию. Затем объект Doc последовательно обрабатывается в несколько шагов, что называется конвейером. В стандартных ML-моделях конвейер состоит из нескольких компонентов, которые тегируют, выполняют синтаксический анализ и распознавание сущностей в тексте. Каждая компонента принимает на вход объект Doc и возвращает его расширенную версию с новыми атрибутами для каждого токена или для всего объекта в целом.

В качестве практического примера решим небольшую SEO-задачу: определим части речи для каждого слова в небольшом тексте и количество их повторений. Для этого импортируем библиотеку spaCy в свой Python-скрипт, загрузим библиотеку с обученной русскоязычной ML-моделью и с помощью готовых методов определим, к какой части речи относится каждое слово в следующем тексте, а также сколько раз оно встречается. В качестве анализируемого текста зададим следующую пару предложений:

Хочу на море, теплое море, в Таиланд, там тепло, солнечно и вкусные фрукты, только с дерева, которые стоят копейки. Также Таиланд славится песчаными пляжами, которые обрамляют чудесное чистое море.

Скрипт в Google Colab выглядит следующим образом:

import spacy

nlp = spacy.load("ru_core_news_sm")

doc = nlp("Хочу на море, теплое море, в Таиланд, \
    там тепло, солнечно и вкусные фрукты, только с дерева, которые стоят копейки. \
    Также Таиланд славится песчаными пляжами, которые обрамляют чудесное чистое море."
)

vocab = {}

for token in doc:
    if token.text not in vocab.keys():
      vocab[token.text] = 1
    else:
      vocab[token.text] += 1;


for token in doc:
      print(token.text, token.pos_, vocab[token.text])

Получим следующий результат:

NLP scpaCy Python SEO Google Colab
Применение библиотеки spaCy на русскоязычной ML-модели для NLP в Google Colab

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

Как применить эти и другие методы и средства NLP для аналитики больших данных в реальных проектах Machine Learning, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://nlpub.ru/SpaCy
  2. https://spacy.io/models/ru
Поиск по сайту