[文本语义相似] 基于simhash相似度

文本相似在问答系统中有很重要的应用,如基于知识的问答系统(Knowledge-based QA),基于文档的问答系统(Documen-based QA),以及基于FAQ的问答系统(Community-QA)等。像 对于问题的内容,需要进行相似度匹配,从而选择出与问题最接近,同时最合理的答案。本节介绍 基于simhash相似度。
 

算法描述:先计算两句子的simhash二进制编码,然后使用海明距离计算,最后使用两句的最大simhash值归一化得相似度。

from simhash import Simhash

def sim_simhash(s1, s2):
    """先计算两文档的simhash值,然后使用汉明距离求相似度"""
    # 1. 计算文本simhash值
    a_simhash = Simhash(s1, f=64)  
    b_simhash = Simhash(s2, f=64)
    max_hashbit = max(len(bin(a_simhash.value)), len(bin(b_simhash.value)))
    # 2. 计算汉明距离汉明距离
    distance = a_simhash.distance(b_simhash)
    # 3. 归一化到0~1
    sim = 1 - distance / max_hashbit  
    return sim

word1 = '这是什么'
word2 = '这个什么价钱'
word_sim = sim_simhash( word1, word2 ) 
原创文章 377 获赞 835 访问量 187万+

猜你喜欢

转载自blog.csdn.net/u014365862/article/details/105967293