SVD-python Est une implémentation très claire et parcimonieuse du SVD. C'est pratiquement psuedocode et devrait être assez facile à comprendre et comparer/dessiner sur votre implémentation php, même si vous ne connaissez pas beaucoup python.
SVD-python
Cela dit, comme d'autres l'ont mentionné, je ne pense pouvoir faire très lourds LSA avec php ce qui ressemble à la mise en œuvre d'un web-hôte assez limité.
Vive
Edit: Le module ci-dessus ne fait rien par lui-même, mais il est un exemple inclus dans les commentaires d'ouverture. En supposant que vous avez téléchargé le module python, et il était accessible (par exemple dans le même dossier), vous pouvez mettre en œuvre un exemple trivial comme suit,
#!/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
Ici « w » contient votre liste de valeurs singulières.
Bien sûr, cela ne vous permet qu'une partie de l'analyse sémantique latente et de ses proches. Vous souhaitez généralement réduire le nombre de valeurs singulières, puis utiliser une distance appropriée pour mesurer la similarité entre vos documents, ou mots, ou documents et mots, etc. Le cosinus de l'angle entre vos vecteurs résultants est très populaire .
Latent Semantic Mapping (pdf)
est de loin la plus claire, le papier le plus concis et informatif, je l'ai lu sur les autres étapes que vous besoin de travailler à la suite du SVD.
Edit2: Notez également que si vous travaillez avec de très grandes matrices terme-documents (je suppose que ce est ce que vous faites), il est presque certainement va être beaucoup plus efficace pour effectuer la décomposition en un mode hors connexion, puis effectuez uniquement les comparaisons de façon dynamique en réponse aux demandes. alors que svd-python est idéal pour l'apprentissage, le svdlibc est plus ce que vous voulez pour un tel calcul .Enfin, comme mentionné dans le papier Bellegarda ci-dessus, rappelez-vous que vous n'avez pas besoin de recalculer le svd à chaque fois que vous recevez un nouveau document ou une nouvelle demande. en fonction de ce que vous essayez de faire, vous pouvez probablement sortir avec le lecteur une fois par semaine, en mode hors connexion, une machine locale, , puis en téléchargeant les résultats (malgré les problèmes de taille/bande passante).
de toute façon bonne chance!
Vos commentaires en allemand sont très utiles. Pourquoi avez-vous besoin d'implémenter un algorithme aussi compliqué en PHP? –
Si quelqu'un a besoin des commentaires en anglais, je peux les traduire, bien sûr. Je dois l'implémenter en PHP car je ne peux pas installer de librairies externes sur mon espace web. – caw
sent les devoirs – VVS