2008年11月24日星期一

Java中常用的代码

对Java很菜鸟, 收录一些java中经常需要使用的代码

1). JAVA操作文本文件
public class TestFile2
{
public static void main(String[] args) throws IOException
{
 
 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
 String data = null;
 while((data = br.readLine())!=null)
 {
 System.out.println(data); 
 }
 
 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
 osw.write(s,0,s.length());
 osw.flush();
 
 PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
 pw.println(s);
 
 br.close();
 osw.close();
 pw.close();
}

2008年11月10日星期一

Berkeley Parser的使用

Berkeley Parser的使用
Berkeley Parser可以从http://code.google.com/p/berkeleyparser/下载。下载后,在eclipse下运行其代码,发现实验得到的parsing性能比其文章中的要略低,大概低于1%多点。以下是实验过程:

一、训练模型
1). 解压Berkeley Parser提供的jar包后,将源代码添加到eclipse或jbuilder中,会发现编译不通过,需要将edu.berkeley.nlp.PCFGLA.HierarchicalFullyConnectedAdaptiveLexiconWithFeatures.java的第9行注释掉.

2). 在使用ctb2.0或5.1训练时,需要注意2个地方:
I. edu.berkeley.nlp.PCFGLA.Corpus.java的loadChinese方法中,对中文训练语料集文件的选定.
II. edu.berkeley.nlp.PennTreebanReader.java按PTB的格式从文件中读取树,因此,需要整理中文树库文件,即将新闻编号,句子编号等多余的内容删除(每个句子前的“( (”仍需保留)。使得文件中只保留bracketed格式的数据.
III. edu.berkeley.nlp.PennTreebanReader.java的TreeCollection方法(第136行),是默认为文件名为.mrg,需要与CTB的.fid相一致.

3). 开始训练,在eclipse下,设置edu.berkeley.nlp.PCFGLA.GrammarTrain的参数为-path ../Corpus/xma/ctb2.0/data2 -out ./ctb2.0/ctb2.0_sm5.gr -SMcycles 5 -treebank CHINESE
ctb2.0训练集/开发集/测试集分别包含3485/353/348个句子, 当SMcycles设置为5时,训练耗时15分钟. 当SMcycles设置为6时,训练耗时45分钟. SMcycles值每增加1,所需训练时间呈指数级增长

ctb5.1训练集/开发集/测试集分别包含18103/352/348个句子, 当SMcycles设置为5时,训练耗时15分钟.

二、测试模型
java -jar berkeleyParsem5.gr <> ctb2.0/ctb2.0_test.sm5.txt


三、性能评测
采用标准的评测程序
SMcycles=5的情况下在ctb2.0下的评测结果, 按标准训练/开发/测试划分
-- All --
Number of sentence = 348
Number of Error sentence = 0
Number of Skip sentence = 0
Number of Valid sentence = 348
Bracketing Recall = 75.23
Bracketing Precision = 78.11
Bracketing FMeasure = 76.64
Complete match = 24.71
Average crossing = 2.61
No crossing = 45.69
2 or less crossing = 67.82
Tagging accuracy = 91.93

-- len<=40 --
Number of sentence = 300
Number of Error sentence = 0
Number of Skip sentence = 0
Number of Valid sentence = 300
Bracketing Recall = 77.59
Bracketing Precision = 80.65
Bracketing FMeasure = 79.09
Complete match = 28.67
Average crossing = 1.68
No crossing = 52.33
2 or less crossing = 75.33
Tagging accuracy = 92.38

SMcycles=6的情况下在ctb2.0下的评测结果, 按标准训练/开发/测试划分
-- All --
Number of sentence = 348
Number of Error sentence = 0
Number of Skip sentence = 0
Number of Valid sentence = 348
Bracketing Recall = 74.79
Bracketing Precision = 77.02
Bracketing FMeasure = 75.89
Complete match = 24.43
Average crossing = 2.78
No crossing = 44.83
2 or less crossing = 64.94
Tagging accuracy = 92.17

-- len<=40 --
Number of sentence = 300
Number of Error sentence = 0
Number of Skip sentence = 0
Number of Valid sentence = 300
Bracketing Recall = 77.55
Bracketing Precision = 80.15
Bracketing FMeasure = 78.83
Complete match = 28.00
Average crossing = 1.80
No crossing = 51.67
2 or less crossing = 73.67
Tagging accuracy = 92.70



在NAACL07_Improved Inference for Unlexicalized Parsing文中,作者在ctb2.0上得到的性能为<=40words(LP/80.8, LR/80.7), all(LP/78.8, LR/78.5),但其训练集/开发集/测试集分别为chtb026.fid-chtb270.fid/chtb001-chtb025.fid/chtb271.fid-chtb300.fid. 此划分的训练集/开发集/测试集分别包含有3178/307/348句子。
按此划分,SMcycles取值为5,得到的结果为
-- All --
Number of sentence = 348
Number of Error sentence = 0
Number of Skip sentence = 0
Number of Valid sentence = 348
Bracketing Recall = 75.65
Bracketing Precision = 78.91
Bracketing FMeasure = 77.25
Complete match = 23.85
Average crossing = 2.49
No crossing = 45.11
2 or less crossing = 70.11
Tagging accuracy = 92.54

-- len<=40 --
Number of sentence = 300
Number of Error sentence = 0
Number of Skip sentence = 0
Number of Valid sentence = 300
Bracketing Recall = 78.23
Bracketing Precision = 81.75
Bracketing FMeasure = 79.95
Complete match = 27.67
Average crossing = 1.53
No crossing = 51.67
2 or less crossing = 79.00
Tagging accuracy = 93.10
按此划分, SMcycles取值为6, 得到的结果为
-- All --
Number of sentence = 348
Number of Error sentence = 0
Number of Skip sentence = 0
Number of Valid sentence = 348
Bracketing Recall = 75.30
Bracketing Precision = 77.29
Bracketing FMeasure = 76.28
Complete match = 25.00
Average crossing = 2.62
No crossing = 44.25
2 or less crossing = 68.97
Tagging accuracy = 91.84

-- len<=40 --
Number of sentence = 300
Number of Error sentence = 0
Number of Skip sentence = 0
Number of Valid sentence = 300
Bracketing Recall = 78.53
Bracketing Precision = 80.74
Bracketing FMeasure = 79.62
Complete match = 28.67
Average crossing = 1.59
No crossing = 51.00
2 or less crossing = 78.00
Tagging accuracy = 92.51




在NAACL07_Improved Inference for Unlexicalized Parsing文中,作者在ctb2.0上得到的性能为<=40words(LP/86.9, LR/85.7), all(LP/84.8, LR/81.9)
采用CTB5.1, 训练集采用chtb001.fid-chtb270.fid + chtb400.fid-chtb1021.fid + chtb1030-chtb1151.fid (当训练集包括文件chtb1022.fid或chtb1129.fid时,对很多测试句子找不到句法分析树,得到的是(())结果).
SMcycles=5的情况下在ctb5.1下的评测结果
-- All --
Number of sentence = 348
Number of Error sentence = 0
Number of Skip sentence = 0
Number of Valid sentence = 348
Bracketing Recall = 81.01
Bracketing Precision = 83.63
Bracketing FMeasure = 82.30
Complete match = 30.46
Average crossing = 1.99
No crossing = 53.74
2 or less crossing = 72.41
Tagging accuracy = 95.08

-- len<=40 --
Number of sentence = 299
Number of Error sentence = 0
Number of Skip sentence = 0
Number of Valid sentence = 299
Bracketing Precision = 86.65
Bracketing FMeasure = 85.38
Complete match = 35.45
Average crossing = 1.16
No crossing = 60.87
2 or less crossing = 80.94
Tagging accuracy = 95.58

ubuntun8.04的使用

1) pdf中文乱码的解决办法

不管安装时选择中文简体还英文界面,ubuntu阅读中文pdf总会出现乱码,但英文显示正常。搜索了下,有人建议命令行输入如下命令sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional. 但试了下没用.

下面是另外一个人提供的解决方案:
在下载poppler-data (http://poppler.freedesktop.org/poppler-data-0.1.tar.gz),在解压的目录下输入命令sudo make install datadir=/usr/share
紧接着,重启。重新打开pdf后中文显示正常

2008年11月3日星期一

OPENSUSE11.0的安装

最近给几台服务器安装了opensuse 11.0. 整理一下安装记录:
Opensuse的安装很方便, 放入光盘,一路都是next。安装过程中需要配置分区,为swap设置大小2G, 再为/home和/目录设置大小。在分区后和正式安装前,系统会列出一个清单,系统默认是不会安装gcc软件包的,点击软件,为系统装上常用软件,包括gcc, java等,发现有个.net,但不知道其具体用途是啥。选择安装软件包后,next到底。

系统安装完后是进行网络配置和开启vnc,ssh等.
1). 网络配置
网络配置很简单,在YaST2控制中心,找到 网络设备>网络设置, 设置IP,网关等. 设置完后需要重启系统。

2). 开启vnc
同样,在YaST2控制中心,找到 网络服务>远程管理(VNC),选中允许远程管理. 但此时,在客户端通过vncviewer连接,会出现登录界面显示不正常等问题。
紧接着,修改两个文件:
a. 修改/root/.vnc/xstartup,将最底行tmw改为kde
b. 在/etc/xinetd.d/vnc中,server_args的-depth 16改为-depth 24
c. 最后,通过rcxineted restart重启vnc

3). SSH
SSH服务默认已开启,但在客户端访问不了,这需要关闭防火墙。 YaST2控制中心/安全和用户/防火墙

4). 设置GB2312编码
如果从windows下上传一个普通文本文件显示出现乱码,则这时需要设置系统的文字编码。修改/etc/sysconfig/language文件,将RC_LANG, RC_LC_ALL设置为zh_CN.GB2312, 同时将ROOT_USES_LANG设置为 "yes". 重启系统

2008年10月26日星期日

linux下前后台程序的转换

为了能够将通过vnc运行的程序在服务器上一直执行, 而不是当vnc关闭时,程序自动也结束。 网上搜了下相关的文档,但很多对于菜鸟级的新手,例如偶自己,看不明白。。

1). &符号, 在运行后面添加&,可以实现程序在后台运行,比如将./Parser运行于后台,则可以执行$ ./Parser & ,如果参数中用&符号,则要添加一个转义符\
不将当前终端关闭,而只是关闭VNC。 下次进入VNC时,可以现此程序仍在执行.

2). nohup命令, 不挂断地运行运行命令
无论程序是否输出重定向到终端,nohup都将输出附加到当前目录的nohup.out文件中。如果当前目录的nohup.out文件不可写,输出到$HOME/nohup.out文件中。
例如 nohup ./Parser &
它与 ./Parser &的区别是后者中,如果当前终端关闭,则Parser进程也将结束。而添加上nohup,则即使终端关闭,Parser进程仍执行。

3). 将正在运行的程序从前台转化为后台
a.)在终端运行 ./Parser,产生一个前台进程
b.) Ctrl + Z ,将进程Pparser暂停. 并会看到Parser的状态为Stopped
c.) 通过jobs命令查看Parser的编号,比如是1
d.) 执行命令dp 1,即将进程1转化为后台进程,程序从原stop点继续执行。其效果等同于./Parser &, 如果关闭当前终端,此进程仍结束. 怎样做到不结束呢??

2008年10月23日星期四

smb

为了能够在windows下与linux互传文件, 第一想到的是ssh. 貌似只知道默认已安装了openssh, 只需要启动服务或关防火墙什么事. 结果弄了大上午还没配置成功. 太弱!

最后, 还是借助VNC(有图形化启动VNC服务界面, 怎就找不到启动SSH服务界面呢),  然后再smb://windows_ip_address 

貌似传文件还是没ssh方便.