关于WordNet和MIT JWI(用于访问WordNet的Java API),我有一个非常简单的问题:我将一个文件读入一个字符串数组,我将其分成单词。如何使用getPOS()获得仅包含名词的单独字符串数组?谢谢!
我尝试过的例子:
公共课堂考试{public static void main(String[] args) {
String sentence1 = "The cat ate the fish";
String[] s1Split = sentence1.split(" ");
String wnhome = "C:/Program Files/WordNet/2.1";
String path = wnhome + File.separator + "dict";
URL url = new URL("file", null , path);
IDictionary dict = new Dictionary(url);
dict.open();
for (int i = 0; i <s1.length; i++) {
//this is where I got confused, wanted to use something like:
//Word w = dict.getIndexWord(s1[i], ..) but I need a POS argument,
//and I can't find another suitable method
//if w.getPOS() is a noun I would add it to a separate vector
}
}
}
编辑:想到另一个 - 使用类似w = dict.getIndexWord(s1[i], POS.NOUN)
的东西是否可靠,如果名词不存在,w将为空?这会是值得尝试的吗?
EDIT2:所以我的问题是,如果有任何方法可以将字符串(单词)转换为Wordnet对象,那么我可以在其上使用getPOS()吗?
答案 0 :(得分:1)
如果您使用其他库,您的方法将无法正常工作 - WordNet被设计为类固醇而非解析器的'字典/词库'。 Stanford Parser是寻找替代方案的好地方。
也就是说,你可以对每个单词执行查找,但是如果有单词都是名词,比如动词,你将无法区分,因为你没有考虑语法。
This应该让你入门(参见底部的例子)。查找名词,如果它没有回来,就丢弃它。
答案 1 :(得分:0)
对于JWNL,它的工作原理如下,但不知道它是否相同。
如果我理解你的问题是获得POS(词性标签)。为此,您必须使用其他工具,例如Stanford Pos Tagger。但是,通过这种方式,您可以获得每个单词字符串的字符串,因此您必须从字符串格式的POS转换为JWNL的POS类中的POS。