PostgreSQL文本相似度估计 | jianingy.com

来源:百度文库 编辑:神马文学网 时间:2024/05/04 08:04:36

PostgreSQL文本相似度估计


代码位置

Checkout

  1. git clone git://gitorious.org/postgrework-jianingy/mainline.git postgrework
  2. cd postgrework/pg_trgm_sml

 

Source Browser

http://gitorious.org/projects/postgrework-jianingy/repos/mainline/trees/master

算法

描述

相似度比较基于空间向量模型(Vector Space Model)。将两段文本用向量A、B表示,计算AB夹角的余弦值用以表示相似度。

具体步骤如下:

  1. 提取两段文本中所有词(事先需用空格分割好)。
  2. 计算每个词在两段文本中分别出现的次数(用BSD tree.h里的RBTREE保存)
  3. 用词频做为A、B的分量。
  4. 使用余弦公式计算AB夹角的余弦值。

举例

> T1 = 我 爱 北京 天安门
> T2 = 我 爱 北京 立交桥

提取所有的词

> W = 我 爱 北京 天安门 立交桥

计算每个词分别出现的次数

> CA = 我:1 爱:1 北京:1 天安门:1 立交桥:0
> CB = 我:1 爱:1 北京:1 天安门:0 立交桥:1

分别计算向量AB
设S为总词数即T1,T2中总共出现词的数量
> S = 4 + 4 = 8
> A = (1/8, 1/8, 1/8, 1/8, 0/8)
> B = (1/8, 1/8, 1/8, 0/8, 1/8)

应用余弦定理计算向量夹角