-
2008-09-21
TextMatrixv1.1发布
TextMatrix
http://code.google.com/p/textmatrix/
TextMatrix是基于标准C++开发的一个跨平台(Windows,Linux)的用于文本分类或挖掘的开源项目。最早开始于2006年底,是我在学习C++的过程中逐渐开发的。
可以同时处理中英文文本(目前支持的中文文本编码格式是GB2312,GBK),具有中文分词,英文Stemming,停用词滤除,抽取基于字或词的Ngram特征,生成基于SuffixTree的KeySub... -
2006-07-05
我爱ubuntu
我爱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 上的 新手入门指引 提供了大量的帮助, 请一定要仔细看,并照做,相信你一定会很快上手的.
-
2006-06-01
几个有趣的站点
-
2006-06-01
<自然语言理解 第二版>中的隐含错误
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)都是如此.
希望大家有时间写程序验证一下.
-
2006-06-01
一个疑问句的解析实例.
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!







