资源描述:
《词语间相关度计算算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、这是我在完成毕业设计的过程中使用的一种算法,主要功能是判断两个词的相关度,使用的工具是搜索引擎。用搜索引擎对该词语的统计结果来最后判断词与词之间的相关度。这是一篇转载文章,下面是具体内容:通常我们对于文本信息之间得相关性得计算都是采用向量的办法,我在以前的PPT里曾经提到过。然而对于文本信息更深层次的分析不能单纯从字面上分析一篇文章的关键词,更重要的是它隐含的扩展的意义。传统的关于计算文本相关度和【网页和查询的相关性】的计算都是采用匹配的方式进行的,然而这只能是基于字面意义上的统计计算。这里介绍的做法是采用关键词相关性扩展
2、的做法从而得到更加精确的相关度计算。例子:文章A:谈论的是大学教育,最高频的关键词是:学生[3],学习[2],大学[2]文章B:谈论的是普通教育,最高频的关键词是:教育[5],教师[1],进修[1][]里是相对的权重,可以理解成TF*IDF根据传统的相关性计算,我们会得到如下的结果:1.文章A与文章B不相关2.查询学生,学习,大学只能返回文章A,不能返回文章B3.查询教育,教师,进修只能返回文章B,不能返回文章A分析:这个显然是有一定的问题的,问题的出现在于我们通常将"字面"的意思做为分析的来源而且依靠和仅仅依靠这些"字面
3、"的关键词做为文章相关性和查询相关性判断的唯一要素。如何避免?我在以前的文章中提到过【关键词相关度】的概念,举例说明:当出现:{学习}这个词汇的时候,真实的表达的意义往往是这样的:{W1*学习,W2*教育,W3*教师,W4*大学。。。。。。}其中W1,W2...是学习和相关词汇的相关权重。基于这样一个矩阵,我们就能够将一个词扩展成为一组词汇,因而也同时可以将文章所对应的向量扩展成一个更多词汇的集合。这里的计算需要一个完整的相关度矩阵:MM(i,j)={关键词i,j的相关度}而两篇文章的相关度的计算,也由简单的R=Sigma
4、Vi*Vi变为R=SigmaVi*M(i,j)*Vj查询关键词和文章的相关度也由简单的R(i)=TF(i)*IDF(i)变为R(i)=SigmaTF(j)*IDF(j)*M(i,j)下面碰到一个核心问题就是:关键词之间的相关度如何计算?例如:学校和学生的相关度是多少?计算方法:假设一个文章集合{C},总文章数目为N,其中含有单词A的文章总数为Na,含有单词B的文章总数是Nb,含有{A+B}的文章总数是Nab,那么相关性这么计算CorrAB=Nab/(Na+Nb-Nab)-(Na*Nb)/(N*N)本计算中可能会得到负相关,
5、如果考虑到Na,Nb都是小量,可以忽略,那么CorrAB=Nab/(Na+Nb-Nab)至此,要计算相关度之间的全部要素都获得了。思考,那么到底学校和学生之间的相关度是多少呢?我们利用google来回答这个问题吧:约有322,000,000项符合学校的查询结果约有259,000,000项符合学生的查询结果约有102,000,000项符合学生学校的查询结果Corr{学校,学生}=102,000,000/(322,000,000+259,000,000-102,000,000)=0.21这个原理我以前应用在了计算【网页信噪比】
6、上,和网页信噪比一起成为衡量一个网页的关键词的核心算法。这也就是为什么6e的网页信噪比能够不依靠网页上现有的关键词而准确的判断网页的分类和相关度,是因为除了TF和IDF之外,我们能够从已有的文本集合里学到更多的"知识"。那么百度和google的相关度应该不难计算了:利用google计算得到:2,950,000/(61,800,000+6,370,000-2,950,000)=0.03利用baidu计算得到:2,760,000/(21,700,000+12,200,000-2,760,000)=0.08看来基本上相关度小于1
7、0%。