Это перевод. Оригинал: 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
Автор перевода: Максим Евмещенко.