我最近一直致力于潜在的语义分析。我已经使用Jama包在java中实现了它。
以下是代码:
Matrix vtranspose ;
a = new Matrix(termdoc);
termdoc = a.getArray();
a = a.transpose() ;
SingularValueDecomposition sv =new SingularValueDecomposition(a) ;
u = sv.getU();
v = sv.getV();
s = sv.getS();
vtranspose = v.transpose() ; // we obtain this as a result of svd
uarray = u.getArray();
sarray = s.getArray();
varray = vtranspose.getArray();
if(semantics.maketerms.nodoc>50)
{
sarray_mod = new double[50][50];
uarray_mod = new double[uarray.length][50];
varray_mod = new double[50][varray.length];
move(sarray,50,50,sarray_mod);
move(uarray,uarray.length,50,uarray_mod);
move(varray,50,varray.length,varray_mod);
e = new Matrix(uarray_mod);
f = new Matrix(sarray_mod);
g = new Matrix(varray_mod);
Matrix temp =e.times(f);
result = temp.times(g);
}
else
{
Matrix temp = u.times(s);
result = temp.times(vtranspose);
}
result = result.transpose();
results = result.getArray() ;
return results ;
但我们如何确定尺寸数量?有没有一种方法可以确定系统应该减少的维数以获得最佳结果?对于LSA的有效性能,我们还考虑了哪些其他参数?
答案 0 :(得分:14)
关于维数的选择:
1)http://en.wikipedia.org/wiki/Latent_semantic_indexing:
LSI的另一个挑战是所谓的困难 确定用于执行的最佳维数 SVD。作为一般规则,较少的维度允许更广泛的比较 文本集合中包含的概念,而更高 维度数量更具体(或更相关) 比较概念。可以的实际维数 使用受到集合中文档数量的限制。研究 已经证明,通常会提供约300个尺寸 中等大小的文档集合的最佳结果(数百个 数千个文档)和大型文档可能有400个维度 收藏(数百万份文件)。然而,最近的研究表明 根据尺寸和性质,50-1000尺寸是合适的 文件集。
计算SVD后检查数据的方差量 可用于确定要保留的最佳维数。 数据中包含的方差可以通过绘制来查看 碎石图中的奇异值(S)。一些LSI从业者选择了 与曲线拐点相关的维数作为截止值 指向要保留的维数。其他人认为有些人 必须保留方差的数量和方差的数量 在数据中应该规定要保留的适当维度。 百分之七十经常被提及作为方差的数量 应该用于选择最佳维度的数据 重新计算SVD。
使用SVD的诀窍是弄清楚多少维或 近似矩阵时使用的“概念”。尺寸太小 并且重要的模式被遗漏,太多和噪音引起的 随机单词选择将回归。 SVD算法有点牵扯,但幸运的是Python有一个 库函数,使其易于使用。通过添加一行 我们的LSA类下面的方法,我们可以将我们的矩阵分解为3个 矩阵。 U矩阵为我们提供了每个单词的坐标 “概念”空间,Vt矩阵给出了每个坐标 我们的“概念”空间中的文档,以及奇异值的S矩阵 为我们提供了我们需要多少维度或“概念”的线索 包括
def calc(self): self.U, self.S, self.Vt = svd(self.A)
为了 选择合适的尺寸数量,我们可以制作直方图 奇异值的平方。这描绘了每个人的重要性 奇异值有助于逼近矩阵。这里是 在我们的例子中直方图。
对于大型文档集合,使用的维度数量为 在100到500范围内。在我们的小例子中,因为我们想要绘制图形 它,我们将使用3个维度,抛出第一个维度和图表 第二和第三维。
我们抛弃第一个维度的原因很有趣。对于 文件,第一个维度与长度相关 文献。对于单词,它与单词的次数相关 已被用于所有文件。如果我们将矩阵集中在一起 从每列中减去平均列值,然后我们会 使用第一个维度。作为类比,考虑高尔夫比分。我们没有 想知道实际分数,我们想知道之后的分数 从标准杆中减去它。这告诉我们玩家是否做了 小鸟,转向架等。
3)Landauer,T.K.,Foltz,P.W.,Laham,D。,(1998),“潜在语义简介”
分析',话语过程,25,259-284: