海量数据文本相似度解决方式SimHash+分词方法+基于内容推荐算法

来源:互联网 发布:国家统计局2016年数据 编辑:程序博客网 时间:2024/05/16 17:50

之前找实习的时候被问到海量数据文本相似度怎么解决,当时很懵,在面试官的引导下说出了hash table+排序的方法(是的,我总能智障出新花样),当时想的是先做分词再做哈希,然后对标记哈希后的词(这时已是数字)进行排序通过共同的数字来度量它们的好坏。

在翻之前的面试笔记突然看到这个,就来网上找找解决方案,发觉hash没有问题,但后面的确是跑偏了。

常规的解法是SimHash,通过对分好的词进行hash并乘以他们的重要程度进行相加最后进行二值化来表示这一段话,最后通过度量二值化后的数字之间的相似度来度量文本句子的相似度。唯一比较麻烦的是最后需要取阈值来界定相似与否。


说是这么说,但是这个方法我其实还是有疑问的,本质上它是对原本的文本向量做了降维,但是降维后的向量方向凭什么这么设计我其实还是不懂(就是怎么决定哪两个词的方向是相同的)


先撇开这个问题,理解了SimHash的方法,难免就想了解文本相似的“上下文”

SimHash的前提是分词,分词怎么做?

文本相似能够衡量了要怎么应用它?


考虑到自己只了解一些CV的皮毛,找工作可能就不能局限在这个圈子里了,就想要了解下其他领域的业务


首先计算文本相似度的前提是要先能分词,分词的方法主要是两类

一是基于字符串匹配,加入一些启发式的方法将其匹配,时间复杂度为O(n)

二是基于机器学习的分词


(权重怎么来呢?也是通过机器学习?通过统计出现频率小的权重高?依然懵比)


怎么应用文本相似的度量呢:

最常规的应用可能是在推荐算法中的应用了

推荐算法分为两种:基于内容,协同过滤

字面来看基于内容的推荐最容易理解,通过相似内容来推荐相同的东西,比如你看西游记,我给你推荐悟空传,弊端是会推送雷同的东西

协同过滤包括基于用户的方式和基于item的方式,基于用户大抵是我和你的以前看过的东西或兴趣很相似,那我喜欢的你没有看过的就推荐给你;基于item即给item贴一些标签特征(比如打分等等等等),推送类似标签的的item,再把相同的item安利给你(这样还是会雷同吧?)


还有图结构blahblah


我们有缘再聊>﹏<


参考:

http://www.cnblogs.com/hxsyl/p/4518506.html

https://www.zhihu.com/question/20326697

https://www.zhihu.com/question/19578687

阅读全文
0 0
原创粉丝点击