加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python差异的潜在语义分析

发布时间:2020-12-16 23:00:52 所属栏目:Python 来源:网络整理
导读:我正在尝试使用以下代码在 Python中遵循 Wikipedia Article on latent semantic indexing: documentTermMatrix = array([[ 0.,1.,0.,1.],[ 0.,0.],[ 1.,0.]])u,s,vt = linalg.svd(documentTermMatrix,full_matrices=False)sigma = diag(s)## remove extra d
我正在尝试使用以下代码在 Python中遵循 Wikipedia Article on latent semantic indexing:
documentTermMatrix = array([[ 0.,1.,0.,1.],[ 0.,0.],[ 1.,0.]])
u,s,vt = linalg.svd(documentTermMatrix,full_matrices=False)

sigma = diag(s)
## remove extra dimensions...
numberOfDimensions = 4
for i in range(4,len(sigma) -1):
    sigma[i][i] = 0
queryVector = array([[ 0.],# same as first column in documentTermMatrix
                     [ 0.],[ 0.],[ 1.],[ 1.]])

数学怎么说应该有效:

dtMatrixToQueryAgainst = dot(u,dot(s,vt))
queryVector = dot(inv(s),dot(transpose(u),queryVector))
similarityToFirst = cosineDistance(queryVector,dtMatrixToQueryAgainst[:,0]
# gives 'matrices are not aligned' error.  should be 1 because they're the same

什么工作,数学看起来不正确:(从here)

dtMatrixToQueryAgainst = dot(s,vt)
queryVector  = dot(transpose(u),queryVector)
similarityToFirst = cosineDistance(queryVector,dtMatrixToQueryAgainsst[:,0]) 
# gives 1,which is correct

为什么路由工作,而第一个没有,当我能找到关于LSA数学的所有东西显示第一个是正确的?我觉得我错过了一些明显的东西……

解决方法

您的代码中存在一些不一致的地方,这些不一致会导致您在混淆之前出现错误.这使得很难准确理解你尝试了什么以及为什么你感到困惑(显然你没有运行代码,因为它被粘贴,或者它会先抛出异常).

也就是说,如果我正确地遵循你的意图,你的第一种方法几乎是正确的.请考虑以下代码:

documentTermMatrix = array([[ 0.,0.]])
numDimensions = 4
u,full_matrices=False)
u = u[:,:numDimensions]
sigma = diag(s)[:numDimensions,:numDimensions]
vt = vt[:numDimensions,:]
lowRankDocumentTermMatrix = dot(u,dot(sigma,vt))
queryVector = documentTermMatrix[:,0]
lowDimensionalQuery = dot(inv(sigma),dot(u.T,queryVector))
lowDimensionalQuery
vt[:,0]

您应该看到lowDimensionalQuery和vt [:,0]相等.将vt视为低维子空间中文档的表示.首先,我们将查询映射到该子空间以获取lowDimensionalQuery,然后将其与vt的相应列进行比较.您的错误是尝试将转换后的查询与来自lowRankDocumentTermMatrix的文档向量进行比较,该文档向量位于原始空间中.由于转换后的查询所包含的元素少于“重建”文档,因此Python抱怨道.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读