背景

我们网站有个功能是评价房子的户型的,开放给经纪人使用,但是呢,经纪人为了蹭展示机会,就疯狂的复制粘贴,这样就导致大量无用的信息出现,影响用户体验。之前还好,偶尔有几个人,刷个几十条的算多的了,也就个别处理一下,打电话告知不要做这种操作就结束了。但是最近出现了有预谋有组织的刷榜活动,这就尴尬了,所以必须想办法堵住这种行为。

探索过程

其实之前也想过解决方法,想通过比对文本相似度来做,但是想的有点多,一查资料都是NLP,机器学习之类的。一看就头大,三人小团队,业务都做不过来,还搞AI,想太多了吧。于是也就先放下了。但是呢,之前的调研也给我脑袋里留下了一些必要的概念,比如余弦相似度,逆文档频率等等。

今天遇到这种大量刷的事情又让我想重新思考这方面的解决方法,于是我又查阅了一些资料。最终锁定在余弦相似度和Jaccard相似度上。

简要介绍相似度

这里只阐述我个人的简单的理解,并不是严格的定义。

余弦相似度

把文本向量化之后求向量之间的夹角的余弦值,1说明完全相同,-1说明完全相反。

Jaccard相似度

就是把两个集合的交集除以两个集合的并集。

简单的看集合中的元素是不是大量相同。

解决方案选型

其实我们要应对的问题是经纪人的疯狂复制粘贴。

可能被限制了之后会想着稍微改动一下在发布,而这种情况Jaccard相似度也能很好的处理。只要我设置一个能够接受的相似度阈值就可以灵活控制了。

所以我决定使用Jaccard相似度进行判断即可,从它的计算方法上就可以看出,它只关心相同的元素多不多,也就是说两条评论一样的词是不是很多。

比如我设置阈值为0.5,这意味着什么呢?

就是说他如果复制一条内容有10个字,那么在不删除原来内容的情况下,他要再写10个字以上,并且这些字不能是前面重复的。

是的,你没想错,我就是抛弃了分词,直接以字为单位进行计算。

Jaccard相似度PHP实现1

2

3

4

5

6

7

8

9

10

11* The similarity returned by this algorithm is a number between 0,1

*/

public function (&$A, &$B)

{

$a = array_fill_keys($A,1);

$b = array_fill_keys($B,1);

$intersect = count(array_intersect_key($a,$b));

$union = count(array_fill_keys(array_merge($A,$B),1));

return $intersect/$union;

}

代码很简单就不多解释了,需要说明的就是$A和$B,他们就是两条文本进行分词之后的数组。

分词就是按字分开就好了。(原本是用结巴分词的,但是太耗时,业务也不是非常需要分词,所以弃用了。)

这样一个简单的文本相似度分析功能就实现了。既不会太Low也不会高大上到难以实现。

作为一个普通的技术人,大部分时候技术是服务于业务的。

而是否去实现某个业务功能,以什么方式实现。更多的时候我们要考虑边际成本和边际收益。

够用就好,不是妥协,而是做出合理的决定。

jaccard相似度 java_Jaccard相似度相关推荐

  1. jaccard相似度 java_jaccard相似度算法

    Jaccard index, 又称为Jaccard相似系数(Jaccard similarity coefficient)用于比较有限样本集之间的相似性与差异性.Jaccard系数值越大,样本相似度越 ...

  2. 关联规则概念、啤酒加尿布引出购物篮分析、频繁项集、支持度+置信度+提升度

    关联规则概念.啤酒加尿布引出购物篮分析.频繁项集.支持度+置信度+提升度 目录

  3. LSTM模型在问答系统中的应用 2017-06-27 21:03 在问答系统的应用中,用户输入一个问题,系统需要根据问题去寻找最合适的答案。 1:采用句子相似度的方式。根据问题的字面相似度选择相似度最

    LSTM模型在问答系统中的应用 2017-06-27 21:03 在问答系统的应用中,用户输入一个问题,系统需要根据问题去寻找最合适的答案. 1:采用句子相似度的方式.根据问题的字面相似度选择相似度最 ...

  4. halcon知识:圆度和紧凑度

    一.说明 本文是halcon知识:select_shape究竟怎么用(1)的继续,关于select_shape的用途说的还不够,因为这些属性很多,有必要分开介绍. 二.圆度和紧凑度的直观演示 2.1 ...

  5. lisp如何将度分秒转换为弧度_地学中常用度、度分、度分秒,弧度、角度在MATLAB中的转换...

    地学中常用度.度分.度分秒,弧度.角度在MATLAB中的转换 转化为角度: deg = DMS2DEG(35,20,10) deg = 35.3361 转化为弧度 rad=DMS2RAD(35,20, ...

  6. mysql置信度支持度,支持度 置信度 提升度

    1.支持度(Support) 支持度表示项集{X,Y}在总项集里出现的概率.公式为: Support(X→Y) = P(X,Y) / P(I) = P(X∪Y) / P(I) = num(XUY) / ...

  7. Python度分秒与度的互转

    分享一下自己 # 度转度分秒 def duTdfm(x):d = int(x)f = int((x - d) * 60) / 100s = (x - d - (int((x - d) * 60) / ...

  8. xps 9360 8250U 过热死机,CPU散热解决方案,日常温度直降30度 ,从 75 度 到  45度。

    戴尔2006年正式发售的第一款 XPS 笔记本,名为 XPS M1710 系列,它拥有 17 英寸全高清显示屏.Intel Core Duo(Yonah) T2400(1.83G)处理器最高主频 18 ...

  9. matlab中度数化成度分秒,地学中常用度、度分、度分秒,弧度、角度在MATLAB中的转换...

    地学中常用度.度分.度分秒,弧度.角度在MATLAB中的转换 转化为角度: deg = DMS2DEG(35,20,10) deg = 35.3361 转化为弧度 rad=DMS2RAD(35,20, ...

最新文章

  1. NLP技术落地为何这么难?里面有哪些坑?
  2. 安全证书导入到java中的cacerts证书库
  3. 当技术面试官的一些心得
  4. cayley 图数据库
  5. 将一个正方形分成4个大小一样的小正方形,再将其中一个小正方形分成4个小正方形,如此类推,分割n次是几个正方形?
  6. Linux查看文件和日志的常用命令
  7. 火币生态链项目SuperNova与Poly Network达成战略合作
  8. webpack 优化react项目没有解决的问题
  9. 计组第六章 计算机的运算方法
  10. 我用Python写了一个做题软件控制台版。(支持Mod)
  11. python编写脚本方法_python写dnf脚本录制自己点击
  12. 2021 年“认证杯”网络挑战赛 B 题(第二阶段)
  13. 零基础一次通过软考网络工程师经验分享
  14. 为什么投资旅游景区赚钱难?怎样让景区快速盈利?
  15. redo synch writes在什么情况下发生
  16. IDEA启动卡在preparing workspace
  17. 平安科技实习生面试经历
  18. python画xy轴_python中的坐标轴该如何画?好画吗?
  19. 618新手必看:电视盒子哪个好?热销网络电视盒子排行榜
  20. RPA应用案例,泰隆银行引领智慧金融新风向

热门文章

  1. 时间同步:适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位
  2. js中使用createEvent和initEvent实现自定义事件
  3. SpringBoot使用Nacos作为配置中心服务
  4. 分享一个自动化截图程序
  5. 计算机下没有桌面,电脑桌面下面的任务栏没有了怎么办
  6. Unity2D判断两个物体碰撞的方向
  7. GOOGLE高级搜索的秘籍
  8. 解决iPhone连接Mac反复断开重连
  9. 【传感器融合】相机标定(理论推导+具体实现)
  10. 白酒TOP5掉队者的逆旅:洋河股份是怎么错过这轮黄金周期的?