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

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

В этой статье мы начнем с основ линейной алгебры, чтобы получить интуитивное представление о мягких векторах и их значении для представления определенных типов информации, о различных способах представления текста в векторном пространстве и о том, как концепция эволюционировала до состояния. арт-моделей, которые у нас есть сейчас.

Мы рассмотрим следующие области:

  • Единичные векторы в нашей системе координат
  • Линейная комбинация векторов
  • Размах в векторной системе координат
  • Коллинеарность и мультиколлинеарность
  • Линейная зависимость и независимость векторов
  • Базисные векторы
  • Модель векторного пространства для НЛП
  • Плотные векторы

Единичные векторы в нашей системе координат

i - ›обозначает единичный вектор (вектор длиной 1 единицу), указывающий в направлении оси x.

j - ›обозначает единичный вектор в направлении оси y.

Вместе они называются основой нашего координатного векторного пространства.

Мы еще поговорим о термине основа в следующих частях ниже.

  • Предположим, у нас есть вектор 3 i + 5 j
  • Этот вектор имеет координаты x, y: 3 и 5 соответственно.
  • Эти координаты являются скалярами, которые переворачивают и масштабируют единичные векторы на 3 и 5 единиц в направлениях x и y соответственно.

Линейное сочетание двух векторов

Если u и v - два вектора в двухмерном пространстве, то их линейная комбинация дает вектор l представлен -

l = x1. u + x2. v

  • Числа x1, x2 - компоненты вектора x
  • По сути, это операция масштабирования и сложения по x заданных векторов.

Вышеприведенное выражение линейной комбинации эквивалентно следующей линейной системе -

Bx = l

Где B обозначает матрицу, столбцы которой равны u и v .

Давайте разберемся в этом на примере ниже с векторами u и v в двухмерном пространстве -

# Vectors u & v
# The vectors are 3D, we'll only use 2 dimensions
u_vec = np.array([1, -1, 0])
v_vec = np.array([0, 1, -1])
# Vector x
x_vec = np.array([1.5, 2])
# Plotting them
# fetch coords from first 2 dimensions
data = np.vstack((u_vec, v_vec))[:,:2]
origin = np.array([[0, 0, 0], [0, 0, 0]])[:,:2]
plt.ylim(-2,3)
plt.xlim(-2,3)
QV = plt.quiver(origin[:,0],origin[:,1], data[:, 0], data[:, 1], color=['black', 'green'], angles='xy', scale_units='xy', scale=1.)
plt.grid()
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.show()

Мы также можем понять это из этого объяснения аналогичного примера с тремя измерениями, приведенного профессором в его заметках здесь -

Взять 3 вектора из примера на изображении и построить их в трехмерном пространстве (единицы осей отличаются от векторов на графике)

u_vec = np.array([1, -1, 0])
v_vec = np.array([0, 1, -1])
w_vec = np.array([0, 0, 1])
data = np.vstack((u_vec, v_vec, w_vec))
origin = np.array([[0, 0, 0], [0, 0, 0], [0, 0, 0]])
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.quiver(origin[:,0],origin[:,1], origin[:,2], data[:, 0], data[:, 1], data[:,2])
ax.set_xlim([-1, 2])
ax.set_ylim([-1, 2])
ax.set_zlim([-1, 2])
plt.grid()
plt.show()

Охватывать

  • Промежуток - это набор всех возможных комбинаций векторов, которых мы можем достичь с помощью линейной комбинации заданной пары векторов.
  • Оболочка большинства пар двумерных векторов - это все векторы в двумерном пространстве. За исключением случаев, когда они выстраиваются в одном направлении (т. Е. Если они коллинеарны), и в этом случае их промежуток является линией.

т.е. span (a, b) = (все векторы в 2D-пространстве ), если они не коллинеарны.

Коллинеарность

Коллинеарность - это случай, когда у нас есть p разных переменных-предикторов, но некоторые из них являются линейными комбинациями других, поэтому они не добавляют никакой другой информации. 2 коллинеарных вектора / переменных будут иметь корреляцию, близкую к +/- 1, и могут быть обнаружены с помощью их корреляционной матрицы.

Мультиколлинеарность существует, когда более двух векторов коллинеарны, и любая пара векторов не обязательно может иметь высокую корреляцию.

Линейная независимость

Мы говорим, что v1, v2,. . . , vn линейно независимы, если ни один из них не

линейная комбинация остальных. Это эквивалентно высказыванию

что x1.v1 + x2.v2 +. . . + xn.vn = 0 означает x1 = x2 =. . . = xn = 0

Поскольку коллинеарные векторы могут быть выражены как линейные комбинации друг друга, они линейно зависимы.

Основа

Базис - это набор линейно независимых векторов, охватывающих это пространство.

Мы называем эти векторы базисными векторами

Модели векторного пространства в НЛП

Векторное пространство - это набор векторов V, в котором определены две операции - сложение векторов и скалярное умножение. Например, ЕСЛИ два вектора u и v находятся в пространстве V , то их сумма w = u + v также будет лежать в векторном пространстве V.

2D векторное пространство - это набор линейно независимых векторов вазиса с 2 осями.

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

Вспоминая предыдущий график вектора a = (3,5) = 3 i + 5 j снова. Этот вектор представлен в 2D-пространстве с двумя линейно независимыми базисными векторами - X и Y, которые также представляют 2 оси, а также 2 измерения пространства.

3 и 5 - это компоненты x, y этого вектора для представления в двумерном пространстве X-Y.

Модель векторного пространства в НЛП

Модель векторного пространства - это представление текста в векторном пространстве.

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

  • Это означает, что каждое слово ортогонально другим словам / осям.
  • Для корпуса словаря | V |, R будет содержать | V | топоры.
  • Комбинация терминов представляет документы в виде точек или векторов в этом пространстве.

Для трех слов у нас будет трехмерная векторная модель, представленная следующим образом:

В таблице над графиком представлена ​​матрица инцидентов TF-IDF.

D1 = (0,91, 0, 0,0011) представляет вектор документа в трех осях - добро, дом, машина. Точно так же у нас есть векторы документов D2 и D3.

Но как нам помогает представление в векторном пространстве?

  • Одно из распространенных приложений, использующих это представление, - это поиск информации для поисковых систем, систем ответа на вопросы и многого другого.
  • Представляя текст в векторах, мы стремимся использовать векторную алгебру для извлечения семантики из текста и использования ее для различных приложений, таких как поиск документов, содержащих подобную сегментацию, содержащуюся в заданном поисковом запросе.

Например, Для поискового токена покупка мы хотели бы получить все документы, содержащие разные формы этого слова - покупка, покупка и даже синонимы слова купить. Такие документы не могут быть получены с помощью других элементарных методов, представляющих документы в виде двоичной матрицы инцидентов.

Это достигается за счет показателей расстояния, таких как косинусное сходство между векторами документа и запроса, где документы, расположенные ближе к запросу, получают наивысший рейтинг.

  • Количество слов / словарный запас может достигать миллионов, например. Корпус новостей Google составляет 3 миллиона, что означает столько же независимых осей / измерений для представления векторов. Следовательно, мы хотим использовать операции в векторном пространстве, чтобы уменьшить количество измерений и вывести слова, похожие друг на друга, на одной оси.

Плотные векторы

  • Вышеупомянутые операции возможны с векторами документов, которые представлены расширением вышеуказанного векторного представления документов до документов, представленных как распределенные или плотные векторы. Эти представления фиксируют семантику текста, а также фиксируют линейные комбинации векторов слов.
  • Предыдущая модель векторного пространства, в которой каждое слово представляет отдельное измерение, приводит к разреженным векторам.
  • Плотные векторы фиксируют контекст в векторном представлении. Плотный вектор слов таков, что слова, появляющиеся в похожих контекстах, будут иметь похожие представления.
  • Эти плотные векторы также называются вложениями слов или распределенными представлениями.
  • word2vec - одна из таких платформ для изучения плотных векторов слов из большого корпуса. Имеется 2 варианта - скип-грамм и CBOW (сплошной мешок слов).
  • Некоторые из других фреймворков и методов для получения плотных векторов - это глобальные векторы (GloVe), fastText, ELMo (вложения из языковой модели) и самые последние современные подходы, основанные на методе Берта, для получения контекстуализированных встраиваний слов во время логического вывода.

Заключение

В этой статье представлена ​​концепция векторного пространства на основе линейной алгебры и выделены связанные концепции как часть их применения в Обработке естественного языка для представления текстовых документов в задачах представления семантики и извлечения.

Приложения встраивания слов были расширены до более сложных и широких приложений с гораздо более высокой производительностью, чем раньше.

Вы также можете обратиться к исходному коду и запустить его на colab, зайдя в мой репозиторий Git здесь.

Надеюсь, вам понравилось это читать. :)

использованная литература