Лингвистические признаки

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

Azadeh Mobasher

Principal Data Scientist

POS-разметка

  • POS-теги зависят от контекста, соседних слов и их тегов
import spacy
nlp = spacy.load("en_core_web_sm")
text = "My cat will fish for a fish tomorrrow in a fishy way."
print([(token.text, token.pos_, spacy.explain(token.pos_)) 
        for token in nlp(text)])

Пример POS-разметки

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

Зачем нужна POS-разметка?

 

  • Повышает точность многих задач NLP

 

I will fish tomorrow.

I ate fish.

 

  • Применение в системах перевода

 

verb -> pescaré

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

Зачем нужна POS-разметка?

 

  • Снятие лексической многозначности (WSD) — задача определения значения, в котором слово употреблено в предложении.
  • Определение значения слова критически важно, например, для машинного перевода.

Пример WSD

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

Снятие лексической многозначности

import spacy
nlp = spacy.load("en_core_web_sm")

verb_text = "I will fish tomorrow."
noun_text = "I ate fish."


print([(token.text, token.pos_) for token in nlp(verb_text) if "fish" in token.text], "\n") print([(token.text, token.pos_) for token in nlp(noun_text) if "fish" in token.text])
[('fish', 'VERB', 'verb')] 
[('fish', 'NOUN', 'noun')]
Обработка естественного языка с помощью spaCy

Синтаксический разбор зависимостей

  • Анализирует синтаксис предложения
  • Устанавливает связи между токенами
  • Результат — дерево зависимостей

Пример синтаксического разбора зависимостей

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

Синтаксический разбор зависимостей и spaCy

 

  • Метка зависимости описывает тип синтаксической связи между двумя токенами

 

Метка зависимости Описание
nsubj Именное подлежащее
root Корень
det Детерминатив
dobj Прямое дополнение
aux Вспомогательный глагол
Обработка естественного языка с помощью spaCy

Синтаксический разбор зависимостей и displaCy

  • displaCy позволяет строить деревья зависимостей
doc = nlp("We understand the differences.")

spacy.displacy.serve(doc, style="dep")

Пример дерева зависимостей в displaCy

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

Синтаксический разбор зависимостей и spaCy

  • Атрибут .dep_ для получения метки зависимости токена

 

doc = nlp("We understand the differences.")
print([(token.text, token.dep_, spacy.explain(token.dep_)) for token in doc])
[('We', 'nsubj', 'nominal subject'), ('understand', 'ROOT', 'root'),
('the', 'det', 'determiner'), ('differences', 'dobj', 'direct object'),
('.', 'punct', 'punctuation')]
Обработка естественного языка с помощью spaCy

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

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

Preparing Video For Download...