4

我正在使用斯坦福 coreNLP(http://nlp.stanford.edu/software/corenlp.shtml)来解析句子并提取单词之间的依赖关系。

我已经设法像提供的链接中的示例一样创建依赖关系图,但我不知道如何使用它。我可以使用该方法打印整个图表toString(),但我遇到的问题是在图表中搜索某些单词的方法,例如getChildList,需要一个 IndexedWord 对象作为参数。现在,很清楚他们为什么这样做,因为图形的节点是 IndexedWord 类型,但我不清楚如何创建这样的对象以搜索特定节点。

例如:我想在我的句子中找到代表单词“问题”的节点的子节点。如何创建一个表示“问题”一词的 IndexWord 对象,以便我可以在图中搜索它?

4

1 回答 1

11

通常,您不应该创建自己的 IndexedWord 对象。(这些用于表示“单词标记”,即文本中的特定单词,而不是“单词类型”,因此要求单词“问题” - 单词类型 - 并不是真正有效的;特别是,一个句子可以有多个这种词类型的标记。)

有几个方便的方法可以让你做你想做的事:

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

第一个有点危险,因为它只返回第一个与模式匹配的 IndexedWord,如果没有,则返回 null。但这是您最直接要求的。

其他一些开始的方法是:

  • sg.getFirstRoot() 找到图的(第一个,通常是唯一的)根,然后从那里向下导航,例如使用 sg.getChildren(root) 方法。
  • sg.vertexSet() 获取图中所有的 IndexWord 对象。
  • sg.getNodeByIndex(int) 如果你已经知道输入的句子,因此可以通过它们的整数索引来询问单词。

通常,这些方法会让您遍历节点。实际上,前两个 get...Node... 方法只是为您进行迭代。

于 2011-11-26T01:47:38.900 回答