拒绝被坑!如何用Python和数据分析鉴别刷单!?

发际线堪忧的小Q,为了守住头发最后的尊严,深刻分析了几十款防脱洗发水的评价,最后综合选了一款他认为最完美的防脱洗发水。git

一星期后,他没察觉到任何变化。github

一个月后,他用卷尺量了量,发际线居然后退了0.5cm!难道防脱要经历一个物极必反的过程,先脱再长?小Q不甘心,决定继续坚持。3d

两个月后,小Q心如死灰,忍不住和小Z抱怨。blog

 

 

 

!!!!!!排序

 

这句话,平地一惊雷,炸出了小Q惨痛的网购回忆。产品

 

他,屡屡冲着卖家秀而去,却屡屡化身买家秀而归。it

 

说好的椰子!?微博

 

 

我想买两个杯子来着,怎么变成了一个!?ast

 

 

小Q曾经由于网购吃亏太多,而为本身的颜值和智商担心。但通过小Z的点拨,他认定了一件事:活成卖家秀,并非自身的问题,而是万恶的假评价误导了本身的消费决策。class

 

为了本身,为了让更多的朋友免受误导,他和小Z一拍即合,决定用数据思惟来鉴定刷单。

 

通过一番翻云覆雨,终于总结出了用数据鉴定刷单的两板斧。

 

 

第一板斧:评销比

 

购买——使用——评价是一个完整的购后链路。消费者在购买了产品以后,必定会使用,但评价则须要必定场景来触发。

 

好比这个产品超出预期,我要感谢卖家!或者这个产品在侮辱个人智商,我要骂街!

 

固然,还存在一部分为了刷积分而评价的人,不过正常状况下,主动评论的人占总人数的比重是维持在稳定水平的。

 

 

若是有经过大规模红包返现或其余人为手段刷的好评,在一样购买人数的前提下,参与评价的人大几率是高于正常的。

 

怎么衡量这个比例是否合理呢?这里,咱们引入一个叫作评销比的指标。

 

评销比 = 单款产品总评论数 / 单款产品总销量 * 100,以此来衡量平均每卖出100单位的产品,对应着多少条评价。

 

接下来,咱们导入爬取的脱敏真实数据(为了去重广告嫌疑脱的敏)来实践一下:

 

 

增长一列计算评销比:

 

 

看看评销比分布形态,数据在20左右分散开来,略微偏右:

 

 

从评销比分布图,能够看出在40处有二次下跌,咱们暂且把40(通常也能够尝试平均值)设置为一个筛选阈值,高于阈值的断定为有刷单嫌疑。

 

 

初版斧挥过,12%疑似刷单的产品应声倒下,小Z露出了欣慰的微笑。

 

小Q却眉头紧锁:“这个鉴定逻辑是有必定道理,可是,我买的那款洗发水居然逃过了筛选!”

 

不要慌,咱们还有第二板斧保驾护航。

 

 

第二板斧:内容重复度

 

第二板斧整个判别逻辑极其简单粗暴:对于一款产品,若是存在不一样的用户,在不一样的时间,评论了相同的内容,那妥妥的是刷啊!

 

直接上案例数据,咱们爬取了小Q购买的那款防脱洗发水评价,共计1706条:

 

 

为了让鉴别更加科学,先换位思考:除极端情绪外,咱们本身在评论时总会用“还行”、“通常般”、“刚收到,还没用”等短评来敷衍。这些短评很是容易重复,但也不能说是刷的评价。

 

so,咱们在用重复度鉴别时,能够先预设一个评论长度做为筛选标准,好比只对超过15个字的评论进行重复度匹配:

 

 

长度筛选以后,正好还剩下1200条评价,下面开始正式匹配。你们若是想更精细,能够考虑用文本挖掘等高阶方法,在这里咱们用最最最简单粗暴的文本排序:

 

 

前6条评价,有3个不一样的客户,分别在19年的10月16日、24日和21日发表了相同的内容,他们都受高考压力影响,脱发严重,天天房间、床铺、地上掉满他们的头发。

 

幸亏!!!他们在秃顶前遇到了这款洗发水!用了几回不只比以前掉的少,还新长出来了一些小碎发!

 

 

177个字,洋洋洒洒,使人动容!

 

但这究竟是偶然的巧合仍是有组织刷的评价呢?咱们不能这么简单下定论。

 

继续看一看,这些长篇大论一字不差的重复评论有多少条:

注:A,B,C三条内容彻底同样,则统计为3条重复评价

 

 

1200条超过15个字的评价,有378条是虚伪的,占比高达31.5%。

 

他们文风多变,除了“高考压力”,还有“为父分忧而买”、也有“被微博广告安利”、甚至有“担忧被骗,用第二套才敢评价的”。

 

可谓情真而意切,感人而至深!

 

小Z看过评价,深深不能自拔,瞬间理解了小Q为何被忽悠。

 

幸亏,之后有了这两板斧保驾护航,不再用担忧这些虚评假意了。

 

注:文章所涉及全部源数据和代码,已上传至github

https://github.com/seizeeveryday/DA-cases/tree/master/Comments

相关文章
相关标签/搜索