我想在
PHP中实现奇异值分解(SVD).我知道有几个外部图书馆可以为我做这个.但是我有两个关于PHP的问题:
@H_403_1@1)你认为用PHP编写SVD是可能和/或合理的?
@H_403_1@2)如果(1)是是的:你能帮我编码PHP吗?
我已经自己编写了SVD的一些部分. Here’s the code我对这个行动进行了评论.这段代码的一些部分并不完全正确.
如果你能帮助我,这将是巨大的.提前非常感谢!
SVD-Python
@H_403_1@是一个非常清晰,简约的SVD实现.
@H_403_1@它几乎是psuedocode,应该是相当容易理解
@H_403_1@并比较/绘制您的PHP实现,即使你不知道很多python.
也就是说,正如其他人所说,我不会期望能够使用PHP实现来做非常重的LSA,这听起来像一个非常有限的网络主机.
干杯
编辑:@H_403_1@上面的模块本身不做任何事情,但是包含了一个例子@H_403_1@打开评论.假设你下载了python模块,并且它是可访问的(例如在同一个文件夹中),你@H_403_1@可以实现一个微不足道的例子,
#!/usr/bin/python import svd import math a = [[22.,10.,2.,3.,7.],[14.,7.,0.,8.],[-1.,13.,-1.,-11.,3.],[-3.,-2.,4.],[ 9.,8.,1.,-7.,5.,-1.],[ 2.,-6.,6.,1.],[ 4.,2.]] u,w,vt = svd.svd(a) print w
这里’w’包含您的奇异值列表.@H_403_1@当然,这只会让你成为潜在语义分析及其亲属的一部分.@H_403_1@你通常要减少奇异值的数量,然后使用一些适当的距离@H_403_1@衡量您的文档或单词,文档和单词等之间的相似性的度量@H_403_1@你的合成矢量之间的角度的余弦相当受欢迎.
是我读过的最清晰,最简洁和翔实的文章@H_403_1@需要按照SVD进行工作.
Edit2:还要注意,如果你正在使用非常大的术语文档矩阵(我假设这个@H_403_1@是你在做什么)几乎肯定会更有效地进行分解@H_403_1@在离线模式下,然后仅响应请求,以实时方式执行比较.@H_403_1@而svd-python是伟大的学习,svdlibc是更多的你想要这样沉重@H_403_1@计算.
最后在上面的bellegarda论文中提到,记住你不必重新计算@H_403_1@svd每一次你得到一个新的文件或请求.取决于你正在努力做什么@H_403_1@可能每个星期左右执行svd一次,在离线模式,本地机器,@H_403_1@然后上传结果(尽管有大小/带宽问题).
反正祝你好运!