MIT Java Wordnet Interface初体验

来源:互联网 发布:win7怎么关闭端口 编辑:程序博客网 时间:2024/06/06 20:13

          最近上软件工程这门课,老师留了个作业是关于在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的操作下发挥作用了,至于你想实现什么功能的模块就是自己的事了。

原创粉丝点击