MENU

记我第三次美赛(3.6—3.10)

March 10, 2020 • Read: 7910 • 杂谈阅读设置

这里记录的是我第三次(最后一次)美赛的参赛记录,第二次的文章在这里,第一次的文章在这里

这篇文章写于 2020 年 3 月 10 日上午 6 点 55,距离我提交论文仅过去了 25 分钟,强忍着睡意,趁着现在还记得一些思路,赶紧做下记录,免得睡一觉起来忘了

赛前

赛前什么都没准备,本来这次就准备划水的,因为就算拿了 O 奖,也是 4 月底的事了,到时候研究生复试什么的早就结束了

3 月 6 日

本来早上定的 6 点的闹钟,结果睡过了,睡到 7 点多才起床,然后队友很贴心的已经翻译好了 C 题,毕竟是一起参加过比赛的,都不用讨论,就已经知道了准备选什么题。所以这次美赛我只知道 C 题的题目,其它题我根本看都没看。C 题大意是说给你三个产品的数据集,数据集里有一些字段:评分 (数值)、评论 (文本)、是否购买 (Y/N)、品牌编号......。要你根据这三个数据集,回答一堆问题,什么建立评分评论的定性或定量模型,什么特定等级的评分是否会引发更多的评论之类的,总共大概有 7 个问题吧。比较巧的是,赛前我一直在学习 NLP,C 题对评论 (文本) 进行处理,实际上就是 NLP 问题。我的具体做法是对 review_body 进行情感分析,并将情感值分为三档:积极、中性、消极。情感分析很简单了,有很多模型都能做,我用的是 Bidirectional LSTMs 模型,双向 LSTMs 可以同时考虑上下文信息,比传统 LSTMs 得到的结果要更准。用 PyTorch30 分钟就调试通了,于是本地运行了一下,感觉太慢,所以转到了 colab 上用 GPU 跑。那么如何将得到的结果融入到评分中去呢?我是这样做的,原本的评分只有 5 档 (1~5)。但是可能有人给了 4.5 分,系统自动四舍五入了,为了还原得到更准确的评分分布,或者也可以说是为了更加离散评分分布,我制定了下面的策略:

如果一个人的原始评分大于等于 4,并且情感分析结果是积极的,不做任何改变

如果一个人的原始评分小于等于 2,并且情感分析结果是消极的,不做任何改变

如果一个人的原始评分属于 (2,4),并且情感分析结果是积极的,则将评分变为原始评分 + 0.5

如果一个人的原始评分属于 (2,4),并且情感分析结果是消极的,则将评分变为原始评分 - 0.5

为什么要这么做?如果你仔细想想,应该能明白其中的缘由,如果不明白,你也可以认为我是拍脑袋随便想的

随便看一张离散后的图,纵坐标是每种评分的占比

第一问忘了怎么做的了,现在也懒得翻论文,第一天没做什么事,基本上就是处理了所有的文本,然后随便画了几张图看了看数据分布,然后就是和队友聊聊天(划水就要划的彻底)。下面上第一天的代码(不全)

这里面并没有 BiLSTMs 模型的代码,代码在这篇文章

3 月 7 日

7 号老师给我说了好多思路,印象比较深的是,未购买产品的用户也是可以评分和评论的,未购买的用户 verified_purchased 字段值为 N。然后老师还让我画出某个产品 5、4、1 星每个月的占比与销量的关系,老师信誓旦旦的说:"一定会有所发现"。然而并没有,于是 7 号这天也水过去了。下面上第二天的代码(不全)

3 月 8 日

8 号老师基本上没和我说什么思路。但是我觉得划水怎么也得把论文写完,不然肯定吃不了兜着走,所以 8 号开始发力了。先上一些代码,下面的代码很简单,做的事就是看看销量最好的品牌的平均评分,是否能影响整个产品的平均评分。答案是当然的,不过你不能只是通过 "如图所示",得有点数据说明,所以我计算了两条曲线的相关系数以及皮尔森系数

有一问是和产品声誉有关的,那么问题来了,什么是声誉,如何量化声誉?声誉就是口碑,怎么反应口碑?当然是看评分。不过问题又来了,因为存在不购买也可以评分的情况,因此可能会出现同行恶意刷差评以及自己请水军刷好评的现象,所以我给它们分别赋予一个权重,最终的加权平均数就定义为声誉。这个权重比较复杂,是动态的,假设黑粉数量 > 红粉数量,应该怎么做,红粉数量大于黑粉数量,又怎么做。下面直接上代码

后面还有一题是要找出潜在的,可能成功(或失败)的产品。那么问题来了,怎么定义潜在?怎么定义成功(失败)。我是这么想的,将各个品牌按照销量从小到大排序,排序处于 1/4 和 3/4 内的都是潜在品牌。1/4 和 3/4 其实是统计学中比较常见的两个点,一个是下四分位数,一个是上四分位数,这俩数都是有具体意义的,但是我们可以先感性理解一下,假如一个产品的销量处于 3/4,他还能叫做潜在吗,这明明就是很火的产品好么;假如一个产品的销量处于 1/4,销量实在是太小了,可能也才 10 件左右,不可能看得出来潜力的。找出处于 1/4 和 3/4 的品牌后,画出它们的好评率和差评率,好评率高 & 差评率低的当然就是具有成功可能性的潜在产品;反之亦然。下面上代码 (不全)

3 月 9 日

有一道题是问,特定评分是否会引发更多评论。那就把一些特定的评分数量与评论数做个对比,看看有没有什么关系就行了

还有一问是问,一些特定的产品质量的词,是否和评分有关(具体题目我忘了,大意好像是这样)

我的做法是首先筛选出 verified_purchased 值为 Y 的所有数据,仅对这些数据进行分析。对于每个产品,分两种情况进行考虑,一是,看看好评都是些什么词,二是,看看差评都是些什么词。这里用了 TF-IDF 算法来提取关键词,然后画了两个词云

还有一些问题的思路懒得写了,这篇文章写到这的时候已经是 8 点了,中间眼皮打过无数次架。

赛后

感谢指导老师,感谢我的两个队友♥

下面放出摘要,具体细节自己慢慢看吧

Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment

4 Comments
  1. 666 666

    @(大拇指)

  2. 乐松 乐松

    up 真的厉害,好佩服你

  3. darren darren

    太强了

  4. maple maple

    牛哇,up 最后拿了什么奖啊