Представление семантики слова в векторном пространстве
Сфера обработки естественного языка включает в себя создание методов обработки текста на естественном языке такими людьми, как вы и я, и извлечение из них информации для выполнения различных задач, от интерпретации пользовательских запросов в поисковых системах и возврата веб-страниц до решения запросов клиентов по мере необходимости. чат-бот-помощник. Важность представления каждого слова в форме, отражающей значение слова и общий контекст, приобретает решающее значение, особенно когда важные решения основываются на выводах, извлеченных из текста в крупном масштабе - например, при прогнозировании изменения цен на акции с помощью социальных сетей.
В этой статье мы начнем с основ линейной алгебры, чтобы получить интуитивное представление о мягких векторах и их значении для представления определенных типов информации, о различных способах представления текста в векторном пространстве и о том, как концепция эволюционировала до состояния. арт-моделей, которые у нас есть сейчас.
Мы рассмотрим следующие области:
- Единичные векторы в нашей системе координат
- Линейная комбинация векторов
- Размах в векторной системе координат
- Коллинеарность и мультиколлинеарность
- Линейная зависимость и независимость векторов
- Базисные векторы
- Модель векторного пространства для НЛП
- Плотные векторы
Единичные векторы в нашей системе координат
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) = R² (все векторы в 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 здесь.
Надеюсь, вам понравилось это читать. :)
использованная литература
- Линейная независимость, основа и измерение, Массачусетский технологический институт
- Матрицы-Введение в векторы, MIT
- Модели векторного пространства для NLP, NPTEL
- Введение в статистическое обучение, электронная книга Гарета Джеймса, Даниэлы Виттен, Тревора Хасти и Роберта Тибширани