
Недавно я обещал рассказать об еще одном применении SVD. Выполняю данное обещание. В этой статье рассказывается о латентно-семантическом анализе и показывается на примере, как его можно использовать чтобы сгруппировать статьи из ленты новостей по разным тематикам. Модификации этого алгоритма применяются гигантами интернет поиска для классификации статей и вебсайтов.
Читать дальше >>>
Здравствуйте! Прочитала ваш пост на Хабре, но поскольку у меня нет там аккаунта, о спрашиваю здесь.
ReplyDeleteКак рабоет LSA, если матрица имеет размеры несколько 10^4*10^4, например.
Как вообще работать с подобными матрицами? Есть какие-то алгоритмы?
Спасибо
Здравствуйте,
ReplyDeleteТут есть несколько моментов, во-первых, легко заметить, что матрица разреженная. Стало быть, уже не надо хранить и считать все 10^4*10^4 чисел. SVD разложение для разреженных матриц и формат хранения таких матриц реализован в пакете SVDPACK http://www.netlib.org/svdpack/
Второй момент заключается в поддержке индекса, ведь как правило достаточно посчитать полное SVD один раз, а потом пересчитывать уже отдельные ряды и столбцы. Здесь предстоит немного поупражняться в математике.
Еще есть альтернатива LSA: Random Projection, реализацию этого алгоритма можно найти здесь:
http://code.google.com/p/semanticvectors/
Надеюсь, что-нибудь из перечисленного окажется полезным.