SVD-питон
Это очень четкая, экономная реализация SVD.
Это практически psuedocode и должно быть довольно легко понять
и сравнивайте / рисуйте для своей реализации php, даже если вы плохо знаете Python.
SVD-питон
Тем не менее, как уже упоминали другие, я не ожидал, что смогу сделать очень мощный LSA с реализацией php, что звучит как довольно ограниченный веб-хостинг.
Приветствия
Edit:
Модуль выше ничего не делает сам по себе, но есть пример, включенный в
вступительные комментарии. Предполагая, что вы загрузили модуль Python, и он был доступен (например, в той же папке), вы
может реализовать тривиальный пример следующим образом:
#!/usr/bin/python
import svd
import math
a = [[22.,10., 2., 3., 7.],
[14., 7.,10., 0., 8.],
[-1.,13.,-1.,-11., 3.],
[-3.,-2.,13., -2., 4.],
[ 9., 8., 1., -2., 4.],
[ 9., 1.,-7., 5.,-1.],
[ 2.,-6., 6., 5., 1.],
[ 4., 5., 0., -2., 2.]]
u,w,vt = svd.svd(a)
print w
Здесь 'w' содержит ваш список особых значений.
Конечно, это только дает вам часть пути к скрытому семантическому анализу и его родственникам.
Обычно вы хотите уменьшить количество значений в единственном числе, а затем использовать подходящее расстояние
метрика для измерения сходства между вашими документами или словами, или документами и словами и т. д.
Косинус угла между вашими результирующими векторами довольно популярен.
Скрытое семантическое отображение (pdf)
- безусловно, самый ясный, самый краткий и информативный документ, который я прочитал на оставшихся шагах.
нужно потренироваться по СВД.
Edit2: также обратите внимание, что если вы работаете с очень большими матрицами терминологических документов (я предполагаю, что это
это то, что вы делаете) почти наверняка будет гораздо эффективнее выполнить разложение
в автономном режиме, а затем выполнять только сравнения в режиме реального времени в ответ на запросы.
в то время как SVD-Python отлично подходит для обучения, svdlibc больше, чем вы хотели бы для такого тяжелого
вычисление.
наконец, как уже упоминалось в статье Беллегарда выше, помните, что вам не нужно пересчитывать
SVD каждый раз, когда вы получаете новый документ или запрос. в зависимости от того, что вы пытаетесь сделать, вы могли бы
возможно, вам не придется выполнять svd раз в неделю или около того, в автономном режиме, на локальной машине,
и затем загрузите результаты (несмотря на размер / пропускную способность).
в любом случае удачи!