• TextMatrix
    http://code.google.com/p/textmatrix/
    TextMatrix是基于标准C++开发的一个跨平台(Windows,Linux)的用于文本分类或挖掘的开源项目。最早开始于2006年底,是我在学习C++的过程中逐渐开发的。
    可以同时处理中英文文本(目前支持的中文文本编码格式是GB2312,GBK),具有中文分词,英文Stemming,停用词滤除,抽取基于字或词的Ngram特征,生成基于SuffixTree的KeySub...

  • 我爱ubuntu

    skyhorse
    2006-7-5

    原来都没有听说过ubuntu, 也没有用过, 前2天因为想装一个oracle10G玩玩,本想装redhat advance server的,因为刻的盘有些问题,改装ubuntu 6.06 desktop版, 这才发现ubuntu 的好处, 感觉很开心.

    比方说我要装eclipse, 只需一个命令: apt-get install eclipse 网络环境好的话,几分钟之内就在你的桌面的编程菜单中出现 eclipse 了. 你什么也不需要作,鼠标都不用点.如果不愿意敲命令,也有界面可以用.

    2天时间内, 装了一堆软件, 这在以前是我不能想象的, 原来总是configure, make, make install, 且还总是少这个包,少那个包的,还不一定成功.

    我装了 Oracle 10G ,以及附加的第二张盘的软件(一个包括Ultra Search的冬冬), 安装过程第一张盘没有遇到 link之类的任何错误, 第二张有几个小错误.
    当然了,你需要先google 几个oracle 10g的安装文档照着做就行了. 另外dbstart 内部已经启动listener了,所以无需在自启动的脚本中添加启动listener的命令了,还发现了oracle10g的脚本的bug, 呵呵.

    还有下面的:
    mediawiki(大名鼎鼎的wiki软件), phpmyadmin(mysql管理必备), cvs ,cvsd(一个安全运行cvs pserver的wrapper), apache2, mysql, Mambo(类似xoops的内容发布系统,但是更漂亮), tomcat 总之就是网站的那一套东西.


    防火墙(firestarter) 强烈推荐这个, 在界面上简单加几个规则, 你再在终端中 sud iptables -L 一看,简直帅呆了. 作者肯定把iptables 这套东西搞得滚瓜烂熟.  这个可比windowsxp下的自带防火墙功能强大多了, 主要是因为如果你熟悉iptables的话,可以自己写策略执行就可以了, 比方说结合squid作个透明代理, 或者起2个dns,再作一下根据ip来源进行不同端口映射,作个动态的dns. 如果不熟悉的话,就把它当作window下自带的防火墙来用.
    我就简单地通过界面加上了 保留 http 的端口,  对 ssh 则加上了网段的限制, 很快也很方便.(如果不会计算子网掩码就自己google一下subnet netmask之类的:) )

    还有vnc,连接windows的终端软件, 光盘刻录, 媒体播放(mplayer之类), freemind(一个绘制思维导图软件,java的,也有windows版),其他一些桌面的软件就不用说了, 系统安装时自带的.

    顺便说下, 因为firefox 的linux版不带导入ie的功能, 所以我在windows版的firefox中导出ie的收藏夹, 它存成了一个html文件,然后在linux 下用书签管理导入这个文件就可以了.太帅了.

    系统启动时默认就是能够挂载windows分区的, 桌面也非常漂亮, 我用右键把菜单中的常用的几项加到了panel上, 如终端,文件管理器. 屏保也非常炫,比windows的那种中规中矩的好看多了.

    同时也有很多有趣的游戏.


    总结了一下ubuntu 的优点:
    软件包的维护和依赖关系的计算非常好, 大大方便了软件的安装, 知道软件名字直接下载就行了, 连菜单的类别都创建好了.
    有一个巨大的维护的软件库. 你可以选择离你最近的站点.( 我用的是 mirror.net9.org )
    通过默认的 sudo 来保证了系统的安全. ( 如果有人奇怪安装后root密码是什么,可以参加wikt.ubuntu.org.cn上的常见问答)


    界面比较容易上手,也很方便. 一般的用户往往都是装了一个linux,发现不好用,就放弃了, 我相信随着ubuntu的发行,这个情况应该逐渐会有所改观.
    本来电脑的目的就是为了更方便快捷地帮助人们解决各自的问题的, 可用性增强了,自然会吸引大批用户.

    不过我也遇到点小问题, 自动装bugzilla的时候, 创建mysql的数据库表时出错, 看来,需要自己来安装配置了.


    顺便说一下我的这台电脑是在实验室同时用来给自己提供服务,开发和做桌面用的.
    你也可以选择安装不带gui的server版.


    从 apt-get , sudo 都不知道是什么命令,到安装配置我的电脑的各类软件,我只用了2,3天时间, 多亏了 ubuntu, google和那些写文章的linuxer们.
    所以写了这么一篇宣传一下:), 希望更多的人使用. 这也符合ubuntu的共享精神.
    使用ubuntu即享受桌面的乐趣,又享受自己diy的乐趣, 更重要的是它是开源和免费的.

    btw: 用google trends 搜一下, ubuntu 也是一直处于上升的趋势.


    wiki.ubuntu.org.cn 上的 新手入门指引  提供了大量的帮助, 请一定要仔细看,并照做,相信你一定会很快上手的.


  • http://www.textmap.com/

    http://www.opinmin.com/

    http://www.wefeelfine.org/

  • Natural Language Understanding, Second Edition
    P132 (原版)
    section 5.3  处理所有一般疑问句(Yes/no Question)的语法

    S[+inv]->(AUX AGR ?a SUBCAT ?v)(NP AGR ?a)(VP VFORM ?v)
    应该改为:
    S[+inv]->(AUX AGR ?a COMPFORM ?v)(NP AGR ?a)(VP VFORM ?v)

    这是我在写程序,试验那些语法规则时发现的.

    原版和翻译版本(p107)都是如此.

    希望大家有时间写程序验证一下.

  •  can  he  see  the  dog  ?

    尽管去掉了多余的垃圾边,还是有这么多,呵呵.果然是一件麻烦的事情.

    1 can 2
    ACTIVE_ARCS:
    (S INV:- VFORM:? pres past AGR:?) --> o (NP AGR:?) (VP VFORM:? pres past AGR:?) (1,1)
    (NP AGR:?) --> o (PRO AGR:?WH:?) (1,1)
    (NP AGR:?) --> o (ART AGR:?) (N AGR:?) (1,1)
    (NP AGR:?) --> o (NAME AGR:?) (1,1)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (1,1)
    (DET AGR:?WH:?) --> o (QDET WH:?) (1,1)
    (S INV:+ VFORM:?AGR:?WH:?GAP:?) --> o (AUX AGR:1s 2s 3s 1p 2p 3p COMPFORM:base ) (NP AGR:1s 2s 3s 1p 2p 3p WH:?GAP:(- ) ) (VP VFORM:base AGR:1s 2s 3s 1p 2p 3p GAP:?) (1,1)
    (S VFORM:?AGR:?) --> o (NP AGR:?WH:Q GAP:(- ) ) (S INV:+ VFORM:?AGR:?GAP:(NP ) ) (1,1)
    (NP AGR:?) --> o (PRO AGR:?WH:?) (1,1)
    (NP AGR:?) --> o (ART AGR:?) (N AGR:?) (1,1)
    (NP AGR:?) --> o (NAME AGR:?) (1,1)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (1,1)
    (DET AGR:?WH:?) --> o (QDET WH:?) (1,1)
    (S INV:+ VFORM:pres AGR:1s 2s 3s 1p 2p 3p WH:?GAP:?) --> (AUX AGR:1s 2s 3s 1p 2p 3p COMPFORM:base ) o (NP AGR:1s 2s 3s 1p 2p 3p WH:?GAP:(- ) ) (VP VFORM:base AGR:1s 2s 3s 1p 2p 3p GAP:?) (1,2)
    (NP AGR:?) --> o (PRO AGR:?WH:?) (2,2)
    (NP AGR:?) --> o (ART AGR:?) (N AGR:?) (2,2)
    (NP AGR:?) --> o (NAME AGR:?) (2,2)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (2,2)
    (CNP ) --> o (N AGR:?) (2,2)

    CONSTITUENTS:
    (AUX VFORM:pres AGR:1s 2s 3s 1p 2p 3p COMPFORM:base )(1,2)

    AGGENDA:

    1 can 2 he 3
    ACTIVE_ARCS:
    (S INV:- VFORM:? pres past AGR:?) --> o (NP AGR:?) (VP VFORM:? pres past AGR:?) (1,1)
    (NP AGR:?) --> o (ART AGR:?) (N AGR:?) (1,1)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (1,1)
    (S INV:+ VFORM:?AGR:?WH:?GAP:?) --> o (AUX AGR:3s COMPFORM:base ) (NP AGR:3s WH:?GAP:(- ) ) (VP VFORM:base AGR:3s GAP:?) (1,1)
    (S VFORM:?AGR:?) --> o (NP AGR:?WH:Q GAP:(- ) ) (S INV:+ VFORM:?AGR:?GAP:(NP ) ) (1,1)
    (NP AGR:?) --> o (ART AGR:?) (N AGR:?) (1,1)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (1,1)
    (S INV:+ VFORM:pres AGR:1s 2s 3s 1p 2p 3p WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) o (NP AGR:3s WH:?GAP:(- ) ) (VP VFORM:base AGR:3s GAP:?) (1,2)
    (NP AGR:?) --> o (PRO AGR:3s WH:?) (2,2)
    (NP AGR:?) --> o (ART AGR:?) (N AGR:?) (2,2)
    (NP AGR:?) --> o (NAME AGR:?) (2,2)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (2,2)
    (CNP ) --> o (N AGR:?) (2,2)
    (S INV:+ VFORM:pres AGR:3s WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) (NP AGR:3s WH:?GAP:(- ) ) o (VP VFORM:base AGR:3s GAP:?) (1,3)
    (VP VFORM:?AGR:?) --> o (V VFORM:?AGR:?SUBCAT:_none ) (3,3)
    (VP VFORM:?AGR:?) --> o (V VFORM:?AGR:?SUBCAT:_vp:inf ) (VP VFORM:inf ) (3,3)
    (VP VFORM:?AGR:?) --> o (AUX COMPFORM:?) (VP VFORM:?AGR:?) (3,3)
    (VP VFORM:?AGR:?PASSGAP:- ) --> o (V SUBCAT:_np ) (NP AGR:?) (3,3)
    (VP VFORM:?AGR:?PASS:+ ) --> o (AUX :be ) (VP VFORM:pastprt PASSGAP:+ ) (3,3)
    (VP VFORM:?AGR:?PASSGAP:+ ) --> o (V SUBCAT:_np ) (3,3)
    (VP VFORM:?AGR:?GAP:?) --> o (V SUBCAT:_np ) (NP AGR:?GAP:?) (3,3)

    CONSTITUENTS:
    (AUX VFORM:pres AGR:1s 2s 3s 1p 2p 3p COMPFORM:base )(1,2)
    (PRO AGR:3s )(2,3)
    (NP AGR:3s ) --> (PRO AGR:3s WH:?) o (2,3)

    AGGENDA:

    1 can 2 he 3 see 4
    ACTIVE_ARCS:
    (S INV:- VFORM:? pres past AGR:?) --> o (NP AGR:?) (VP VFORM:? pres past AGR:?) (1,1)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (1,1)
    (S VFORM:?AGR:?) --> o (NP AGR:?WH:Q GAP:(- ) ) (S INV:+ VFORM:?AGR:?GAP:(NP ) ) (1,1)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (1,1)
    (S INV:+ VFORM:pres AGR:1s 2s 3s 1p 2p 3p WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) o (NP AGR:3s WH:?GAP:(- ) ) (VP VFORM:base AGR:3s GAP:?) (1,2)
    (NP AGR:?) --> o (ART AGR:?) (N AGR:?) (2,2)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (2,2)
    (S INV:+ VFORM:pres AGR:3s WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) (NP AGR:3s WH:?GAP:(- ) ) o (VP VFORM:base AGR:3s GAP:?) (1,3)
    (VP VFORM:?AGR:?) --> o (V VFORM:?AGR:?SUBCAT:_none ) (3,3)
    (VP VFORM:?AGR:?) --> o (V VFORM:?AGR:?SUBCAT:_vp:inf ) (VP VFORM:inf ) (3,3)
    (VP VFORM:?AGR:?) --> o (AUX COMPFORM:?) (VP VFORM:?AGR:?) (3,3)
    (VP VFORM:?AGR:?PASSGAP:- ) --> o (V SUBCAT:_np ) (NP AGR:?) (3,3)
    (VP VFORM:?AGR:?PASS:+ ) --> o (AUX :be ) (VP VFORM:pastprt PASSGAP:+ ) (3,3)
    (VP VFORM:?AGR:?PASSGAP:+ ) --> o (V SUBCAT:_np ) (3,3)
    (VP VFORM:?AGR:?GAP:?) --> o (V SUBCAT:_np ) (NP AGR:?GAP:?) (3,3)
    (VP VFORM:base AGR:?PASSGAP:- ) --> (V SUBCAT:_np ) o (NP AGR:?) (3,4)
    (NP AGR:?) --> o (PRO AGR:3s WH:?) (4,4)
    (NP AGR:?) --> o (ART AGR:?) (N AGR:?) (4,4)
    (NP AGR:?) --> o (NAME AGR:?) (4,4)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (4,4)
    (CNP ) --> o (N AGR:?) (4,4)
    (VP VFORM:base AGR:?GAP:?) --> (V SUBCAT:_np ) o (NP AGR:?GAP:?) (3,4)
    (NP AGR:?) --> o (PRO AGR:3s WH:?) (4,4)
    (NP AGR:?) --> o (ART AGR:?) (N AGR:?) (4,4)
    (NP AGR:?) --> o (NAME AGR:?) (4,4)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (4,4)
    (CNP ) --> o (N AGR:?) (4,4)

    CONSTITUENTS:
    (AUX VFORM:pres AGR:1s 2s 3s 1p 2p 3p COMPFORM:base )(1,2)
    (PRO AGR:3s )(2,3)
    (NP AGR:3s ) --> (PRO AGR:3s WH:?) o (2,3)
    (V VFORM:base SUBCAT:_np )(3,4)
    (VP VFORM:base AGR:?PASSGAP:+ ) --> (V SUBCAT:_np ) o (3,4)
    (S INV:+ VFORM:pres AGR:3s WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) (NP AGR:3s WH:?GAP:(- ) ) (VP VFORM:base AGR:3s GAP:?) o (1,4)

    AGGENDA:

    1 can 2 he 3 see 4 the 5
    ACTIVE_ARCS:
    (S INV:- VFORM:? pres past AGR:?) --> o (NP AGR:?) (VP VFORM:? pres past AGR:?) (1,1)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (1,1)
    (S VFORM:?AGR:?) --> o (NP AGR:?WH:Q GAP:(- ) ) (S INV:+ VFORM:?AGR:?GAP:(NP ) ) (1,1)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (1,1)
    (S INV:+ VFORM:pres AGR:1s 2s 3s 1p 2p 3p WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) o (NP AGR:3s WH:?GAP:(- ) ) (VP VFORM:base AGR:3s GAP:?) (1,2)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (2,2)
    (S INV:+ VFORM:pres AGR:3s WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) (NP AGR:3s WH:?GAP:(- ) ) o (VP VFORM:base AGR:3s GAP:?) (1,3)
    (VP VFORM:?AGR:?) --> o (V VFORM:?AGR:?SUBCAT:_vp:inf ) (VP VFORM:inf ) (3,3)
    (VP VFORM:?AGR:?PASSGAP:- ) --> o (V SUBCAT:_np ) (NP AGR:?) (3,3)
    (VP VFORM:?AGR:?PASSGAP:+ ) --> o (V SUBCAT:_np ) (3,3)
    (VP VFORM:base AGR:?PASSGAP:- ) --> (V SUBCAT:_np ) o (NP AGR:?) (3,4)
    (NP AGR:?) --> o (PRO AGR:3s WH:?) (4,4)
    (NP AGR:?) --> o (ART AGR:3s 3p 3p 3s ) (N AGR:3s 3p 3p 3s ) (4,4)
    (NP AGR:?) --> o (NAME AGR:?) (4,4)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (4,4)
    (CNP ) --> o (N AGR:?) (4,4)
    (VP VFORM:base AGR:?GAP:?) --> (V SUBCAT:_np ) o (NP AGR:?GAP:?) (3,4)
    (NP AGR:?) --> o (PRO AGR:3s WH:?) (4,4)
    (NP AGR:?) --> o (ART AGR:3s 3p 3p 3s ) (N AGR:3s 3p 3p 3s ) (4,4)
    (NP AGR:?) --> o (NAME AGR:?) (4,4)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (4,4)
    (CNP ) --> o (N AGR:?) (4,4)
    (NP AGR:3s 3p ) --> (ART AGR:3s 3p 3p 3s ) o (N AGR:3s 3p 3p 3s ) (4,5)
    (NP AGR:3s 3p ) --> (ART AGR:3s 3p 3p 3s ) o (N AGR:3s 3p 3p 3s ) (4,5)

    CONSTITUENTS:
    (AUX VFORM:pres AGR:1s 2s 3s 1p 2p 3p COMPFORM:base )(1,2)
    (PRO AGR:3s )(2,3)
    (NP AGR:3s ) --> (PRO AGR:3s WH:?) o (2,3)
    (V VFORM:base SUBCAT:_np )(3,4)
    (VP VFORM:base AGR:?PASSGAP:+ ) --> (V SUBCAT:_np ) o (3,4)
    (S INV:+ VFORM:pres AGR:3s WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) (NP AGR:3s WH:?GAP:(- ) ) (VP VFORM:base AGR:3s GAP:?) o (1,4)
    (ART AGR:3s 3p )(4,5)

    AGGENDA:

    1 can 2 he 3 see 4 the 5 dog 6
    ACTIVE_ARCS:
    (S INV:- VFORM:? pres past AGR:?) --> o (NP AGR:?) (VP VFORM:? pres past AGR:?) (1,1)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (1,1)
    (S VFORM:?AGR:?) --> o (NP AGR:?WH:Q GAP:(- ) ) (S INV:+ VFORM:?AGR:?GAP:(NP ) ) (1,1)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (1,1)
    (S INV:+ VFORM:pres AGR:1s 2s 3s 1p 2p 3p WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) o (NP AGR:3s WH:?GAP:(- ) ) (VP VFORM:base AGR:3s GAP:?) (1,2)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (2,2)
    (S INV:+ VFORM:pres AGR:3s WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) (NP AGR:3s WH:?GAP:(- ) ) o (VP VFORM:base AGR:3s GAP:?) (1,3)
    (VP VFORM:?AGR:?PASSGAP:- ) --> o (V SUBCAT:_np ) (NP AGR:3s ) (3,3)
    (VP VFORM:base AGR:?PASSGAP:- ) --> (V SUBCAT:_np ) o (NP AGR:3s ) (3,4)
    (NP AGR:?) --> o (ART AGR:3s ) (N AGR:3s ) (4,4)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (4,4)
    (VP VFORM:base AGR:?GAP:?) --> (V SUBCAT:_np ) o (NP AGR:3s GAP:?) (3,4)
    (NP AGR:?) --> o (ART AGR:3s ) (N AGR:3s ) (4,4)
    (NP AGR:?WH:?) --> o (DET AGR:?WH:?) (CNP AGR:?) (4,4)
    (NP AGR:3s 3p ) --> (ART AGR:3s ) o (N AGR:3s ) (4,5)
    (NP AGR:3s 3p ) --> (ART AGR:3s ) o (N AGR:3s ) (4,5)

    CONSTITUENTS:
    (AUX VFORM:pres AGR:1s 2s 3s 1p 2p 3p COMPFORM:base )(1,2)
    (PRO AGR:3s )(2,3)
    (NP AGR:3s ) --> (PRO AGR:3s WH:?) o (2,3)
    (V VFORM:base SUBCAT:_np )(3,4)
    (VP VFORM:base AGR:?PASSGAP:+ ) --> (V SUBCAT:_np ) o (3,4)
    (S INV:+ VFORM:pres AGR:3s WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) (NP AGR:3s WH:?GAP:(- ) ) (VP VFORM:base AGR:3s GAP:?) o (1,4)
    (ART AGR:3s 3p )(4,5)
    (N AGR:3s )(5,6)
    (NP AGR:3s ) --> (ART AGR:3s ) (N AGR:3s ) o (4,6)
    (VP VFORM:base AGR:3s GAP:?) --> (V SUBCAT:_np ) (NP AGR:3s GAP:?) o (3,6)

    AGGENDA:(S INV:+ VFORM:pres AGR:3s WH:?GAP:?) --> (AUX AGR:3s COMPFORM:base ) (NP AGR:3s WH:?GAP:(- ) ) (VP VFORM:base AGR:3s GAP:?) o (1,6) (VP VFORM:base AGR:3s PASSGAP:- ) --> (V SUBCAT:_np ) (NP AGR:3s ) o (3,6) (NP AGR:3s ) --> (ART AGR:3s ) (N AGR:3s ) o (4,6)

    Parsed OK!