Векторное представление слов — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 1: Строка 1:
'''Статья находится в разработке'''
 
 
 
'''Векторное представление слов''' - общее название для различных подходов к моделированию языка и обучению представлений в обработке естественного языка, направленных на сопоставление словам (и, возможно, фразам) из некоторого словаря векторов из значительно меньшего количества слов в словаре. Для этого используют нейронные сети, методы понижения размерности в применении к матрицам совместных упоминаний слов (word co-occurrence matrices) и явные представления, обучающиеся на контекстах упоминаний слов (explicit representations).
 
'''Векторное представление слов''' - общее название для различных подходов к моделированию языка и обучению представлений в обработке естественного языка, направленных на сопоставление словам (и, возможно, фразам) из некоторого словаря векторов из значительно меньшего количества слов в словаре. Для этого используют нейронные сети, методы понижения размерности в применении к матрицам совместных упоминаний слов (word co-occurrence matrices) и явные представления, обучающиеся на контекстах упоминаний слов (explicit representations).
 
TODO:
 
tf-idf
 
cosinus measure
 
bag-of-words (BOW)
 
continuous BOW
 
N-gram
 
skip-gram
 
word2vec with skip-grams learning
 
  
 
== One-hot encoding ==
 
== One-hot encoding ==
Наиболее простой способ представления слов в виде векторов. Пусть число различных слов равно <math>K</math>. Сопоставим слову с номером <math>i</math> вектор длины <math>K</math>, в котором <math>i</math>-тая координата равна единице, а все остальные - нулям.
+
Наиболее простой способ представления слов в виде векторов. Пусть число различных слов равно <math>K</math>. Сопоставим слову с номером <math>i</math> вектор длины <math>K</math>, в котором <math>i</math>-тая координата равна единице, а все остальные - нулям. Недостатком one-hot encoding является то, что по векторным представлениям нельзя судить о схожести смысла слов. Также вектора имеют очень большой размер, из-за чего их неэффективно хранить в памяти.
  
 
[[Файл:One-hot-encoding.png|300px]]
 
[[Файл:One-hot-encoding.png|300px]]
  
 
== word2vec ==
 
== word2vec ==
word2vec - способ построения сжатого пространства векторов слов, использующий нейронную сеть. Принимает на вход большой текстовый корпус и сопоставляет каждому слову вектор. Сначала он создает словарь, а затем вычисляет векторное представление слов. Векторное представление основывается на контекстной близости: слова, встречающиеся в тексте рядом с одинаковыми словами (а следовательно, имеющие схожий смысл), в векторном представлении будут иметь близкие координаты векторов-слов. В word2vec существуют две основных модели обучения: skip-grams и CBOW (Continuous Bag of Words). В модели skip-grams по слову предсказываются слова из его контекста, а в модели CBOW по контексту подбирается наиболее вероятное слово.  
+
word2vec - способ построения сжатого пространства векторов слов, использующий нейронные сети. Принимает на вход большой текстовый корпус и сопоставляет каждому слову вектор. Сначала он создает словарь, а затем вычисляет векторное представление слов. Векторное представление основывается на контекстной близости: слова, встречающиеся в тексте рядом с одинаковыми словами (а следовательно, имеющие схожий смысл), в векторном представлении будут иметь близкие координаты векторов-слов.  
 +
 
 +
В word2vec существуют две основных модели обучения: Skip-gram и CBOW (Continuous Bag of Words). В модели Skip-gram по слову предсказываются слова из его контекста, а в модели CBOW по контексту подбирается наиболее вероятное слово. На выходном слое используется функция <math>softmax</math> или его вариация, чтобы получить на выходе распределение вероятности каждого слова. В обеих моделях входные и выходные слова подаются в one-hot encoding, благодаря чему при умножении на матрицу <math>W</math>, соединяющую входной и скрытый слои, происходит выбор одной строки <math>W</math>. Размерность <math>N</math> является гиперпараметром алгоритма, а обученная матрица <math>W</math> - выходом, так как ее строки содержат векторные представления слов.
 +
 
 +
{|align="center"
 +
|-valign="top"
 +
|[[Файл:skip-gram.png|400px|thumb|Схема сети для модели Skip-gram]]
 +
|[[Файл:cbow.png|400px|thumb|center|Схема сети для модели CBOW]]
 +
|}
 +
 
  
 
Полученные векторы-слова могут быть использованы для вычисления семантического расстояния между словами. После обучения векторы отражают различные грамматические и семантические концепции.
 
Полученные векторы-слова могут быть использованы для вычисления семантического расстояния между словами. После обучения векторы отражают различные грамматические и семантические концепции.
  
<math>W_{king} - W_{man} + W_{woman} = W_{queen}</math><br>
+
<math>W_{king} + (W_{woman} - W_{man}) = W_{queen}</math><br>
<math>W_{shirt} - W_{clothing} + W_{furniture} = W_{chair}</math>
+
<math>W_{walked} - W_{walking} = W_{swam} - W_{swimming}</math>
 +
 
 +
[[Файл:Words-space.png|600px]]
  
 
== См. также ==
 
== См. также ==

Версия 12:52, 2 марта 2019

Векторное представление слов - общее название для различных подходов к моделированию языка и обучению представлений в обработке естественного языка, направленных на сопоставление словам (и, возможно, фразам) из некоторого словаря векторов из значительно меньшего количества слов в словаре. Для этого используют нейронные сети, методы понижения размерности в применении к матрицам совместных упоминаний слов (word co-occurrence matrices) и явные представления, обучающиеся на контекстах упоминаний слов (explicit representations).

One-hot encoding

Наиболее простой способ представления слов в виде векторов. Пусть число различных слов равно [math]K[/math]. Сопоставим слову с номером [math]i[/math] вектор длины [math]K[/math], в котором [math]i[/math]-тая координата равна единице, а все остальные - нулям. Недостатком one-hot encoding является то, что по векторным представлениям нельзя судить о схожести смысла слов. Также вектора имеют очень большой размер, из-за чего их неэффективно хранить в памяти.

One-hot-encoding.png

word2vec

word2vec - способ построения сжатого пространства векторов слов, использующий нейронные сети. Принимает на вход большой текстовый корпус и сопоставляет каждому слову вектор. Сначала он создает словарь, а затем вычисляет векторное представление слов. Векторное представление основывается на контекстной близости: слова, встречающиеся в тексте рядом с одинаковыми словами (а следовательно, имеющие схожий смысл), в векторном представлении будут иметь близкие координаты векторов-слов.

В word2vec существуют две основных модели обучения: Skip-gram и CBOW (Continuous Bag of Words). В модели Skip-gram по слову предсказываются слова из его контекста, а в модели CBOW по контексту подбирается наиболее вероятное слово. На выходном слое используется функция [math]softmax[/math] или его вариация, чтобы получить на выходе распределение вероятности каждого слова. В обеих моделях входные и выходные слова подаются в one-hot encoding, благодаря чему при умножении на матрицу [math]W[/math], соединяющую входной и скрытый слои, происходит выбор одной строки [math]W[/math]. Размерность [math]N[/math] является гиперпараметром алгоритма, а обученная матрица [math]W[/math] - выходом, так как ее строки содержат векторные представления слов.

Схема сети для модели Skip-gram
Схема сети для модели CBOW


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

[math]W_{king} + (W_{woman} - W_{man}) = W_{queen}[/math]
[math]W_{walked} - W_{walking} = W_{swam} - W_{swimming}[/math]

Words-space.png

См. также

Примечания


Источники информации

  1. [1] — fastText by Facebook