2

关于 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() 吗?

4

2 回答 2

1

如果您使用另一个库,您的方法将无法正常工作 - WordNet 被设计为类固醇而不是解析器的“字典/词库”。斯坦福解析器是寻找替代方案的好地方。

也就是说,您可以对每个单词执行查找,但是如果有单词既是名词又是动词,您将无法区分,因为您没有考虑语法。

应该可以帮助您入门(请参见底部的示例)。查找一个名词,如果它没有返回,则丢弃它。

于 2012-07-05T20:15:14.717 回答
0

对于 JWNL,它的工作原理如下,但不知道是否相同。

如果我理解您的问题是获取 POS(词性标签)。为此,您必须使用其他工具,例如 Stanford Pos Tagger。但是,通过这种方式,您可以获得每个单词字符串的字符串,因此您必须从字符串格式的 POS 转换为 JWNL 的 POS 类中的 POS。

于 2014-03-13T10:04:58.097 回答