词语间相关度计算算法

计算两个不同词语间的相关度

这是我在完成毕业设计的过程中使用的一种算法,主要功能是判断两个词的相关度,使用的工具是搜索引擎。用搜索引擎对该词语的统计结果来最后判断词与词之间的相关度。这是一篇转载文章,下面是具体内容:

通常我们对于文本信息之间得相关性得计算都是采用向量的办法,我在以前的PPT里曾经提到过。然而对于文本信息更深层次的分析不能单纯从字面上分析一篇文章的关键词,更重要的是它隐含的扩展的意义。

传统的关于计算文本相关度和【网页和查询的相关性】的计算都是采用匹配的方式进行的,然而这只能是基于字面意义上的统计计算。这里介绍的做法是采用关键词相关性扩展的做法从而得到更加精确的相关度计算。

例子:

文章 A: 谈论的是大学教育,最高频的关键词是:学生[3],学习[2],大学[2]

文章 B: 谈论的是普通教育,最高频的关键词是:教育[5],教师[1],进修[1]

[]里是相对的权重,可以理解成 TF*IDF

根据传统的相关性计算,我们会得到如下的结果:

1. 文章A 与 文章B 不相关

2. 查询 学生,学习,大学只能返回文章A,不能返回文章B

3. 查询 教育,教师,进修只能返回文章B,不能返回文章A

分析:

这个显然是有一定的问题的,问题的出现在于我们通常将"字面"的意思做为分析的来源而且依靠和仅仅依靠这些"字面"的关键词做为文章相关性和查询相关性判断的唯一要素。 如何避免?

我在以前的文章中提到过【关键词相关度】的概念,举例说明:

当出现:{学习}这个词汇的时候,真实的表达的意义往往是这样的:

{W1*学习,W2*教育,W3*教师,W4*大学。。。。。。}

其中W1,W2...是学习和相关词汇的相关权重。

基于这样一个矩阵,我们就能够将一个词扩展成为一组词汇,因而也同时可以将文章所对应的向量扩展成一个更多词汇的集合。

这里的计算需要一个完整的相关度矩阵:M

M(i,j) = {关键词i,j的相关度}

而两篇文章的相关度的计算,也由简单的

R= Sigma Vi*Vi

变为

R= Sigma Vi*M(i,j)*Vj

查询关键词和文章的相关度也由简单的

R(i)=TF(i)*IDF(i)

变为

R(i)=Sigma TF(j)*IDF(j)*M(i,j)

下面碰到一个核心问题就是:关键词之间的相关度如何计算?

例如:学校和学生的相关度是多少?

计算方法:

假设一个文章集合 {C},总文章数目为N,其中含有单词A的文章总数为Na,含有单词B的文章总数是Nb,含有{A+B}的文章总数是 Nab,那么相关性这么计算

CorrAB= Nab/(Na+Nb-Nab)-(Na*Nb)/(N*N)

词语间相关度计算算法相关文档

最新文档

返回顶部