自然语言处理学习中,常用的英文词典是普林顿大学做的WordNet本体库,下载地址:http://wordnet.princeton.edu,中文常用到HowNet本体库,下载地址:http://www.keenage.com/。英文词典WordNet关于Windows版本目前更新至2.1,目前可以满足工程部分仿真实验,双击安装文件“WordNet-2.1.exe”,指定安装路径,完成安装。
关于WordNet词典有不同的java接口,比如MIT,JWNL等。在安装软件和配置环境中发现JWNL对WordNet版本有严格的要求,最终采用MIT麻省理工学院编写的用于访问WorNet的Java API。JWI下载地址:http://projects.csail.mit.edu/jwi/,打开链接之后,
可以选择最后一项“All-in-one(jdk,javadocs,manual)”--->“edu.mit.jwi_2.4.0_all.zip(1503kb)”,然后进行下载操作。
----------------------------------------------------------------------------------------------------------
配置环境:
1.将下载好的JWI文件夹中“edu.mit.jwi_2.4.0_jdk.jar”,将jar包导入IDE中。下面演示Eclipse操作中导入jar包过程,创建新的Java Project工程,然后右键点击你的Project,在Build Path-->Configue Build Path...-->Java Build Path-->Libraries-->Add External Jars...选择刚才的edu.mit.jwi_2.4.0_jdk.jar。安装完成后,可以在Eclipse工作台查看是否导入正确。
2.将WordNet的安装路径添加到系统环境变量中,环境变量“WNHOME”指向WordNet的安装目录,类似于jdk的“JAVA_HOME”路径设置,比如: WNHOME = “D:\Program Files (x86)\WordNet\2.1”;
--------------------------------------------------------------------------------------------------------------------------------
配置成功后,切记:重启Eclipse!!!
--------------------------------------------------------------------------------------------------------------------------------
测试代码:
import java.io.*;
import java.net.*;
import edu.mit.jwi.Dictionary;
import edu.mit.jwi.IDictionary;
import edu.mit.jwi.item.*;
public class HelloWordNet {
public static void main(String[] args) throws IOException {
//建立指向WordNet词典目录的URL。
String wnhome = System.getenv("WNHOME");
String path = wnhome + File.separator + "dict";
URL url = new URL("file", null, path);
//建立词典对象并打开它
IDictionary dict = new Dictionary(url);
dict.open();
//查询money这个词的第一种意思。POS后面的参数表示要选的哪种词性的含义
IIndexWord idxWord = dict.getIndexWord("money", POS.NOUN);
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());
//第二种意思
IWordID wordID2 = (IWordID)idxWord.getWordIDs().get(1);
IWord word2 = dict.getWord(wordID2);
System.out.println(word2.getSynset().getGloss());
//第三种意思
IWordID wordID3 = (IWordID)idxWord.getWordIDs().get(2);
IWord word3 = dict.getWord(wordID3);
System.out.println(word3.getSynset().getGloss());
}
}