如何识别知乎上的美女爆照贴

博客荒废了许久,今天发一个福利科普贴,开坑准备写一系列的分类器算法,以下正文。

一个简单的想法

很容易也很自然的会想到两个粗暴的解决方案:

1. 从用户头像筛,拿opencv做个筛子看看是不是美女头像

2. 从用户的发帖来筛,判断爆照贴里面的照片是不是美女

事实上可以看出来这两种方案都挺低效且吃力不讨好的,明显的缺点如下:

1. 往往只能判断是不是一张好脸,而判断是不是好腰好屁股好胸好腿好身材是很难的

2. 做图像分类/识别,在算法效率和准确率上仍然有瓶颈

3. 事实上使用美女/女明星照片做头像的人还是不少的

当然,用图像识别这种解决方法是很有用的,但不是这么用,至于怎么使用,以后讲。

做一点微小的改进

改进的方案是用发帖的评论内容收藏夹名字做筛子,这么做的优点有:

1. 评论和收藏夹名字是人类看到帖子之后的反应输出,已经经过了一轮人工筛选

2. 不仅仅是好脸蛋,好腰好屁股好胸好腿什么的,都会得到反应

3. 可以更加细化的做分类,好腰,好腿都可以独立做筛子给分出来

4. 对某类文本分类相对来说计算量低了不少,准确率也得到了极大的提高

5. 使用找美女/女明星做头像的情况,除非是用户自己想欺骗社区,一般不会继续发对应头像的爆照贴

6. 不仅仅能应用于找美女这个case,还能用于找到各类其他的目标帖/目标用户,比如我还搞了高富帅土豪识别寻找牛人的筛子moha内容识别政治左右筛子,对于其他类似的需求也都可以做,只需要看你脑洞多大咯

那么让我们先来看看一个美女爆照帖子下面正常的评论是怎么样的:

“美翻了” “我只想说,真漂亮” “没有一年前那个好看啊” “这才是真漂亮” “我就看看不说话”

“111 我觉得这个妹子面相很好” “好美~” “真的美” “应该是晈筷子练了苹果肌”

“素顔好看,哈哈” “江苏两京?” “第二张像刘涛” “无论长发短发都漂亮” “很美很漂亮”

压根不需要看原帖内容,只需要扫一下这个评论列表,就知道po主肯定是个美女,且这个帖子是一个爆照贴。

对于人类肉眼来说,这个判断过程几乎不需要任何时间开销,只需要扫一眼即可,那么我们怎么写一个程序来做这个判断呢?

注:关于如何实现这个筛选的判断程序,有许多种不同的方法,每种方法都有它自己最适合的场景,没有什么高下之分。

问题描述

已知:4000个普通的帖子与4000个美女爆照的帖子共计8000条,已做好标记。

每个帖子数据格式如下:

{

    "answer_url" : “帖子的链接” ,

    "comment" : “帖子的内容” ,

    "comment" : “评论内容” ,

    "topics" : “帖子所属问题的标签” ,

    "favlist" : “所有收藏了该帖子的收藏夹” ,

    "isbeauty" : “为1则是美女爆照贴,为0则不是”

}

:实现一个分类器,判断一个不在数据集中帖子是不是美女爆照贴。

此处帖子数据格式除了isbeauty域为空以外,其他内容同上

解法1: Naive Bayes

我们会注意到,美女爆照贴的评论下面,有一些词出现的频率特别高,比如“漂亮”这样的词。

而普通的帖子中这样的词出现的概率相对较低,我们似乎可以利用这个特征来判断一个帖子是不是属于美女爆照贴。

所以我们此处要考量的是:当“漂亮”这个词出现在评论中时,帖子是爆照贴的概率是多高。

即为:P(“是美女爆照贴”|“评论中有‘漂亮’”)

根据贝叶斯定理我们有:

P(B)P(A|B) = P(A)P(B|A), 在这个式子中,知道其中3个值可以求得剩下的那个

在本问题中有:

P(“是美女爆照贴”|“评论中有‘漂亮’”) = P(“评论中有‘漂亮’”|“是美女爆照贴”)*P(“是美女爆照贴”)/P(“评论中有‘漂亮’”)

P(“评论中有‘漂亮’”|“是美女爆照贴”),这个数值我们可以通过统计4000个爆照贴的评论得到

P(“是美女爆照贴”),这个数值目前我们并不知道,但是可以先使用50%这个数值来代替,未来数据越来越多之后会得到越来越准确的比例值

P(“评论中有‘漂亮’”),统计一遍所有已知帖子的评论即可知道

于是经过已知数据集的内容我们可以计算出P(“是美女爆照贴”|“评论中有‘漂亮’”)的是多少,同样的,我们可以得到对于每一个词计算这个值。

当然,光看一个词是不够的;如果一个帖子是个风光摄影帖,下面的回复也会经常出现“漂亮”,所以我们需要多看一些词,计算联合概率

拿到一个帖子的时候,先对每个词计算P(“是美女爆照”|“出现词W”),然后取估值最高的10个词计算联合概率,当然这里你也可以取更多或者更少。

这里我们假设出现词W1出现词W2这两个事件是相互独立的(事实上这个假设并不满足,但是在naive bayes中我们做了这么一个假设,工程实践上并不会对结果影响很大)。

设B为事件“是美女爆照”,W1为“出现词W1”,Wi为“出现词Wi”,则我们的问题变为求解P(B|W1W2W3…W10):

P(B|W1W2W3…W10) = P(W1W2W3…W10|B)P(B)/P(W1W2W3…W10)

= P(W1|B)P(W2|B)P(W3|B)…P(W10|B)P(B)/(P(W1|B)P(W2|B)P(W3|B)…P(W10|B)P(B) + (1-P(W1|B))(1-P(W2|B))(1-P(W3|B))…(1-P(W10|B))(1-P(B)))

上式中所有的数值我们都已知,计算出来的联合概率在足够大的时候,我们可以认为这个贴应该是爆照贴。

在工程实践的时候,直接这么算往往效果不是很好,因为往往会有一些出现频率特别低的词混淆了结果,改进的方法可以是:

1. 我们可以将出现概率在某个概率值以下的词全部忽略

2. 我们可以对所有词的出现概率做修正,比如全部同时加上某个常数

以上两种均可解决问题,我用了第二种。

好了,理论讲完了,我用这个方法根据评论的内容做了一个筛子,准确率在80%左右;而如果使用问题标签,准确率能提高到90%;使用收藏夹名字的准确率则能提高到95%(这里我很粗暴的用了precision,没有做更多evaluate)

来一些有意思的数据,对所有的词计算P(B|W)的结果进行排序,我们可以得到美女爆照贴的top10关键词:

评论中:胸 第二张 美美 轮带逛 好美 第一张 第三张 爆照 身材 很漂亮

收藏夹名字中:爆照  美女 看样子 福利 照片 骗图 赏心悦目 知女乎 妹纸 妹子

标签中:钓鱼 胸部 颜值 是种怎样的体验 外貌 身材 自拍 发型 照片 单身

附上随机挖掘出来的一些美女爆照贴列表吧:

长得好看,但没有男朋友是什么体验? – Susan美美的回答
你认为自己最好的照片是哪张? – 匿名用户的回答
胸部比较丰满的女孩穿什么衣服好? – 晓忆xiaoyiyi 的回答
你的身材不配你的脸是一种怎样的体验? – 思无邪的回答
长得好看是一种怎样的体验? – Biubiubiu 的回答
如何拍出一张性感诱人但不低俗的红唇照片? – 杨面的回答
化妆后颜值和素颜差距很大是种怎样的体验? – 夏颜的回答
你认为自己最好的照片是哪张? – 若若若的回答
如何拍出一张性感诱人但不低俗的红唇照片? – 韦思嘉的回答
你为 Cosplay 牺牲最大的一次是怎样的? – 你扛把子的回答
有很漂亮的亲姐妹是一种什么样的体验? – 馨苒的回答
大胸妹子如何挑选合身又好看的比基尼? – 匿名用户的回答
「当时随便说说的话,结果意外实现了」是一种怎样的体验? – 暴躁的胖灰灰的回答
生活中怎样的美女才能被称为「大」美女? – 静香的回答
开豪车是一种怎样的体验? – Susan美美的回答
女生长途旅行如何精简行李还能打扮的美美的? – 水氷曱的回答
女生怎么健身锻造好身材? – 北京小风子的回答
女生拥有一头短发是一种什么体验? – 元又元的回答
健身能改变人的什么? – 知乎用户的回答
因为胸大而自卑,怎么办? – 慕梁的回答
在日本什么样的女生算是美女? – 娜娜的回答
你在现实生活中见过最美的博士是什么样子的? – 知乎用户的回答
有一个很漂亮的女朋友是什么体验? – 相辉的回答
如何穿衣能有干净利落的气质? – 杨壮壮的回答
这两个妆容的重点在哪里? – Rio王瑜的回答
女生应该怎么穿衣服既低调又不俗气? – 简猫的回答
当一个颜值很高的程序员是怎样一番体验? – 王子君的回答
你认为自己最好的照片是哪张? – 匿名用户的回答
外国人觉得汉服好看吗?汉服、和服、韩服哪一种更好看呢? – Martina 的回答
女生拥有一头短发是一种什么体验? – Mingo鸣哥的回答
怎么拍妹子会显得腿长? – Knight 的回答
女孩由丑变美是什么样的感觉? – 猫仙Yogurt 的回答
长得好看,但没有男朋友是什么体验? – 一只麤人的回答
你认为自己最好的照片是哪张? – 静香的回答
如何成为一个美丽优雅的孕妇? – 之之哟的回答
长得好看是一种怎样的体验? – 知乎用户的回答
女生的膝上袜该怎么选怎么穿有何讲究? – 知乎用户的回答
胸大的妹子怎么穿衣服才能不显胖? – 王翊的回答
有很漂亮的亲姐妹是一种什么样的体验? – 长岛冰茶的回答
眼睛好看是一种什么样的体验? – 叶南秋的回答
你认为自己最好的照片是哪张? – 知乎用户的回答
如果妈妈比女儿漂亮,那么两个人分别会有怎样的心理体验? – 叶芊芊的回答
你认为自己最好的照片是哪张? – 澜心的回答
和「女神」约会是一种什么样的体验? – sunchase 的回答
女生拥有一头短发是一种什么体验? – sesame 的回答
大胸穿水手服什么感受? – 蒋连理的回答
长得好看,但没有男朋友是什么体验? – 知乎用户的回答
做一个腰臀比在 0.7 左右的妹纸是一种怎样的体验? – 萌二的回答
你都独自去过哪些地方? – 肉兰的回答
有什么适合大胸妹子的服装品牌? – 栗木君的回答
屁股大是怎样一种体验? – 赵牙牙牙的回答
你认为自己最好的照片是哪张? – sesame 的回答
有着美丽的双马尾是怎样的体验? – 猫仙Yogurt 的回答
长得好看,但没有男朋友是什么体验? – 金司令的回答
你认为自己最好的照片是哪张? – Candy鱼的回答
女生怎么拍照显得胸大? – 囧妮酱的回答
你在现实生活中见过最美的博士是什么样子的? – 北极熊和知更的回答
有一个漂亮的室友是一种什么样的体验? – 管大大的回答
作为一个多才多艺的知乎女性是一种怎样的体验? – 赤兔女的回答
一个人旅行应该怎样自拍? – orange paranoid 的回答
有一个很漂亮的女朋友是什么体验? – 子雄的回答
胸大的妹纸平时怎么尽可能的掩盖胸大? – 陈叮咚的回答
如何优雅而不觉得露地穿低胸小短裙? – 匿名用户的回答
笑起来很好看是种怎样的体验? – 李遥岑的回答
如何拍证件照比较好看? – 周古月的回答
知乎里面有没有爱穿旗袍的妹子? – 吴宇菲的回答
胸部大要怎么穿才显瘦? – 张芝萍的回答
你认为自己最好的照片是哪张? – Rocio陈的回答
有一个漂亮的室友是一种什么样的体验? – 小唐同学的回答
你认为自己最好的照片是哪张? – 观重的回答
割双眼皮有什么危险吗? – 宋林珅的回答
长得好看,但没有男朋友是什么体验? – 缪良人的回答
长得好看,但没有男朋友是什么体验? – 匿名用户的回答
在日本什么样的女生算是美女? – 沉歌的回答
你认为自己最好的照片是哪张? – 暖山的回答
有哪些好看的侧脸? – Rio王瑜的回答
你认为自己最好的照片是哪张? – 紫妍的回答
胸大的女性如何穿出英伦风、学院风和小清新的感觉? – 叶小如的回答
如何才能拍出一张特别好看的自拍照? – 白源源的回答
什么样的水手服最好看? – 浅野早苗的回答
女孩由丑变美是什么样的感觉? – 法号平瘦的回答
女孩子要怎么变的更有魅力? – 知乎用户的回答
有着美丽的双马尾是怎样的体验? – 向怡的回答
你眼中的新疆、你身边的新疆朋友都怎么样呢? – 知乎用户的回答
身高给你带来了什么? – 杨西瓜的回答
什么样的眼睛算是勾人的,什么样的眼睛算是有魅力? – 匿名用户的回答
有马甲线是种什么样的体验? – 羽小团的回答
童颜巨乳细腰个子矮小适合什么风格的打扮? – 钟文的回答
怎样成为模特? – Mingo鸣哥的回答
女友是小萝莉是怎样一种体验? – 小雯的回答
大多数女生化妆都能变漂亮吗? – FieryTiger 的回答
长得好看,但没有男朋友是什么体验? – 小碘的回答
笑得好看是一番怎样的体验? – 粥浚杭的回答
做一个腰臀比在 0.7 左右的妹纸是一种怎样的体验? – 程御寒的回答
大学生日常裸妆/淡妆怎样做? – Rio王瑜的回答
“颜值中上”的人到底长什么样? – 一团饭饭的回答
长得好看是一种怎样的体验? – 柳橙橙的回答
如何才能拍出一张特别好看的自拍照? – 玛嘉烈玛嘉烈的回答
生活中你见过的最美女性长什么样? – Hayami 的回答
人能控制自己的长相吗? – 米茶茶茶茶茶的回答
有很漂亮的亲姐妹是一种什么样的体验? – 左煜的回答
胸大是什么体验? – 匿名用户的回答
眼睛好看是一种什么样的体验? – 白源源的回答
如何才能拍出一张特别好看的自拍照? – 薇蕊的回答
长得好看是一种怎样的体验? – 海伦娜儿的回答
平胸到底有多平? – 苏敏的回答
胸大是一种怎么样的感觉? – 我用真名被嘲笑了的回答
有着美丽的双马尾是怎样的体验? – 包子琛的回答
长得好看,但没有男朋友是什么体验? – 耶加雪啡的回答
拍照时脸背光怎么办?如何拍摄美丽的逆光人像照? – 韦苡珊的回答
短发女怎么打扮比较有女人味? – leticia晓的回答
你认为自己最好的照片是哪张? – 子升ZoE 的回答
短发女怎么打扮比较有女人味? – 知乎用户的回答
长得好看是一种怎样的体验? – 時雨的回答
拍照的时候怎么让表情自然? – 简猫的回答
证件照好看是怎样的体验? – 陈盐析的回答
长得好看是一种怎样的体验? – 缪祁的回答
你见过的最漂亮的紧身牛仔裤大长腿是什么样的? – 吴霜的回答
女生拥有一头短发是一种什么体验? – leticia晓的回答
女生拥有一头短发是一种什么体验? – 徐一叉的回答
减肥对外貌的改变有多大? – Cutiepie 的回答
女生怎么穿会比较帅气? – 李萬一的回答
身为 JK (将制服作为日常穿着)受到过哪些外界的评价?又是怎么调整心态的呢? – 魏筱然的回答
有哪些史诗般的徒步旅行路线? – 李遥岑的回答
胸大是怎样一种体验? – 吴宇菲的回答
德州扑克女牌手中,知名的美女有哪些? – 落落的回答
大多数女生化妆都能变漂亮吗? – 崇鹿的回答
顶尖的淘宝模特是怎样的存在? – 鱼饼的回答
女生拥有一头短发是一种什么体验? – 我是木木酱的回答
你认为自己最好的照片是哪张? – 知乎用户的回答