SVD-python Es una implementación muy clara y parsimoniosa de la SVD. Es prácticamente psuedocode y debería ser bastante fácil de entender y comparar/dibujar para su implementación de php, incluso si no conoce mucho Python.
SVD-python
Dicho esto, como otros han mencionado que no me esperaba ser capaz de hacer LSA de alta resistencia con aplicación muy php lo que suena como una red huésped bastante limitada.
Saludos
Editar: El módulo anterior no hace nada por sí mismo, pero no es un ejemplo incluido en los comentarios de apertura. Suponiendo que se ha descargado el módulo de Python, y era accesible (por ejemplo, en la misma carpeta), que podría implementar un ejemplo trivial de la siguiente manera,
#!/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
Aquí 'w' contiene su lista de valores singulares.
Por supuesto, esto solo te lleva a una parte del camino hacia el análisis semántico latente y sus parientes. Por lo general, desea reducir el número de valores singulares y luego emplear una distancia apropiada de para medir la similitud entre sus documentos, palabras, documentos, palabras, etc. El coseno del ángulo entre los vectores resultantes es bastante popular .
Latent Semantic Mapping (pdf)
es, con mucho, la más clara del papel, más concisa e informativa que he leído en los pasos restantes que necesidad de trabajar a cabo a raíz de la enfermedad vesicular porcina.
Edit2: también en cuenta que si se trabaja con matrices muy grandes término-documento (estoy suponiendo que esto es lo que está haciendo) que es casi seguro que va a ser mucho más eficiente para llevar a cabo la descomposición en un modo fuera de línea, y luego realizar solo las comparaciones en vivo en respuesta a las solicitudes. mientras que svd-python es ideal para aprender, el svdlibc es más de lo que usted desearía para cálculos tan pesados .
finalmente como se menciona en el documento de bellegarda anterior, recuerde que no tiene que recalcular el svd cada vez que recibe un nuevo documento o solicitud. Dependiendo de lo que esté tratando de hacer podría salirse con la realización del svd una vez cada semana más o menos, en un modo fuera de línea, una máquina local, y luego cargar los resultados (sin importar el tamaño/ancho de banda).
de todos modos buena suerte!
Sus comentarios en alemán son muy útiles. ¿Por qué necesitas implementar un algoritmo tan complicado en PHP? –
Si alguien necesita los comentarios en inglés, puedo traducirlos, por supuesto. Tengo que implementarlo en PHP ya que no puedo instalar bibliotecas externas en mi espacio web. – caw
huele a tarea – VVS