1 SimHash算法去除长文本数据
google算法
1.1 SimHash算法
传统Hash算法本质上是将原始内容均匀随机地映射为一个签名值。即便两个原始内容只相差一个字节,所产生的签名差别也很大。 SimHash算法主要思想是降维,将高维的特征向量转化为f位的指纹(fingerprint),通过算出两个指纹的海明距离(Hamming Distance)来确定两篇文章的相似度,海明距离越小,相似性越低。
特别的,当simhash在处理小于500字的文本时,simhash的表现性不会很好。
比较两篇文章相似度的方法:
- 将两篇文章分别进行分词,得到一系列特征向量,然后计算特征向量之间的距离(可以计算它们之间的欧氏距离、海明距离或者夹角余弦等等),从而通过距离的大小来判断两篇文章的相似度。 只可比较两篇文章的相似性,如果是海量的文本数据集,程序的时间复杂度和空间复杂度将会很大。
- 传统hash,为每一个web文档通过hash的方式生成一个指纹。 不可行,只可测量两篇完全相同的文章,如果输入内容只出现了轻微的变化,hash就会发生很大的变化。
1.2 SimHash算法的实现
算法流程:
- 对文本分词,得到N维特征向量(默认64维)
- 对分词设置权重(TF-IDF)
- 为特征向量计算hashhash函数计算特征向量的hash值,hash值为二进制数01组成的n-bit签名。字符串变成数字。
- 对所有特征向量加权、累加给所有特征向量加权, W=hash\*weight,逐个特征相乘,再相加,变成只有一个序列串
- 对于累加结果,大于0置1,小于0置0如果大于0则置1,否则置0,从而得到该语句的simhash值
- 得到文本指纹(fingerprint)
- 海明距离计算距离
2 Jaccard similarity算法
计算文档相似度最合适,Minhash 是 Jaccard similarity 的一种近似估计
3 最长公共子序列
文档内容对比标红
4 TF-IDF与向量空间模型
根据向量计算相似度
5 机器学习方法去重
BERT模型去重
1965

被折叠的 条评论
为什么被折叠?



