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

Практический NLP с Python-библиотекой spaCy для SEO-задач в 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 в Москве:

[elementor-template id=»13619″]

Источники

  1. https://nlpub.ru/SpaCy
  2. https://spacy.io/models/ru