2005年10月30日星期日

基于发送者的贝叶斯~

现在在这个荒岛上,好像大家很习惯一种发布Announcement和Ads的方法,就是群传群??通常一个人参加了近十个Q群甚至近二十个Q群,如果他在一个群看到一个Announcement或者Ads,并且他觉得这个Announcement应该转告给其他人或者他觉得这个Ads的发起人值得他帮忙,那么他就会把信息贴到其他所有群。这种方法不能说"有效",因为你永远不知道信息传到多远了,有多少人接受了,但是他在信息流的控制方面看起来也有一定的根据??你觉得值得你转发的东西你就转发吧,而这又影响着你的信誉度,因为如果你转发垃圾太多别人就干脆把这个群屏蔽掉了。

现在我想干脆就做一个基于这个原理和SNS的通讯系统,只支持近邻的发送而不支持DirectMail。其实我很早就觉得Orkut应该禁止DirectMessage,因为我收到的Spam实在太多了,过了一段时间才得到改善。后来看到Linkist有这项功能(你可以设置不接收DirectMessage仅接受来自好友后通过好友传递的Message),觉得这样东西确实值得做。

好了,到说主题了,我想做的这个东西就是基于发送者和传递者的贝叶斯信息过滤系统,允许发送的信息有两种??点对点和广播,这样设计有点类似TCP和UDP。无论是哪一种,信息都只能通过好友传好友,虽然这个过程是全自动的,但是你也可以要求启动过滤。全自动的意思是,如果你的两个好友是陌生人,他们通过你传递信息,你就好像网关一样,你可以选择不阅读这些信息就让他们自动转发;而允许过滤的意思是,作为网关,你其实也有权查看流经你的信息,即使加密了你还是可以大概看出信息类型(或者你干脆不允许加密信息经过),你有权自动(基于规则或基于贝叶斯)或手动的过滤掉一些信息。

情景1:A知道陈扬星期天来东校区做讲座,于是希望身边的好友都知道,于是他用广播模式发送了这条信息。B是A的直接好友,接受到了这条信息,觉得确实应该让大家都知道这条消息,于是点击了消息阅读框下面的"自动转发"按钮,于是B的好友也看到了这条消息,同时基于贝叶斯的统计,B对A发送的信息的信任度增加了。然而很不幸,B的好友C对这些活动毫无兴趣,觉得B整天发这些东西给他很烦,于是他点击了消息对话框下面的"垃圾"按钮,这个按钮拥有"关闭"按钮更多的更能??C对B的信任度下降了,同时C把这条消息的MessageID自动转发给他的好友并告知为Spam,这个Spam提示对于越是信任C的好友效果越明显甚至还会自动转发给下一级好友。

过了一段时间,这个消息又传回到B那里了,不过由于MessageID相同,B的客户端没有提示有新消息更加不会自动转发此条消息,而仅仅是在这则消息上面增加了Hit的数值。

情景2:K下载了这个软件,想用来群发广告——通过P2P的方式发送广告确实是个不错的主意。K加了一些好友,然后开始发送广告,开头他的这些好友还是愿意帮他转发的,不过很快发现他们的好友开始不怎么理睬他们(因为Spam多信任度降低更多的信息被过滤),他们也不再愿意帮K转发广告了,主动把K发过来的广告当作Spam来统计,结果K变成了信息孤岛,他说的话不再有人信了。(这里是基于大家都只加现实中认识的人这一原则。如果是网友的话,先通过中间人的自动转发功能联系一段时间,然后再加为好友。)

主动发送或者转发广告的人都是不受欢迎的,而且这个不需要大家开口来声讨,我们的系统知道如何去处理。

情景3:Z最近认识了好友Y的好友X。可惜Y经常不上线,他们要经过Y进行消息转发的这条Route的Ping值太高了。幸好Z和X之间还有另外一条Route,虽然中间隔着的人比较多,但是Ping值低,他们两个觉得发送的信息又不是什么大秘密,于是选择了走这条虽然可能有几个比较陌生的人,但是Ping值低的Route,很快他们就都主动把对方加为自己的好友了,于是就能够直接通信了。

没有评论:

发表评论