2011-11-17 95 views
4

我使用Stanford coreNLP(http://nlp.stanford.edu/software/corenlp.shtml)來解析句子並提取單詞之間的依賴關係。使用斯坦福核心中的依賴分析器NLP

我已經成功創建了依賴關係圖,就像在提供的鏈接中的示例一樣,但我不知道如何使用它。我可以使用toString()方法打印整個圖表,但我遇到的問題是搜索圖中某些單詞的方法(如getChildList)需要將IndexedWord對象作爲參數。現在,很明顯他們爲什麼這樣做,因爲圖的節點是IndexedWord類型的,但我不清楚如何創建這樣的對象以搜索特定的節點。

例如:我想在我的句子中找到表示單詞「問題」的節點的子節點。我如何創建一個表示單詞「問題」的IndexWord對象,以便我可以在圖表中搜索它?

回答

10

通常,您不應該創建自己的IndexedWord對象。 (這些用於表示「詞語標記」,即文本中的特定詞語而不是「詞類型」,因此要求單詞「問題」 - 一種詞類型 - 並非真正有效;特別是,一個句子可以有這個詞類型的多個令牌)

有一對夫婦的方便的方法,讓你做你想做的。

  • sg.getNodeByWordPattern(字符串模式)
  • sg.getAllNodesByWordPattern (String pattern)

第一個有點危險,因爲它只返回匹配模式的第一個IndexedWord;如果沒有,則返回null。但它最直接的是你所要求的。

一些其他方法來從開始有:

  • sg.getFirstRoot()來查找(第一,通常只)的曲線圖的根,然後向下從那裏導航,諸如通過使用SG .getChildren(root)方法。
  • sg.vertexSet()獲取圖中的所有IndexWord對象。
  • sg.getNodeByIndex(int)如果您已經知道輸入句子,並且可以通過它們的整數索引來請求單詞。

通常這些方法讓你迭代節點。真的,前兩個得到...節點...方法只是爲你做迭代。