Monday, December 20, 2010

Латентно-семантический анализ


Недавно я обещал рассказать об еще одном применении SVD. Выполняю данное обещание. В этой статье рассказывается о латентно-семантическом анализе и показывается на примере, как его можно использовать чтобы сгруппировать статьи из ленты новостей по разным тематикам. Модификации этого алгоритма применяются гигантами интернет поиска для классификации статей и вебсайтов.


Читать дальше >>>

2 comments:

  1. Здравствуйте! Прочитала ваш пост на Хабре, но поскольку у меня нет там аккаунта, о спрашиваю здесь.
    Как рабоет LSA, если матрица имеет размеры несколько 10^4*10^4, например.
    Как вообще работать с подобными матрицами? Есть какие-то алгоритмы?

    Спасибо

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

    ReplyDelete