Основы spaCy

Обработка естественного языка с помощью spaCy

Azadeh Mobasher

Principal Data Scientist

Конвейер NLP в spaCy

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("Here's my spaCy pipeline.")
  • Импортируйте spaCy
  • Используйте spacy.load(), чтобы получить nlp — объект класса Language
    • Объект Language представляет собой конвейер обработки текста
  • Примените nlp() к любому тексту, чтобы получить контейнер Doc
Обработка естественного языка с помощью spaCy

Конвейер NLP в spaCy

 

spaCy выполняет ряд шагов обработки с помощью класса Language:

Конвейер spaCy Language

Обработка естественного языка с помощью spaCy

Объекты-контейнеры в spaCy

  • В spaCy есть несколько структур данных для представления текста:

 

Название Описание
Doc Контейнер для доступа к лингвистическим аннотациям текста
Span Фрагмент объекта Doc
Token Отдельный токен: слово, знак препинания, пробел и т. д.
Обработка естественного языка с помощью spaCy

Компоненты конвейера

  • Конвейер обработки текста spaCy зависит от загруженной модели и её возможностей.

 

Компонент Название Описание
Tokenizer Токенизатор Разбивает текст на токены и создаёт объект Doc
Tagger Теггер Присваивает теги частей речи
Lemmatizer Лемматизатор Приводит слова к начальной форме
EntityRecognizer NER Обнаруживает и размечает именованные сущности
Обработка естественного языка с помощью spaCy

Компоненты конвейера

 

  • Каждый компонент обладает уникальными возможностями обработки текста

    • Language
    • DependencyParser
    • Sentencizer
Обработка естественного языка с помощью spaCy

Токенизация

  • Всегда выполняется первой
  • Все остальные операции требуют токенов
  • Токены — это слова, числа и знаки препинания
import spacy
nlp = spacy.load("en_core_web_sm")

doc = nlp("Tokenization splits a sentence into its tokens.")

print([token.text for token in doc])
['Tokenization', 'splits', 'a', 'sentence', 'into', 'its', 'tokens', '.']
Обработка естественного языка с помощью spaCy

Сегментация предложений

  • Сложнее токенизации
  • Является частью компонента DependencyParser
import spacy
nlp = spacy.load("en_core_web_sm")

text = "We are learning NLP. This course introduces spaCy."
doc = nlp(text)

for sent in doc.sents: print(sent.text)
We are learning NLP.
This course introduces spaCy.
Обработка естественного языка с помощью spaCy

Лемматизация

  • Лемма — это начальная форма токена
  • Лемма слов eats и ateeat
  • Повышает точность языковых моделей
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("We are seeing her after one year.")

print([(token.text, token.lemma_) for token in doc])
[('We', 'we'), ('are', 'be'), ('seeing', 'see'), ('her', 'she'), 
('after', 'after'), ('one', 'one'), ('year', 'year'), ('.', '.')]
Обработка естественного языка с помощью spaCy

Давайте потренируемся!

Обработка естественного языка с помощью spaCy

Preparing Video For Download...