存档

2009年12月 的存档

Amazon用户评价体系研究

2009年12月25日 madongfly 没有评论

How opinions are received by online communities: A case study on Amazon.com helpfulness votes.
Cristian Danescu-Niculescu-Mizil and Gueorgi Kossinets and Jon Kleinberg and Lillian Lee.
Proceedings of WWW, pp. 141–150, 2009.

该文主要对评论的有用程度(helpfulness of reviews)进行了研究。

文章针对亚马逊网站上对评论是否有用的投票数据进行研究,在amazon网站上,对于某一评论(review),通常包含两条属性,一条是该评论自身对商品的评分,另一条是别的用户对该评论是否有用的评价,类似“32人中有26人认为它有用”这样的描述。

该文主要做了以下几件事:

  • 1.阐述了4种从社会学和心理学出发的对评论有用程度进行判定的假说。
  • 2.通过实验验证(证实或证伪)了这些理论。
  • 3.提出了一个简单的模型来解释实验数据呈现出的形式。
  • 4.在证伪其中一个理论的时候,巧妙的借用了对“内容剽窃”的研究内容,排除了属性干扰。

下面分别详细介绍:
阅读全文…

分类: Research 标签: ,

美好的旧日时光

2009年12月21日 madongfly 没有评论

最近看了本书,《观止——微软创建NT及未来的夺命狂奔》,看完有了点感触,随便写写……

第一次听说这本书就留下了很深的映像,源于它的书名——观止。之前只在《古文观止》和“叹为观止”中见到过这个词。当时很不理解,一本讲微软操作系统开发历程的书怎么会叫这么个名字。而它的副标题,也让我对它的映像大打折扣。

看了译者的序,才知道这是“showstoper”的翻译,showstoper在计算机行业特指软件产品中最为严重的一类bug,译者将其翻译为“观止”,从字面意思上倒是很呼应。

书是在一个星期五的早上送到的,快递员直接把我从被窝里叫醒,当天下午无所事事的时候开始看,而看完最后一页也正好是在上周五下午结束的时候,中间隔了两个星期。

拿到书的第一天一口气看了一半,书写的很吸引人,阅读快感极强,不知不觉间,已经对Dave Cutler崇拜无比了。之前大脑里对于天才程序员的映像一直是那种瘦瘦的,戴着眼镜,个字不高,显得很文弱的样子,直到《变形金刚》里的胖黑客才让这种映像减弱了一些,而现在,一个十足的硬汉形象也可以是天才的程序员了。
阅读全文…

分类: 散记 标签: ,

MapReduce入门程序WordCount增强版

2009年12月19日 madongfly 2 条评论

WordCount程序应该是学习MapReduce编程最经典的样例程序了,小小一段程序就基本概括了MapReduce编程模型的核心思想。

现在考虑实现一个增强版的WordCount程序,要求:

  • 提供大小写忽略的选项。
  • 在原始串中,过滤掉一些内容,例如要过滤hexie,那么单词hexieshehui就作为shehui统计。第一个很好实现,只需要在map函 数里判断一下要不要toLowerCase()即可。第二个也很好实现,将需要过滤的内容组合成一个长字符串,通过JobConf设置即可,但是如果需要 过滤的参数很多,多到需要从DFS上的文件里读取呢。显然,我们可以在map函数里直接读取DFS上的文件,但是这并不是最优的办法,Hadoop的官方 文档提供的WordCount2.0给了一个很好的办法。该代码还包括了其他一些很有用的技巧,让我们来好好分析一下吧。:)

阅读全文…

分类: 并行化 标签: ,

MapReduce笔记

2009年12月16日 madongfly 没有评论

1.reduce和map类似,每个task内部可以共享静态类属性,每个task可能会多次调用reduce()函数,但每个key只对应某节点上的某个task的reduce()函数的一次执行

2.多个tasks之间不能共享静态类属性,即使在同一台机器上,因为是以进程方式运行

3.一个key不可能被两个tasks拆分执行,不管是否在相同的节点上。

4. Hadoop Map/Reduce框架为每一个InputSplit产生一个map任务,而每个InputSplit是由该作业的InputFormat产生的。

5. Map的数目通常是由输入数据的大小决定的,一般就是所有输入文件的总块(block)数。如果你输入10TB的数据,每个块(block)的大小是 128MB,你将需要大约82,000个map来完成任务,除非使用 setNumMapTasks(int)(注意:这里仅仅是对框架进行了一个提示(hint),实际决定因素见4)将这个数值设置得更高。
阅读全文…

分类: 并行化 标签:

ASCII版的三维立体图片

2009年12月13日 madongfly 没有评论

小时候不少人都看过三维立体图片吧,记得要想第一次看出来还是很不容易的,我第一次看用了整整一个下午,不过一旦看出来之后,以后再看就容易的多了,后来的三维立体图基本都能在5秒之内看出来。

不过今天还是头一次看到ASCII版本的立体图,很惊艳,如下:

I  (`/`) I  (`/`) I  (`/`) I  (`/`) I  (`/`) I  (`/`)
OVE   / LOVE   / LOVE   / LOVE   / LOVE   / LOVE   / L
OU   /  YOU   /  YOU   /  YOU   /  YOU   /  YOU   /  Y
/`)  I (`/`)  I (`/`  I (`Y/`  I (`Y/`  I (`Y/`  I (`Y/
  / LOVE   / LOVE  / LOVE  / `LVE  / `LVE  /  `LVE  /
 /  YO U   /  YOU   /  YOU   /  YOU   /  YOU   /  Y`OU   /
 I (` /`) I (`/`) I (`/`) I (`/`) I(`/`)  I(`/ `)  I(`
LOVE   / LOVE  / LOVE  / LOVE  / LOV  /  LOV  /   LOV
YOU   /  YOU  /  YOU  /  YOU  /  YOU /   YOU /    YOU
/`)  I (`/`)  I(`/`)  I(`/`)  I(`/`)  I(`/`)  I(`/`)
 / LOVE   / LOVE  / LOVE  / LOVE  / LOVE  /  LOVE  /
    YOU /    YOU /   YOU /   YOU /   YOU /    YOU /
I  (`/`) I  (`/`) I (`/`) I (`/`) I (`/` ) I (`/` ) I
OVE   / LOVE   / LOVE  / LOVE  / LOVE  / LOVE  / LOV
OU  /   YOU  /   YOU  /  YOU  /  YOU   /  YOU   /  YOU
/`)  I (`/`)  I (`/`)  I (/`)  I (/ `)  I (/ `)  I (/
  / LOVE   / LOVE   / LOVE  / LOVE   / LOVE   / LOVE
 /  YO U   /  YO U   /  YO U   / YO  U   / YO  U   / YO  U
I  (`/`) I  (`/`) I (`/`)  I (`/`) I  (`/`) I  (`/`) I
OVE   / LOVE   / LOVE  /  LOVE  / LOVE   / LOVE   / LO
OU   /  YOU   /  YOU  /   YOU  /  YOU   /  YOU   /  YO
by 3Dimka by 3Dimka by 3Dimka by 3Dimka by 3Dimka by 3Dimka

你能看出来吗?
这幅图的内容是(冒号后面的字体设置成了白色,请选中之后看。鼓励先试试,再看答案,实在看不出来的可以先看看文章下面的内容,再回头来看):中间是一个大的桃心,桃心的下面是一个小桃心和一个悬浮的“I Love You”
阅读全文…

分类: 分享 标签: ,

Content Reuse Detection 文章内容复用检测

2009年12月9日 madongfly 没有评论

原文在此:Efficient Overlap and Content Reuse Detection in Blogs and Online News Articles

该文主要讲述了在博客和新闻的文章中如何进行内容复用的检测。作者提出了一种基于签名索引(Signature-Indexing)的算法qSign(Signature-Indexing for Incremental Reuse Detection)。

所谓signature files,是指在一个文件中,所包含的每一个word都通过hash映射到一个固定宽度的bit串,并且有相同数量的bit位为1,这个bit串就是这个word的signature。然后将所有这些word的signature通过位或操作全部按位或起来作为file的signature。

这样一来,检测一个查询的word是否和file匹配的话,就看这个word的signature和file的signature按位与之后会不会发生变化,如果不变,则匹配。显然,这样的识别会造成错误的匹配,即false positive,该文的目标之一就是在控制住误识率的情况下提高预测的召回率(recall)。
阅读全文…

分类: Research 标签: ,

Rethinking artificial intelligence MIT重新审视人工智能

2009年12月8日 madongfly 没有评论

众所周知,人工智能(artificial-intelligence)已经有了50多年的研究历史了,但是AI的发展远远没有它的奠基人们预料的那样快,AI先驱者们预言的一些将在20世纪出现的智能系统直到现在看来似乎还只是看得见,摸不着的……

而从另一个方面看,过去的几十年中,硬件技术的发展是极其迅速的,现在计算机的计算能力显然已经超过了先驱者们的预期,那为什么预言中的一些智能系统还是没有出现呢,图灵测试做了那么多年,也没有取得什么突破性的进展。

这里面固然有先驱者们的预言过于乐观的因素,但和这些年来AI的研究方向、方法也是不无关系的。

今天看到了MITnews上的这篇文章,很是振奋。

MIT集合5代研究人员投入到一项为期5年的工程:Mind Machine Project(MMP)。该项目的一位leader Neil Gershenfeld 直言他们的目标就是制造出“智能机器(intelligent machines)”。

该项目宣称的五代研究人员中,既有AI的奠基人之一,大名鼎鼎的Marvin Minsky;也有MIT最年轻的学生,14岁就上研究生的David Dalrymple;还有Schmidt-Nielsen 这样没进过学校的天才(他没有上过一门计算机相关课程,却在15岁就领导团队开发软件)。
阅读全文…

分类: Research 标签: ,

toread+gmail 做你的网络资料库

2009年12月4日 madongfly 没有评论

经常在网上查资料的同学应该都有这样的感受,在一个网页上查到自己想要的信息之后,如何保存这个网页呢,我曾经试过很多办法,手工复制或者直接保存网页到本地,保存书签等等,但是一旦保存的网页多了,再想查找以前的资料就变得比较困难了。

当时我就想过,要是能把网页直接发到我的gmail里多好,查找的时候直接使用gmail的邮件搜索。早些时候貌似google工具栏里有这么一项功能,但我试用过几次,都没成功。

今天发现了toread.cc这个网站,这是一个基于邮箱的稍后阅读服务,通过它,你可以使用书签一键将网页发送到指定的邮箱中。

ToRead.cc的使用很简单,在首页输入你想要发送的邮箱地址,然后你会收到一封激活邮件,点击邮件中的激活链接,会有一个[toread]的链接,IE用户直接把该链接拖到导航栏,firefox用户拖到书签工具栏(如果你像我一样没有开启书签工具栏,就拖拽到菜单的书签里)即可。

之后当你浏览到想要保存的网页时,点击该书签,即将网页的完整的html页面发送到指定邮箱了,而且这个html页面是作为邮件内容而不是附件,所以可以完美支持gmail的搜索功能。

和Gmail搭配使用还有一个好处就是,可以利用Gmail的过滤功能,建立一个过滤器,将从info@toread.cc发来的邮件直接归档到某一个标签(比如说ToRead)下,并且跳过收件箱,这样发送的邮件就不会出现在收件箱中,使你的邮箱保持整洁。

分类: 分享 标签: ,

主动学习与半监督学习Active-learning and Semi-supervised learning

2009年12月3日 madongfly 2 条评论

在机器学习(Machine learning)领域,监督学习(Supervised learning)、非监督学习(Unsupervised learning)以及半监督学习(Semi-supervised learning)是三类研究比较多,应用比较广的学习技术,wiki上对这三种学习的简单描述如下:

  • 监督学习:通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,将输入映射到合适的输出,例如分类。
  • 非监督学习:直接对输入数据集进行建模,例如聚类。
  • 半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数。

    以上表述是我直接翻译过来的,因为都是一句话,所以说得不是很清楚,下面我用一个例子来具体解释一下。

    其实很多机器学习都是在解决类别归属的问题,即给定一些数据,判断每条数据属于哪些类,或者和其他哪些数据属于同一类等等。这样,如果我们上来就对这一堆数据进行某种划分(聚类),通过数据内在的一些属性和联系,将数据自动整理为某几类,这就属于非监督学习。如果我们一开始就知道了这些数据包含的类别,并且有一部分数据(训练数据)已经标上了类标,我们通过对这些已经标好类标的数据进行归纳总结,得出一个 “数据–>类别” 的映射函数,来对剩余的数据进行分类,这就属于监督学习。而半监督学习指的是在训练数据十分稀少的情况下,通过利用一些没有类标的数据,提高学习准确率的方法。

    铺垫了那么多,其实我想说的是,在wiki上对于半监督学习的解释是有一点点歧义的,这跟下面要介绍的主动学习有关。
    阅读全文…

  • 分类: Research 标签: ,

    log-log Graph 双对数曲线图

    2009年12月1日 madongfly 没有评论

    阅读论文的时候,经常会见到 log-log Graph,也就是双对数曲线图。

    所谓双对数曲线图,就是图的两个坐标轴的刻度均为对数刻度,这样一来的话,形如y=ax^b的指数曲线,在双对数曲线图中就表现为一条直线,b就是这条直线的斜率(这里的斜率并不是按数轴上的刻度值计算的,而是将坐标轴看成普通坐标轴,按坐标轴的单位长度计算的)。

    可以这样来理解,将y=ax^b两边都取对数,得到:ln(y) = ln(a) + bln(x),令y’ = ln(y), x’ = ln(x), 那么在对数曲线图中,得到的就是一条y’ = a’ + bx’ 的直线,数轴的长度单位用的就是y’ 和x’ 的单位,但是“对数曲线图”的“对数”指的是刻度取对数,所以数轴上的值标的还是x和y的值,所以相邻长度单位上标的数值随数轴的延伸相差越大,也就是说 x’ 每次增加1,但是x 增加的幅度却是按x’ = ln(x)越来越大的。

    wiki上给了这样一个图来做例子:
    阅读全文…

    分类: Research 标签: