基于潜在语义分析的JAVA类库检索方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文章编号:10035850(2006)03004302
基于潜在语义分析的Java类库检索方法Java Class Library Retrieval Method based on Latent Semantic Analysis
刘 磊
(大连理工大学软件学院 大连 116023)
【摘 要】为了更精确、有效地检索Jav a类库,应用潜在语义分析的理论,设计了基于潜在语义分析的Java类库的检索方法,提高了对Java类库的检索质量。基于潜在语义分析的理论和方法可以适用于大多数的检索系统,对提高检索系统的检索精确性有很大的帮助。
【关键词】潜在语义分析,信息检索,Jav a类库检索方法
中图分类号:T P312 文献标识码:A
ABSTRACT Fo r sear ching in jav a class libr ary mo re accur ately,this paper designs a r etr ieval method o f jav a class librar y based on L SA(L at ent sem ant ic A naly sis)o n the basis of semantic ana ly sis theor y.T his method impr oves t he sear ching quality of jav a class librar y and can be used in mo st of sear ching system,and is helpful to impro ve the sear ching accur acy o f retr iev al sy st em. KEYWORDS L SA,infor matio n retr iev al,java libr ary ret riev al method
信息的检索一直是大家研究的热门话题,人们对如何实现快捷准确的搜索功能进行了广泛的研究。本文探讨搜索对象Java类库是Java开发平台提供的开发文档,也是学习Java语言的主要文档。Jav a类库有着非常规则的结构,这对非常熟悉Java的开发人员来说是非常便利的,但是对于初学者来说,如何找到相应类的介绍却是非常困难的。所以快速高效率的Java类库检索方法有一定的现实实用价值。
传统的查询方法基于文本关键字的向量空间模型VSM(Vector Space M odel),是用m个关键字维构成的文档向量D i={d1i,d2i,...,d mi}表示文档集中的一个文档,并基于此进行文档过滤,检索的处理。它将非结构化的文本表示成向量的形式,使得各种数学处理成为可能。它的优点是简单、快捷。但是向量空间模型关于词间相互独立的假设很难满足,文中出现的词往往存在一些相关性,在某种程度上影响计算结果,同时,这种基于关键字的处理方法主要依据词频信息,两个文本的相似度取决于它们拥有的共同词汇的数量,因而无法分辨自然语言的语义模糊性[2]。
参考文献[1]中采用了上面的VSM方法表示Java 类库各可复用模块的语义,本文采用基于潜在语义分析的Java类库检索方法,对其进行改进。
潜在语义分析的出发点就是文本中词与词之间存在某种联系,及存在某种潜在的语义结构,这种潜在的语义结构隐含在文本中词语的上下文使用模式中,因此采用统计计算的方法,对文本进行分析,寻找这种潜在的语义结构,不需要确定语义的编码,仅依赖于上下文中事务的联系,并用语义结构表示词和文本,达到消除词之间的相关性简化文本向量的目的。
三维潜在语义空间示例如图1
所示。
传统的空间向量方法假设词语语义是相互独立的,每个词语被看作向量空间中的一个正交基本向量,实际上词语之间存在着很强的关联性及出现“斜交”的现象,影响文本处理的结果。LSA利用这种关联性,通过对文本集中词语的上下文的使用模式进行统计转换,获得一个新的、低维的语义空间[3]。SVD是目前普遍使用的典型的LSA空间构造方法。它通过对文本集的词-文本矩阵的奇异值分解计算,提取k个最大的奇异值及其对应的奇异矢量构成新矩阵来近似表示原文本集的词条-文本矩阵。具体步骤如下:
首先,构造一个训练集m*n词条-文本矩阵A=[a ij]mn,其中a ij=L(i,j)*G(i),L(i,j)是单词i在文本j中的局部权重,G(i)是单词i在文本集中的全局权重,m为提取单词数,n为文本数。
其次,对A进行截取SVD分解(设m>n, rank(A)=r,存在k,k * 20050811收到,20060106改回 ** 刘 磊,男,1982年生,大连理工大学软件学院在读硕士研究生,研究方向:人工智能。 ・ 43・ 第19卷 第3期 电脑开发与应用 (总181) 的秩k 的近似矩阵A k ,则:A ≈A k =U k ∑k V k T ,其中 U k T U k =V k T V k =I k ,U k ,V k 的列分别被称为矩阵A k 的左右奇异向量,∑k 是对角矩阵,对角元素被称为矩阵A k 的奇异值。矩阵A 的SVD 分解如图2 所示。 从某种意义上来说SVD 是一种用于发掘一组相互无关联的索引变量的技术,从而使每个词/文本都可以利用左右奇异值向量,表现为单个k 维空间向量,并可以削弱噪音,词语使用多样性等对信息检索的影响。在同一个空间中表示词语和文本,词-词,词-文本,文本-文本的相似度,可以通过他们在语义空间的位置向量距离来衡量:同义词或包含不同词语但主题语义相近的文本的空间位置相近,非相似词语文本的空间文字较远。这种方法有效地解决了同义词、多义词对检索带来的影响。 检索时,用户查询要求可以是词语、文档或两者的任意组合。对于用户查询进行预处理,根据词频信息生成查询向量q ,并应将其在k 维语义空间中表示出来。设q 为原始查询向量,则在k 维语义空间中表示为: q *=q T U k ∑k -1 ,这样就可以在k 维空间中将q *和其他的文档向量进行相似度计算: Sim(q *,dj )= k m =1 w im *w j m ( k m =1 w 2 im )( k m =1 w 2 j m ) 其中,q *为查询向量,dj 为第j 个文本向量,k 为语义空间的维数,W m 为第m 维权值,并按相似度高低排列文档,根据用户的要求将文本列表提供给用户。 1 具体检索方法设计 基于潜在语义分析的Java 类库检索方法的总体设计如图3所示,此方法中将Java 类库中对应的每个具体类的介绍看作一个文本,用户输入要检索的关键字,获得相关的类信息介绍。搜索流程主要包括,Java 文档预处理,权值计算,潜在语义空间的构造。1.1 预处理 在选取了适当的训练文本集以后,需要对jav a 文档进行预处理,从文本中抽取词汇和短语。首先一个最基本的问题就是要对源文本进行词的切分,在英文系 统中,词之间有空格隔开,词的识别处理非常方便。可 以应用具体的切词工具进行处理。1.2 权值计算 对于词文本矩阵A =[a ij ],a ij 要考虑来自两方面的贡献,即局部权值和全局权值,a ij =L (i ,j )*G (i ),L (i ,j )是单词i 在文本j 中的局部权重,G (i )是单词i 在文本集中的全局权重,m 为提取单词数,n 为文本数。设计中局部权值计算公式为:L (i ,j )=P ij *lo g (P ij +1),其中P ij =c (t ij ) m j i =1 c (t ij ) ,c (t ij )为词在文本中的出 现次数,m j 为文本中包含的词的种类数。 设计中全局权值计算公式为: P i *log P i -(1-P i )log (1-P i ),其中P i 为文本集中的文本包含词的概率。1.3 潜在语义空间的构造 潜在语义空间的构造主要是选取降维因子,降维因子值的选取直接关系到语义空间模型的效率,k 值过小则会使一些有用的信息丢失,k 值过大则会使运算量增加,根据不同的文本集和处理要求,最佳的k 值也不尽相同。选取k 值时,对于 =diag (a 1,a 2,,a n )且有a 1 a 2 … a r …=a n =0,可以令满足贡献率不等 式, k 1ai / r 1ai , 为包括原始信息的阈值,如可取40%50%60%。贡献率不等式是参考因子分析的相应概念提出的,用以衡量k 维子空间对于整个空间的表示程度[5] 。但是,由于文档数和文档内容的数量原因,这个数值可能会很大,不便控制其规模,考虑到向量运算的响应速度和存储空间的限制,k 值一般在100~300。本设计中综合考虑响应时间和检索效果的因素,k 值最后采用的值为200。 2 结束语 由于Java 开发语言的广泛应用,Java 类库的检索机制显得越来越重要,具有一定的使用价值,如何准确快速地得到Java 类的相应介绍对Java 初学者是十分重要的。基于潜在语义分析的Jav a 类库搜索机制,应用基于潜在语义分析理论,从词语之间的相关性出发, (下转第47页) ・44・ (总182) 基于潜在语义分析的Java 类库检索方法 2006年