我已经阅读过使用奇异值分解(SVD)在文本语料库中进行潜在语义分析(LSA).我已经明白了如何做到这一点,我也理解了SVD的数学概念.
但我不明白为什么它适用于文本语料库(我相信 - 必须有语言解释).有人能用语言学的观点来解释我吗?
谢谢
algorithm nlp data-mining text-mining latent-semantic-indexing
我正在开展一个项目,要求我将短语或关键字与一组相似的关键字相匹配.我需要对它进行语义分析.
一个例子:
相关的QT
廉价医疗保险
实惠的医疗保险
低成本的医疗保险
健康计划,以便更
便宜的健康保险
常识
低成本的健康保险
Common Common列下的单词应与Under Related QT列相匹配.我看了一堆工具和技术来做同样的事情.S-Match似乎非常有前途,但我必须使用Python而不是Java.潜在语义分析看起来也不错,但我认为更多的是基于关键字而不是关键字匹配的文档分类.我对NLTK有点熟悉.有人可以提供一些有关我应该采取的方向以及我应该使用哪些工具的见解?
是否可以使用LDA在gensim中对给定的输入集进行聚类?我该怎么办呢?
我最近一直致力于潜在的语义分析.我已经使用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 …
Run Code Online (Sandbox Code Playgroud) 对不起,如果我的问题听起来很愚蠢:)你可以向我推荐任何伪代码或者在java中实现LSI的好算法吗?我不是数学专家.我试着在维基百科和其他网站上阅读一些关于LSI(潜在语义索引)的文章,他们充满了数学.我知道LSI充满了数学.但是,如果我看到一些源代码或算法.我更容易理解事情.这就是我在这里问的原因,因为有很多GURU在这里!提前致谢
Java中是否有LSI的开源实现?我想将该库用于我的项目.我见过jLSI,但它实现了其他一些LSI模型.我想要一个标准型号.
我正在尝试使用以下代码关注Python中关于潜在语义索引的维基百科文章:
documentTermMatrix = array([[ 0., 1., 0., 1., 1., 0., 1.],
[ 0., 1., 1., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 1., 1.],
[ 0., 0., 0., 1., 0., 0., 0.],
[ 0., 1., 1., 0., 0., 0., 0.],
[ 1., 0., 0., 1., 0., 0., 0.],
[ 0., 0., 0., 0., 1., 1., 0.],
[ 0., 0., 1., 1., 0., 0., 0.],
[ 1., 0., 0., 1., 0., 0., 0.]])
u,s,vt …
Run Code Online (Sandbox Code Playgroud) 我正在使用Gensim进行一些大规模的主题建模.我很难理解如何确定未见(非索引)文档的预测主题.例如:我有2500万个文档,我已经转换为LSA(和LDA)空间中的向量.我现在想弄清楚一个新文档的主题,我们称之为x.
根据Gensim文档,我可以使用:
topics = lsi[doc(x)]
Run Code Online (Sandbox Code Playgroud)
其中doc(x)是将x转换为向量的函数.
然而,问题是上述变量主题返回一个向量.如果我将x与其他文档进行比较,该向量很有用,因为它允许我找到它们之间的余弦相似性,但我无法实际返回与x本身相关的特定单词.
我错过了什么,或者Gensim没有这种能力?
谢谢,
编辑
拉斯曼斯有答案.
我能够通过使用以下方式显示主题:
for t in topics:
print lsi.show_topics(t[0])
Run Code Online (Sandbox Code Playgroud) 但最近我发现这个链接对于理解LSA的原理非常有帮助而没有太多的数学. http://www.puffinwarellc.com/index.php/news-and-articles/articles/33-latent-semantic-analysis-tutorial.html.它构成了我可以进一步建立的良好基础.
目前,我正在寻找对概率潜在语义分析/索引的类似介绍.少数数学和更多解释其背后原理的例子.如果你知道这样的介绍,请告诉我.
它可以用来找到句子之间相似性的度量吗?它会处理多义词吗?
是否有相同的python实现?
谢谢.
有人告诉我雅虎曾经有一个免费的LSI服务,称为Yahoo Boss API,自7月20日起就要求付费,并且微软必应搜索引擎提供免费服务,提供类似但不如Yahoo Boss API的功能.
是否存在除上述之外的其他免费API,为开发人员提供此类服务?
我一直试图从谷歌找到类似的东西而没有任何结果.
我是gensim包和向量空间模型的新手,我不确定我应该如何处理我的 LSA 输出。
为了简要概述我的目标,我想使用主题建模来增强朴素贝叶斯分类器,以改进评论(正面或负面)的分类。这是我一直在阅读的一篇很棒的论文,它塑造了我的想法,但让我对实现仍然有些困惑。
我已经得到了朴素贝叶斯的工作代码——目前,我只是使用一元词袋,因为我的特征和标签要么是正面的,要么是负面的。
这是我的 gensim 代码
from pprint import pprint # pretty printer
import gensim as gs
# tutorial sample documents
docs = ["Human machine interface for lab abc computer applications",
"A survey of user opinion of computer system response time",
"The EPS user interface management system",
"System and human system engineering testing of EPS",
"Relation of user perceived response time to error measurement",
"The generation of random binary unordered trees", …
Run Code Online (Sandbox Code Playgroud) latent-semantic-indexing document-classification gensim latent-semantic-analysis naivebayes
我有这个文件的SVD分解
我已阅读此页面,但我不明白如何计算文档分离的最佳功能.
我知道:
S x Vt 给出了文档和功能之间的关系
U x S 给出了术语和特征之间的关系
但最佳功能选择的关键是什么?
machine-learning svd latent-semantic-indexing feature-selection latent-semantic-analysis