使用 TF-IDF 加权的空间向量模型实现句子相似度计算
字符匹配层次计算句子相似度
计算两个句子相似度的算法有很多种,但是对于从未了解过这方面算法的人来说,可能最容易想到的就是使用字符串匹配相关的算法,来检查两个句子所对应的字符串的字符相似程度。比如单纯的进行子串匹配,搜索 A 串中能与 B 串匹配的最大子串作为得分,亦或者用比较常见的最长公共子序列算法来衡量两个串的相似程度,使用编辑距离算法来衡量等。
上述基于字符匹配层次的算法一定程度上都可以计算出两个句子的相似度,不过他们只是单纯的从字符角度来计算,但是我们的句子都是有一定含义的,且句子中的每个词不应当被视为无关字符组合,而是不可分割的一个实体。所以这就需要对句子进行 分词 操作。在分词后,基于字符匹配的算法就应当以词组为单位进行匹配而不是单个字符。
向量空间模型
空间向量模型首先要对待处理的两个句子进行分词,这将会得到两个由 词 组成的序列。比如两个句子:
A:你怎么样? B:你还好吗?
分词后的结果就为:
A:["你","怎么样"]
B:["你","还好吗"]
然后将两个列表取并集得到列表 C:["你","怎么样","还好吗"];如果将