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

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

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

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

!!!!!!

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

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

说好的椰子!?

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

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

为了自己,为了让更多的朋友免受误导,他和小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

拒绝被坑!如何用Python和数据分析鉴别刷单!?的更多相关文章

  1. python时序数据分析--以示例说明

    Python时间序列数据分析--以示例说明 标签(空格分隔): 时间序列数据分析 本文的内容主要来源于博客:本人做了适当的注释和补充. https://www.analyticsvidhya.com/ ...

  2. 大数据学习:Spark是什么,如何用Spark进行数据分析

    给大家分享一下Spark是什么?如何用Spark进行数据分析,对大数据感兴趣的小伙伴就随着小编一起来了解一下吧.     大数据在线学习 什么是Apache Spark? Apache Spark是一 ...

  3. Python文本数据分析与处理

    Python文本数据分析与处理(新闻摘要) 分词 使用jieba分词, 注意lcut只接受字符串 过滤停用词 TF-IDF得到摘要信息或者使用LDA主题模型 TF-IDF有两种 jieba.analy ...

  4. 如何用Python从海量文本抽取主题?

    摘自https://www.jianshu.com/p/fdde9fc03f94 你在工作.学习中是否曾因信息过载叫苦不迭?有一种方法能够替你读海量文章,并将不同的主题和对应的关键词抽取出来,让你谈笑 ...

  5. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  6. 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  7. 利用Python进行数据分析(9) pandas基础: 汇总统计和计算

    pandas 对象拥有一些常用的数学和统计方法.   例如,sum() 方法,进行列小计:   sum() 方法传入 axis=1 指定为横向汇总,即行小计:   idxmax() 获取最大值对应的索 ...

  8. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  9. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

随机推荐

  1. Foxmail:导入联系人

    打开“Foxmail”之后,如下图所示: 接下来,在左下角找到箭头指示的位置处,点击此处: 接下来,在邮箱的右上角找到如图所示的位置,鼠标点击此处: 点击之后,如下图所示,找到“导入”: 点击“导入& ...

  2. AKKA文档2.3(java版)—什么是角色

    原文:http://doc.akka.io/docs/akka/2.3.5/general/actors.html译者:Vitas 什么是角色? 前面角色系统一节介绍了一群角色如何形成一个层次结构,并 ...

  3. PTA(Advanced Level)1011.World Cup Betting

    With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...

  4. Luogu P5221 Product

    题目 注意一下空间限制. 令\(f(n)=\prod\limits_{i=1}^n\prod\limits_{j=1}^nij,g(n)=\prod\limits_{i=1}^n\prod\limit ...

  5. 首探:Ruby on Rails 简单了解

    一. 安装 Ruby安装:https://ruby-china.org/wiki/rvm-guide 注:安装了RVM和Gem后 安装rails: gem install rails -v 5.1.4 ...

  6. LCT做题笔记

    最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往 ...

  7. Codeforces 1221D. Make The Fence Great Again

    传送门 容易想到 $dp$,但是如果直接设 $f[i][j]$ 表示修正完前 $i$ 个位置,第 $i$ 个位置增加了 $j$ 高度显然是不行的 考虑有性质,发现每个位置只会被左右两个位置影响而改变, ...

  8. luogu题解 P1099 【树网的核】树的直径变式+数据结构维护

    题目链接: https://www.luogu.org/problemnew/show/P1099 https://www.lydsy.com/JudgeOnline/problem.php?id=1 ...

  9. Docker简易使用手册

    1. Docker介绍 Docker中文社区文档 Docker 是一个开源的软件部署解决方案. Docker 包括三个基本概念: 镜像(Image) Docker的镜像概念类似于虚拟机里的镜像,是一个 ...

  10. 12 Python之函数进阶

    1. 动态传参 *, ** : 形参: 聚合 位置参数* -> 元组 def func(*args, a, b, c): print(a, b , c, args) func(1,2,3,4,5 ...