Это перевод. Оригинал: Latent semantic indexing
Рассмотрим упрощение терм-документной матрицы C с помощью понижения ранга матрицы посредством сингулярного разложения. Аппроксимация в нижнем ранге матрицы C даёт новое представление каждого документа в наборе. Мы также внесём запросы в это представление низкого ранга, что позволит нам вычислить степень схожести запрос-документ в этом представлении низкого ранга. Этот процесс известен как латентно-семантическое индексирование.
Но сперва нам нужно обосновать такую аппроксимацию. Вспомним представление документов и запросов в векторном пространстве, введённое в Разделе 6.3 (страница). Это представление в векторном пространстве имеет множество преимуществ, таких как единообразное обращение к запросам и документам как к векторам, вычисление оценки, основанное на косинусном сходстве, способность взвешивать разные слова по-разному, а также его расширяемость за рамки получения документов с целью кластеризации и классификации. Впрочем, представление в векторном пространстве не умеет справляться с двумя классическими проблемами, возникающими в естественных языках: синонимичность и многозначность. Синонимичность - это случаи, когда два разных слова (например машина и автомобиль) имеют одинаковое значение. Представление в векторном пространстве не имеет связи между синонимичными словами, такими как машина и автомобиль - и размещает их в разных измерениях векторного пространства. Вследствие этого вычисляемое сходство между запросом
(например “машина”) и документом
, содержащим оба слова “машина” и “автомобиль”, не учитывает реальное сходство, которое увидел бы человек. Многозначность же являет собой случаи, когда одно слово, например “лист”, имеет несколько значений, из-за чего вычисляемое сходство
получается выше, чем воспринимаемое человеком. Можем ли мы использовать появление слов в разном контексте (например слово “лист”, встречающееся в документе о деревьях, и в документе о фанере) чтобы уловить латентно-семантические ассоциации между словами и решить эти проблемы?
Даже у набора скромного размера матрица документов и слов C скорее всего будет иметь несколько десятков тысяч строк и столбцов, а также ранг в несколько десятков тысяч. При латентно-семантическом индексировании (иногда называемом латентно-семантическим анализом (ЛСА)) мы используем сингулярное разложение матрицы для создания низкоранговой аппроксимации Ck терм-документной матрицы, со значением k, значительно меньшим оригинального ранга матрицы C. В экспериментальной работе, описываемой ниже в этом разделе, значение k принимается в районе 100. Далее мы присваиваем каждую строку/каждый столбец (соответственно слову/документу) k-мерному пространству; это пространство определяется k собственными векторами (соответственно самым большим собственным значениям) и
. Заметим, что матрица Ck сама по себе по-прежнему остаётся матрицей
, независимо от k.
Далее мы воспользуемся новым k-мерным представлением LSI также, как сделали с оригинальным представлением - вычислим схожести между векторами. Вектор запросов присваивается своему представлению в пространстве LSI через трансформацию
(244)
Теперь мы можем воспользоваться мерой косинусного сходства как в Разделе 6.3.1 (страница) чтобы вычислить сходство между запросом и документом, между двумя документами или между двумя словами. Отметим, что формула 244 никоим образом не зависит от того, что был запросом; это просто вектор в пространстве слов. Это означает, что если у нас есть LSI-представление набора документов, то новый документ может быть “вложен” в это представление с помощью Формулы 244. Это позволяет нам пошагово добавлять документы в LSI-представление. Разумеется, такое пошаговое добавление не учитывает смежность новых добавленных документов (и даже игнорирует любые новые слова, которые в них содержатся). Вследствие этого качество LSI-представления будет деградировать при добавлении всё новых и новых документов и со временем потребует перевычисления LSI-представления.
Точность аппроксимации Ck в C позволяет нам считать, что относительные значения косинусного сходства сохранены: если запрос находится близко к документу в оригинальном пространстве, то они останутся относительно близки в k-мерном пространстве. Но само по себе это не особенно эффективно, учитывая что разреженный вектор запроса становится плотным вектором запроса
в маломерном пространстве. Такие вычисления очень затратны, если сравнивать их с затратами на вычисление
в его родном виде.
Рабочий пример. Создадим матрицу документов и слов
|
|
|
|
|
|
|
|
|
|
ship |
1 |
0 |
1 |
0 |
0 |
0 |
|
|
boat |
0 |
1 |
0 |
0 |
0 |
0 |
|
|
ocean |
1 |
1 |
0 |
0 |
0 |
0 |
|
|
voyage |
1 |
0 |
0 |
1 |
1 |
0 |
|
|
trip |
0 |
0 |
0 |
1 |
0 |
1 |
|
В результате сингулярного разложения этой матрицы, получаем 3 матрицы, приведённые ниже. Первой идёт , которая в этом примере выглядит так:
|
|
1 |
2 |
3 |
4 |
5 |
|
|
ship |
|
|
|
|
|
|
|
boat |
|
|
|
0.00 |
0.73 |
|
|
ocean |
|
|
|
0.00 |
|
|
|
voyage |
|
0.35 |
0.15 |
|
0.16 |
|
|
trip |
|
0.65 |
|
0.58 |
|
|
При сингулярном разложении считается матрицей слов сингулярного разложения. Сингулярные значения ∑=
2.16 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
1.59 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
1.28 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
1.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.39 |
Наконец, у нас есть , которая в контексте матрицы слов и документов известна как сингулярно разложенная матрица документов:
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
2 |
|
|
|
0.63 |
0.22 |
0.41 |
|
|
3 |
0.28 |
|
0.45 |
|
0.12 |
|
|
|
4 |
0.00 |
0.00 |
0.58 |
0.00 |
|
0.58 |
|
|
5 |
|
0.29 |
0.63 |
0.19 |
0.41 |
|
|
“Обнулив” все, кроме двух самых больших сингулярных значений ∑, мы получим ∑2=
2.16 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
1.59 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
На основе этого мы вычисляем С2 =
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
2 |
|
|
-0.30 |
1.00 |
0.35 |
0.65 |
|
|
3 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
|
|
4 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
|
|
5 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
|
Заметьте, что низкоранговая аппроксимация, в отличие от оригинальной матрицы C, может иметь отрицательные значения. Конец рабочего примера.
Рассмотрение C2 и ∑2 в показывает, что последние три строки обеих матриц были заполнены нулями. Это означает, что результат сингулярного разложения в Формуле 241 может быть вычислен только для первых двух строк в представлениях ∑2 и
; после чего мы можем заменить эти матрицы их усечёнными версиями ∑'2 и
. Например, усечённая матрица документов сингулярного разложения
в данном примере выглядит так:
|
|
|
|
|
|
|
d6 |
|
|
1 |
|
|
|
|
|
|
|
|
2 |
|
|
|
1.00 |
0.35 |
0.65 |
|
Рисунок 18.3 иллюстрирует документы в в двух измерениях. Отметим, что C2 является плотным относительно C.
Рис. 18.3: Документы из Примера 18.4, спроецированные в двумерном пространстве в .
В общем случае мы можем рассматривать низкоранговую аппроксимацию C к Ck как задачу ограниченной оптимизации: ограничением является то, что Ck имеет максимальный ранг k, мы ищем представление слов и документов, составляющих C с низкой нормой Фробениуса при допустимой погрешности (comprising
with low Frobenius norm for the error
). При ужатии (forced to sqeeze) слов/документов в k-мерное пространство, сингулярное разложение сведёт вместе слова, встречающиеся в похожих случаях. Данная логика предполагает, что качество результатов не слишком пострадает от уменьшения мерности, но на деле может стать лучше.
Dumais (1993) и Dumais (1995) проводили эксперименты с LSI на документах и задачах TREC, используя широко применяемый алгоритм Ланцоша для вычисления сингулярного разложения. Во время их работы в ранние 90-е LSI-обработка десятков тысяч документов занимала примерно день на одной машине. В своих экспериментах они достигли точности аналогичной или более высокой среднего уровня участников TREC (median TREC participant). Примерно в 20% тем TREC их система имела наивысшую оценку, и чуть-чуть лучше средней, чем стандартные векторные пространства LSI в 350 измерениях. Вот некоторые выводы об LSI, первоначально сделанные из их работы, и после подтверждённые многими другими экспериментами.
-
Затраты на вычисление сингулярного разложения велики; на момент написания мы не знаем ни об одном успешном эксперименте с более чем одним миллионом документов. Это было самым большим препятствием для широкого внедрения LSI. Как способ решения, можно построить LSI-представление случайно выбранного подмножества документов в наборе, после чего остальные документы “вкладываются”, как описано в Формуле 244.
-
При уменьшении k уменьшается и отзывчивость (recall), что ожидаемо.
-
Что удивительно, значение k порядка ста может увеличить точность в некоторых тестах. Это предполагает, что при подходящем значении k LSI решает задачи синонимичности.
-
LSI лучше всего работает в случаях, где между запросами и документами малое пересечение.
В экспериментах также задокументированы некоторые режимы, когда LSI не удавалось достичь эффективности более традиционных методов индексирования и оценки. Следует отметить (пожалуй очевидное), что LSI имеет те же два недостатка извлечения из векторного пространства: нет хорошего способа производить исключения (искать документы со словом “немецкая”, но без “овчарка”), и нет способа ввести бинарные условия.
LSI можно рассматривать в качестве мягкой кластеризации, принимая каждое измерение уменьшенного пространства за кластер, а значение, которое документ имеет на этом пространстве - за его частичное членство в этом кластере.
Это перевод. Оригинал: Latent semantic indexing
Автор перевода: Максим Евмещенко.