Замечания

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

Так что вопрос стоит не как «нужно ли нам обновление?», а по-другому: «какое нам нужно обновление?». Попытаемся ответить на этот вопрос.

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

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

Разница между вложением и svd-обновлением проявляется тем больше, чем больше число добавляемых термов. Понятно, что из-за одного нового терма или документа проводить ресурсоемкую процедуру svd-обновления нерентабельно, здесь можно ограничиться вложением. Но если число добавляемых объектов – сотни, то точность операций на матрицах сильно упадет.

Вывод очевиден. Нужно небольшие порции объектов добавлять вложением, причем постоянно следить за результатами работы, числом релевантных документов и наибольшим косинусом между запросом и вернувшимися документами. Если эти значения будут падать ниже пороговых (обычно устанавливаемых эмпирически), то стоит произвести над матрицей svd-обновление.

Таблица 1 . Временная сложность процедур обновления

Операция Скорость
Вложение: документы + термы 2mkp + 2nkq.
SVD–обновление О(2k2m + 2 k2n)
Пересчет SVD I ´ [4nnz(A) - (m+ q) - (n + p)]+ trp ´ 2nnz(A) - (m+ q)

Таким образом мы убиваем сразу двух зайцев – экономим машинное время и повышаем качество результата. Что же касается стоимости проведения этих операций (flops), то она приведена в таблице 2.

Здесь i – число итераций для процедуры типа алгоритма ланкоша, n – число термов, m – число документов, p – число новых документов, q – число новых термов, trp - число принятых сингулярных триплетов, z- исправленные веса термов в соответствующей матрице.