2012-07-05 46 views
2

我有一個關於WordNet和MIT JWI(用於訪問WordNet的Java API)的非常簡單的問題:我將文件讀入字符串數組中,並將其分解爲單詞。我怎樣才能得到一個單獨的字符串數組,只包含使用getPOS()的名詞?謝謝!什麼,我已經試過Java - 使用Wordnet和JWI獲取名詞陣列

例子:

公共類的測試{

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將是空的?這是否值得嘗試?編輯2:所以我的問題atm會是如果有任何方法我可以將一個字符串(單詞)轉換成一個Wordnet對象,所以我可以使用getPOS()對其?

+0

增加了一個例子 – user573382 2012-07-05 20:55:13

+0

這看起來不對。我認爲你需要使用dict.open()的結果,對吧?迭代句子中的字符有什麼用處? – ControlAltDel 2012-07-05 21:00:35

+0

也許你想要sentence1.split(「」)? – ControlAltDel 2012-07-05 21:00:59

回答

1

如果您使用另一個庫,您的方法不會工作 - WordNet被設計爲類固醇而不是解析器的「詞典/辭典」。斯坦福分析器是尋找替代品的好地方。這就是說,你可以對每個單詞執行查找,但是如果有兩個詞都是名詞和動詞,你就不能區分,因爲你不考慮語法。

This應該讓你開始(見底部的例子)。做一個名詞的查找,如果它不回來,就丟棄它。

0

對於JWNL它的工作原理如下,不知道它是否相同。

如果我明白你的問題是獲得POS(詞性標籤)。要做到這一點,你必須使用其他工具,如斯坦福Posger Tagger。但是通過這種方式,您可以爲每個字符串獲取一個字符串,因此您必須從字符串格式的POS轉換爲JWNL的POS類中的POS。