ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:412KB ,
资源ID:22178024      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22178024.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LSI潜在语义空间基本原理与代码实现Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

LSI潜在语义空间基本原理与代码实现Word文档格式.docx

1、4SVD分解2SVD分解作为掌握LSA的基础知识,我单独把它作为一篇文章,可以在这里找到。5 LSA技术细节13本节主要讨论LSA技术细节的理论部分,具体代码层面分析和实践在第7节讨论。LSA的步骤如下:1. 分析文档集合,建立Term-Document矩阵。2. 对Term-Document矩阵进行奇异值分解。3. 对SVD分解后的矩阵进行降维,也就是奇异值分解一节所提到的低阶近似。4. 使用降维后的矩阵构建潜在语义空间,或重建Term-Document矩阵。下面是Introduction to Latent Semantic Analysis里面的一个例子,描述了完整的LSA步骤,例子后面

2、有我的补充:假设文档集合如下:原始的Term-Document矩阵如下:对其进行奇异值分解:然后对分解后的矩阵降维,这里保留S的最大两个奇异值,相应的WP矩阵如图,注意P在公式中需要转置。到了这一步后,我们有两种处理方法,论文Introduction to Latent Semantic Analysis是将降维后的三个矩阵再乘起来,重新构建了X矩阵如下:观察X矩阵和X矩阵可以发现:X中human-C2值为0,因为C2中并不包含human单词,但是X中human-C2为0.40,表明human和C2有一定的关系,为什么呢?因为C2:”A survey of user opinion of co

3、mputer system response time”中包含user单词,和human是近似词,因此human-C2的值被提高了。同理还可以分析其他在X中数值改变了的词。以上分析方法清晰的把LSA的效果显示出来了,也就是在X中呈现出了潜在语义,然后希望能创建潜在语义空间,并在该空间中检索信息。这里以比较两个单词为例:设奇异值分解形式为:X = T S DT,T代表term,s代表single value矩阵,D代表Document,DT表示D的转置。X的两个行向量点乘(内积)的值代表了两个词在文档中共同出现的程度。比如T1在D1中出现10词,T2在D1中出现5次,T3在D1中出现0词,那么只

4、考虑在D1维度上的值,T1(dot)T2=50,T1(dot)T2=0,显然T1与T2更相似,T1与T3就不那么相似。那么用矩阵X(dot)XT就可以求出所有词与词的相似程度。而由奇异值分解的公式的:X(dot)XT= T(dot)S2(dot)TT= TS(dot)(TS)T上面公式表明了,我们想求X(dot)XT的(i,j)个元素时,可以点乘TS矩阵的第i和j列来表示。因此我们可以把TS矩阵的行看作是term的坐标,这个坐标就是潜在语义空间的坐标。同理我们还可以推出XT(dot)X = D(dot)S2(dot)DT,从而DS的行表示了文档的坐标。这样,我们就获得了所有文档和单词在潜在语义

5、空间的坐标,这时我们就可以通过向量间的夹角来判断两个对象的相似程度,方法和传统向量空间模型相同。接下来主要讨论下检索文本的步骤。用户输入的检索语句被称为伪文本,因为它也是有多个词汇构成,和文本相似。所以很自然的想法就是将该伪文本转换为文档坐标,然后通过比较该伪文档与每个文档的空间夹角,检索出该伪文本的相关文档。设Xq表示伪文本的列向量,其中该列代表文档集合的索引词,该列的值代表伪文本中该索引词出现的次数。比如一个文档集合有索引词T1,T2,T3,伪文本为t1,t3,t2,t1,则Xq=2,1,1。获得Xq后,通过公式Dq= XqTT S-1计算伪文档的文档坐标。其中T和S分别代表奇异分解中得到

6、的矩阵(S = T S DT).注意上面的公式中S-1代表S的逆矩阵。Dq计算出来后,就可以迭代比较Dq和文档集合中所有所有文档,计算两者个cosine夹角6 LSA实践本节主要讨论LSA的实现,编程语言使用C+,环境Linux gcc,使用了GNU Scientific Library5。本节代码可以在1. 创建Term-Document矩阵LSA是基于向量空间模型的,因此首先需要创建一个M x N的Term-Document矩阵,其中行表示每一个词,列表示每一个文档。而矩阵的值等于相应词的TF*IDF值。待检索的文档集合放在程序根目录下的corpus文件夹,每一个文档一个文件。首先需要创建

7、语料的单词列表,作为T-D矩阵的列向量,每一个单词对应一个id。code=cppCreateVectorSpace.ccFunction int CreateKeyWordMap()/ 循环读入每个文档while(ent=readdir(currentDir)!=NULL)/omit . and .if(strcmp(ent-d_name,."=0)|(strcmp(ent-.&=0)continue;else/read each file in directory corpusstring filename = ./corpus/;filename += ent-d_name;ifs

8、tream in(filename.c_str();/ check if file open succeededif (!in)coutbooks),过去时(like-liked),这些词虽然形式不同但含义相同,因此要将它们处理为同一的形式,也就是单词的原型。相关的算法为Porter Stemming6算法。获得单词列表后,就可以构造T-D矩阵了,过程是依次读入每个文档,遇到单词列表中存在的词,相应的矩阵单元加1。这里用到了GSL的几个函数,用法可参考GSL手册5。Function CreateMatrix()gsl_matrix* CreateMatrix()/ 分配T-D矩阵空间gsl_m

9、atrix * mtx = gsl_matrix_alloc(wordList.size(),docList.size();map:const_iterator map_it = docList.begin();/ for each documentwhile (map_it != docList.end()./ 如果当前单词在单词列表中存在if (wordList.find(pendingWord) != wordList.end()/ 矩阵相应的单元值加1gsl_matrix_set (mtx, wordListpendingWord, map_it-second,gsl_matrix_g

10、et(mtx, wordListpendingWord, map_it-second)+1);wordCountmap_it-second += 1;现在已经创建了T-D矩阵,但是矩阵单元值为单词在文档中出现的频率,因此下一步是求每个单词的TF*IDF值7。TF代表单词在某一文档中出现的频率,IDF为inverse document frequency,代表的含义是如果一个单词在很多文档中都出现了,那么用它来区分文档的价值就降低。具体公式:SVD.CCFunction CreateTfIdfMatrix()gsl_matrix* CreateTfIdfMatrix()double termfr

11、equence = gsl_matrix_get(mtx,i,j)/wordCountj;double idf = log(double)docList.size()/(double)getDocumentFrequence(mtx,i);gsl_matrix_set(mtx,i,j,termfrequence*idf);至此T-D矩阵创建完成。2. SVD分解SVD分解使用GSL库中的gsl_linalg_SV_decomp函数SVD.ccFunction CountSVD(gsl_matrix *)void CountSVD(gsl_matrix* mtx)/ S = U S VT so

12、first lets allocate U,S,V these three matrixv_mtx = gsl_matrix_alloc(docList.size(),docList.size(); /*V is a N by N matrix*/s_vct = gsl_vector_alloc(docList.size(); /*S is stored in a n-d vector*/gsl_vector * workspace = gsl_vector_alloc(docList.size(); /* workspace for gsl function*/gsl_linalg_SV_d

13、ecomp(mtx, v_mtx, s_vct, workspace);3. 降维降维在程序你实现十分简单,也就是给矩阵(由于是对角矩阵,因此程序里表示为向量)赋值零。Function ReduceDim(int)void ReduceDim(int keep)for (int i=keep;i word)if (wordList.count(word)!=0) /*word is in the list*/gsl_vector_set(q_vct,wordListword,gsl_vector_get(q_vct,wordListword)+1);/ Dq = Xq T S-1/ 再求Xq乘

14、Tfor (int i = 0; i LSD; i+)double sum = 0;for (int j = 0; j wordList.size(); j+)sum += gsl_vector_get(q_vct,j) * gsl_matrix_get(mtx,j,i);gsl_vector_set(d_vct,i,sum);/ 最后求(Xq T) S-1for (int k = 0; k k+)gsl_vector_set(d_vct, k,gsl_vector_get(d_vct,k) * (1/gsl_vector_get(s_vct,k);/用文档集合中每个文档和Dq比较for (i

15、nt l=0;ll+)/ 求两向量夹角,返回cosine值relation = CompareVector(d_vct, temp_d_vct, LSD);5. 测试我们先用以前讨论过的文档集将C1M4分别保存到9个文件里,放到corpus文件夹运行程序,输入格式为lsa.out query./lsa.out human computer interaction可以看出与主题最相关的文档是C3,其次是C1。C1C5文件是同主题文档,主题是人机互交,而M1M4的共同主题是计算机图形。而查询”human computer interaction”显然描述的是人机互交。因此也可以从结果看到C1C5的

16、相关度全部都高于M1M4文档。最后,观察C3,C5文档,它们并不包含任何查询中的词,而计算出的相似度却不为0,并且C3的相似度达0.999658,这也正是LSA潜在语义的效果。下面是文档两两比较后的结果表格(已导入到Excel)上图19和AB都分别代表文档C1,C2,C3,C4,C5,M1,M2,M3,M4上图非常清晰的显示出了文档的关系:先来看15AE也就是第15行,AE列,由于文档C1C5是一个主题的文档,所以可以看出15AE都大于0.9,而15FI都不超过0.5,也表明C1C5文档与M1M4文档主题是不相干的。同理可以分析69FI。上面的讨论表明,潜在语义分析在主题分类上效果明显。如果设

17、定一个分类的阈值,比如0.8,那么上面9个文档就被自动分为了C1,C2,C3,C4,C5和M1,M2,M3,M4在另一个测试中,我从New York Times网站收集的6个主题,每个主题5篇文章搜索” what a great day”结果如下:伪文本坐标(0.00402821,-0.0183549,0.00361756),每个文档的相关度如果设定检索阈值为0.9,那么文档movie2,sport4,art2被返回。7 总结LSA通过对潜在语义空间的建模,提高的信息检索的精确度。而后又有人提出了PLSA(Probabilistic latent semantic analysis)和LDA(Latent Dirichlet allocation),将LSA的思想带入到概率统计模型中。LSA对一词多义问题依然没有解决,仅仅解决了一义多词。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1