关于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:所以我的问题是,是否有任何方法可以将字符串(word)转换为Wordnet对象,这样我就可以对其使用getPOS()?
发布于 2012-07-06 04:15:15
如果你使用另一个库,你的方法就不会工作得那么好-- WordNet被设计成一个“字典/辞典”,而不是一个解析器。斯坦福解析器是一个寻找替代方案的好地方。
也就是说,您可以对每个单词执行查找,但如果存在既是名词又是动词的单词,您将无法区分,因为您没有考虑语法。
This应该可以帮助您入门(请参阅底部的示例)。查找一个名词,如果它没有返回,就丢弃它。
发布于 2014-03-13 18:04:58
对于JWNL,它的工作原理如下,不知道它是否相同。
如果我理解了,你的问题是获取词性标签(词性标签)。要做到这一点,你必须使用另一个工具,比如Stanford Pos Tagger。但是,通过这种方式,您可以为每个单词字符串获取一个字符串,因此您必须将字符串格式中的POS转换为JWNL的POS类中的POS。
https://stackoverflow.com/questions/11351748
复制相似问题