丁宇 | DING Yu

TinyTui2:带有降噪功能的Twitter客户端

去年春天的时候我写过一篇名为“一个更好的Twitter客户端”的文章,里面提到了使用贝叶斯算法来对tweets的内容进行过滤,把自己不喜欢的内容删除掉,这样可以解决信息过载的问题。

庄表伟对这个事情也很感兴趣。他本来写了一个名为TinyTui的Twitter客户端的,于是我们经过简单的讨论,决定就在TinyTui的基础上,融入降噪的功能,并将这个客户端命名为TinyTui2,简称TT2。

系统需求

TT2使用PHP+MySQL编写,使用了CURL库,服务器只要支持这3个条件就能用。

降噪算法

这是TT2的重头,目前主要从三方面入手:

  1. 内容过滤。按照内容对tweets进行过滤,使用贝叶斯算法

  2. 行为过滤。按照行为规则过滤,比如过滤掉我深恶痛绝的“用RT聊天”的行为。目前没有想好用什么算法,@tinyfool和@virushuo推荐了“隐马尔可夫模型(Hidden Markov model)”“协同过滤(Collaborative filtering)”,不过这两个坑都太深了,庄老师和我都还只是站在坑边上往下看了看,没敢跳。此外,我觉得算法可以有很多种,但每种算法要单独写到一个过滤器里面,然后用户加载不同的过滤器满足自己的需求(类似LT的VisitorSense);

  3. 好友过滤。简单地说,就是给每个你follow的人以不同的权重。

这三个方面经过计算后分别得到一个0到1之间的值,然后按照某种公式把这三个值汇总,得到一个总分,最后比较这个总分和事先设定好的阙值,就可以决定某条tweet是否应该显示或者被过滤掉。

其它功能

除了降噪以外,TT2还集成了一些其它的特色功能,比如它内建了一个简单的网页代理,可以让你直接查看那些被墙的网页(典型如短网址)。

项目地址

项目托管在Google Code上:http://code.google.com/p/tinytui2/。要注意的是,提供下载的0.1-0.4版是我参与之前的版本,没有降噪功能,最新的代码请从SVN中获取。

代码完全是“quick and dirty”风格的,我们都是实用派。


  1. ooof @ 2010-03-03 16:08:35 +0800:

    必须自己安装才能使用?是否有一个演示的页码?

  2. 丁宇 @ 2010-03-03 18:07:46 +0800:

    @ooof 任何twitter地址只要传播开来,结果都是被墙,所以不行。

  3. bing @ 2010-03-03 18:32:42 +0800:

    有没有如何用之类的说明,下下来了,不知道如何用!

  4. 丁宇 @ 2010-03-03 18:42:03 +0800:

    @bing 1)从svn checkout出代码;2)按照你的用户名,修改一下tinytui2.sql;3)上传到服务器上;4)设置b8-0.4.4/etc/config_storage中mysql的主机、用户名和密码;5)把tinytui2.sql导入到数据库中;6)设置tweets_cache的属性为777;7)给b8-0.4.4这个目录用.htaccess加个密。

    现在还是挺麻烦的,慢慢改。

  5. kuber @ 2010-03-04 23:33:05 +0800:

    中文分词怎么搞定的?

  6. 丁宇 @ 2010-03-04 23:42:54 +0800:

    @kuber 中文分字。见 http://dingyu.me/blog/posts/view/spam-bayesian-chinese-5

  7. crcw @ 2010-03-13 22:50:30 +0800:

    7)给b8-0.4.4这个目录用.htaccess加个密
    这一步不懂

  8. 丁宇 @ 2010-03-14 04:46:51 +0800:

    @crcw 从3月5日提交的r19版本开始,就不再需要第七步了。强烈建议从SVN更新至新版本(目前为r26)。
    我抽空写个安装程序。

  9. ahu @ 2011-01-16 00:01:33 +0800:

    这一抽空就快一年过去了...

    而且我建议将你的这个版本打个包出一个下载吧

  10. 丁宇 @ 2011-01-24 05:27:52 +0800:

    @ahu 哈,由于Twitter安全策略更改,tinytui2应该不能用了。