最近上软件工程这门课,老师留了个作业是关于在WordNet之上做一个软件名称查询的模块。既然是基于WordNet,那么无疑就需要一个关于WordNet的Java Interface,挑了又挑,选了又选决定使用MIT的开源产品JWI,抓瞎了一天,总算是把它的简单程序在Eclipse里跑起来了,所以今天先做个总结,以后的学习笔记以后再写吧。
首先要从http://wordnet.princeton.edu/上下载WordNet,支持Windows系统的最新版本是WordNet2.1,是可执行文件,下载之后双击安装就可以了,记住安装目录,以后会用到。我的安装目录是C:/Program Files/WordNet/2.1。
然后下载MIT Java WordNet Interface,下载地址如下http://www.mit.edu/~markaf/prj/jwi/,我下载的版本是2.1.4,下载之后解压,会发现有一个 edu.mit.jwi_2.1.4_jdk的jar包。
现在准备工作已经做完了,除非你的机器还没有安装JDK或Eclipse,因为这两者是需要的,至少JDK是需要的。接下来打开Eclipse,创建一个新的Java Project,然后右键点击你的Project,在Build Path-->Configue Build Path...-->Java Build Path-->Libraries-->Add External Jars...选择刚才的edu.mit.jwi_2.1.4_jdk,这样你的Project里就包含了这个MIT的Library了。然后回到桌面右键点击“我的电脑”-->“属性”-->“高级”-->"环境变量",在系统变量中添加一个叫做WNHOME的变量,值就是你刚才安装WordNet的安装目录,我这里的值就是C:/Program Files/WordNet/2.1。这样做的目的一会儿就会明白。
重新启动Eclipse,在你的Project里建立一个新的包,在包里新建一个Java文件,内容如下:
package wordnet;
import java.io.*;
import java.net.*;
import edu.mit.jwi.Dictionary;
import edu.mit.jwi.IDictionary;
import edu.mit.jwi.item.*;
public class HiWordnet {
public static void main(String[] args) {
//建立指向WordNet词典目录的URL。
String wnhome = System.getenv("WNHOME");
String path = wnhome + File.separator + "dict";
URL url=null;
try{
url = new URL("file", null, path);
}
catch(MalformedURLException e){
e.printStackTrace();
}
if(url == null)
return;
//建立词典对象并打开它。
IDictionary dict = new Dictionary(url);
dict.open();
//查询dog这个词的第一种意思。
IIndexWord idxWord = dict.getIndexWord("enough", POS.ADVERB);
IWordID wordID = (IWordID)idxWord.getWordIDs().get(0);
IWord word = dict.getWord(wordID);
System.out.println("Id = " + wordID);
System.out.println("Lemma = " + word.getLemma());
System.out.println("Gloss = " + word.getSynset().getGloss());
}
}
看过以上的代码就应该知道刚才添加WNHOME这个系统变量的意图了,就是为了在程序中使用WordNet的字典。现在运行这个Java程序,可得结果下:
Id = WID-00146900-R-??-enough
Lemma = enough
Gloss = as much as necessary; "Have I eaten enough?"; (`plenty' is nonstandard) "I've had plenty, thanks"
至此,你的WordNet就可以在JWI的操作下发挥作用了,至于你想实现什么功能的模块就是自己的事了。