Category: 算法 Algorithm

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

博客荒废了许久,今天发一个福利科普贴,开坑准备写一系列的分类器算法,以下正文。 一个简单的想法 很容易也很自然的会想到两个粗暴的解决方案: 1. 从用户头像筛,拿opencv做个筛子看看是不是美女头像 2. 从用户的发帖来筛,判断爆照贴里面的照片是不是美女 事实上可以看出来这两种方案都挺低效且吃力不讨好的,明显的缺点如下: 1. 往往只能判断是不是一张好脸,而判断是不是好腰好屁股好胸好腿好身材是很难的 2. 做图像分类/识别,在算法效率和准确率上仍然有瓶颈 3. 事实上使用美女/女明星照片做头像的人还是不少的 当然,用图像识别这种解决方法是很有用的,但不是这么用,至于怎么使用,以后讲。 做一点微小的改进 改进的方案是用发帖的评论内容和收藏夹名字做筛子,这么做的优点有: 1. 评论和收藏夹名字是人类看到帖子之后的反应输出,已经经过了一轮人工筛选 2. 不仅仅是好脸蛋,好腰好屁股好胸好腿什么的,都会得到反应 3. 可以更加细化的做分类,好腰,好腿都可以独立做筛子给分出来 4. 对某类文本分类相对来说计算量低了不少,准确率也得到了极大的提高 5. 使用找美女/女明星做头像的情况,除非是用户自己想欺骗社区,一般不会继续发对应头像的爆照贴 6. 不仅仅能应用于找美女这个case,还能用于找到各类其他的目标帖/目标用户,比如我还搞了高富帅土豪识别、寻找牛人的筛子、moha内容识别、政治左右筛子,对于其他类似的需求也都可以做,只需要看你脑洞多大咯 那么让我们先来看看一个美女爆照帖子下面正常的评论是怎么样的: “美翻了” “我只想说,真漂亮” “没有一年前那个好看啊” “这才是真漂亮” “我就看看不说话” “111 我觉得这个妹子面相很好” “好美~” “真的美” “应该是晈筷子练了苹果肌”

read more

  • 23rd Mar, 2016

Difference Engine – 差分机

硅谷有一个计算机历史博物馆,很喜欢那里。 那有一个被实现的差分机,看到一个真实的实现在那的时候真的好激动。 差分机,那么就来爽一把吧: 1.的差分: 2. 从开始说起 则我们有: ; ; ; 为了方便表示,我们把记作,把记作 于是可以很容易的知道,a是f(n)的最高次项的次数 3. 利用差分来计算 我们可以列一张表: 因为我们知道,所以最后一行全是常数。 当表中第一行写出来了,下面一行的数只需要根据差分的定义把它左右肩上的两数相减即可得到。 把代入,上面的表就是: 0, 1, 8, 27 1, 7, 19 6, 12 6 因为我们知道对于任何n,, 所以我们又可以把这个表填成: 0, 1, 8, 27 1, 7, 19 6, 12 6,

read more

  • 1st Nov, 2014

Individualized Sentiment Analysis

There are many characters in a novel, how to do sentiment analysis for each individual one of them? Is he/she feeling good in this chapter? Is this episode a good/bad scenario for someone? Bigger questions: Is this news good/bad for

read more

  • 4th Jul, 2014

Some Social Media Related Things

I spent some time in analyzing about 2 millions tweets post on weibo.com from May 21th to 31st, 2012. I don’t want to talk about the techniques in detail because that’s gonna take too long. If you have further interests, contact me or leave a message. Just for fun~ 1. Distributions of posts in a

read more

  • 30th Apr, 2013

遗传算法实现用透明多边形片拼凑图形

01

很早就看到过matrix67上面的一个帖子: 强大的遗传算法:用50个半透明多边形重现蒙娜丽莎http://www.matrix67.com/blog/archives/1113 当时一看那个帖子,立刻就被shocked了,跟边上的CX说,这他妈才是遗传算法; 前两天因为Dr. VPhan的课上要找个人讲讲遗传算法,当时我就说我去讲吧。 于是就把matrix67贴子上面的那个东西的源代码看了一下,发现这个代码并不是完全的遗传算法,而且效率不高,生成那个蒙娜丽莎需要3小时这样。 于是我就想着把它给改进下,变成纯粹的遗传算法,看看效率会不会更好。 修改之后,只需要一小时就能得到那个蒙娜丽莎满意效果。 于是,我就开始用这东西生成了一下这些图: 虽然这里只有50个半透明多边形,每个多边形最多只能有10条边,它们却能组成最漂亮的画。就像我们之间每分每秒在一起快乐的时光拼出来的心。 下面这个是原图: PS:最难的部分就是下面那四个字母,特别是那个L和那个o,因为颜色突变很大,而且有棱有角的。                                                         

read more

  • 11th Nov, 2010

数值积分

数值积分方法,对复化simpson和Romberg哪个更好的问题,我也不知道怎么比较Romberg更耗内存,但是它可以对精度控制的相当好…这个优点简直就是让我没有办法不选它…复化simpson相当的直接,就相当于把被积区间给分成n份,然后对每份都用simpson公式…如果是分成n份的话,就需要调用2n + 2次func…所以对算法的复杂度可以控制的很好…不过,浙大的算法库上用的是Romberg… //这只是一个函数的示例,使用时按照需求自行修改(增加系数个数,修改函数内容等等)double func(double x){ return log(x + cos(x));}//最简单的simpson积分,积分端点a, b//只是随便写写,基本没有什么很好的精度double Simpson(double a, double b){ return (b – a) * (func(a) + func(b) + 4 * func((a+b)/2)) / 6.0;}//复化simpson积分,积分端点a, b,以及你想把区间分成的份数n//这个在于积分区间不变或者变数不大的情况下特别好用//如果一定要用,则要随着积分区间的的增大,按比例调整n的大小double C_simpson(double a, double b, int n){ double h = (b

read more

  • 4th Jan, 2010

Newton插值法

Newton插值法的基函数非常的容易记: Nn(x) = A0 + A1(x – x0) + A2(x – x0)(x – x1) + … + An(x – x0)…(x – xn-1) 系数Ai也非常容易求,是一个递推的过程: A0 = [x0]f (x = x0处的零阶差商)A1 = [x0,x1]f (x = x0,x1处的一阶差商)A2 = [x0,x1,x2]f (x = x0,x1,x2处的二阶差商)…………………………An =

read more

  • 4th Jan, 2010

Lagrange插值法

把一些以前写的杂七杂八的东西给贴上来,准备维护一下这个blog 由于Lagrange插值法给出了一组非常好的基函数(即Lagrange插值基函数) 所以,我们可以不需要任何的计算(因为系数就是f(xi))就可以直接得出Lagrange插值的目标函数 给出C语言代码: //一共有n个已知点,数组x,y存放函数表格,aim为插值点//Pai,Tai分别表示li(x)的分子和分母的连乘积,用Slag存放计算结果double Lagrange(int n, double *x, double *y, double aim){ double Pai = 1, Slag = 0, Tai = 1; for(int i = 0; i < n; i++) Pai *= (aim – *(x + i)); for(int j

read more

  • 4th Jan, 2010