Введение в векторные представления слов

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

Azadeh Mobasher

Principal Data Scientist

Векторы слов (эмбеддинги)

 

  • Числовые представления слов
  • Метод «мешка слов»: {"I": 1, "got": 2, ...}

 

  • Старые методы не позволяют понять смысл:
Предложения    I       got      covid   coronavirus
I got covid    1     2     3
I got coronavirus    1     2        4
Обработка естественного языка с помощью spaCy

Векторы слов

  • Фиксированное число измерений
  • Учитывает частоту слов и наличие других слов в схожих контекстах

Примеры векторов слов

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

Векторы слов

  • Несколько подходов к построению векторов слов:

    • word2vec, Glove, fastText и архитектуры на основе трансформеров
  • Пример вектора слова:

Пример вектора слова

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

Словарь spaCy

 

  • Входят во многие модели spaCy.
  • en_core_web_md содержит 300-мерные векторы для 20 000 слов.

 

import spacy
nlp = spacy.load("en_core_web_md")
print(nlp.meta["vectors"])
>>> {'width': 300, 'vectors': 20000, 'keys': 514157, 
'name': 'en_vectors', 'mode': 'default'}
Обработка естественного языка с помощью spaCy

Векторы слов в spaCy

  • nlp.vocab: доступ к словарю (класс Vocab)
  • nlp.vocab.strings: доступ к идентификаторам слов в словаре
import  spacy
nlp = spacy.load("en_core_web_md")
like_id = nlp.vocab.strings["like"]
print(like_id)
>>> 18194338103975822726
  • .vocab.vectors: доступ к векторам слов модели или конкретного слова по его идентификатору
print(nlp.vocab.vectors[like_id])
>>> array([-2.3334e+00, -1.3695e+00, -1.1330e+00, -6.8461e-01, ...])
Обработка естественного языка с помощью spaCy

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

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

Preparing Video For Download...