UP | HOME

如何衡量两个词的相关度

在信息论中常用互信息(MI,Mutual Information)来衡量两个词的相关度

MI(X,Y) = log2p(x,y) / (p(x)p(y))

MI 越大,表示两个词之间的结合越紧密

这个算式看起来很直观,但计算还是有些麻烦,因为计算概率值p(x),p(y)都需要在语料中进行分词,这就涉及到词典的构成以及分词的算法

下面介绍一个简便而直观的算法:

假设一个文章集合 {C},总文章数目为N,其中含有单词X的文章总数为Nx,含有单词Y的文章总数是Ny,含有{X+Y}的文章总数是 Nxy

那么相关性这么计算

Corr(X,Y) = Math.log10(N/Nx) * Math.log10(N/Ny) * Nxy / (Nx+Ny-Nxy)

公式可以简化为

Corr(X,Y) = Nxy / (Nx+Ny-Nxy) - (Nx*Ny) / (N*N)

计算中可能会得到负相关,如果考虑到Nx,Ny都是小量,可以忽略,那么

CorrAB = Nxy / (Nx+Ny-Nxy)

至此,要计算相关度之间的全部要素都获得了

思考,那么到底 学校学生 之间的相关度是多少呢?

我们利用google来回答这个问题吧:

约有91,700,000项符合学校的查询结果
约有88,200,000项符合学生的查询结果
约有48,900,000项符合学生/学校的查询结果
Corr{学校,学生} = 48900000 / (91700000+88200000-48900000) = 0.37

Date: 2019-06-21 Fri 23:22

Author: shixiongfei

Created: 2020-09-05 Sat 14:40

Emacs 27.1 (Org mode 9.3)