1. Simhash不同于正常的hash值生成,它不仅能区别样本,也能通过海明距离得到两个样本的相似度,通常的simhash通过以下几个步骤生成。
- 文本分词
- 词向量加权
- 所有词向量加权之后求和
- 降维生成hash值
我们可以使用官方的simhash包来生成
from simhash import Simhash
content_list = [content_word_list]#分词列表
hex_str = Simhash(content_list)
这里的hex_str是十六进制,以字符串形式输出。
2. 缺陷及改进方法
在实际使用中,因为Simhash是局部敏感去重算法,没办法针对一个网页是另外一个网页的简短说明去重。例如针对某个特殊场景,招投标数据的去重,很多招投标html网站内容实际上是一个公告,但是由于前一个网页比较详细,后一个网页缺少详细说明,实际的业务要求依旧希望我们能将其认为重复,那么我们可以巧妙利用Simhash的词向量加权,在相对固定的业务场景对我们的关键信息进行加权,这样就可以很明显的提高Simhash的实际应用效果。