4

文を解析し、単語間の依存関係を抽出するために、スタンフォード coreNLP ( http://nlp.stanford.edu/software/corenlp.shtml ) を使用しています。

提供されたリンクの例のように依存関係グラフを作成できましたが、それを操作する方法がわかりません。メソッドを使用してグラフ全体を印刷できますtoString()が、問題は、グラフ内の特定の単語 ( など) を検索するメソッドがgetChildList、パラメーターとして IndexedWord オブジェクトを必要とすることです。グラフのノードが IndexedWord 型であるため、その理由は明らかですが、特定のノードを検索するためにそのようなオブジェクトを作成する方法は明確ではありません。

例: 文で「problem」という単語を表すノードの子を見つけたいとします。グラフで検索できるように、「問題」という単語を表す IndexWord オブジェクトを作成するにはどうすればよいですか?

4

1 に答える 1

11

一般に、独自の IndexedWord オブジェクトを作成するべきではありません。(これらは、「単語トークン」、つまり、「単語タイプ」ではなく、テキスト内の特定の単語を表すために使用されるため、「問題」という単語 (単語タイプ) を求めることは実際には有効ではありません。特に、文には、この単語タイプのトークンが複数含まれる場合があります。)

必要なことを実行できる便利なメソッドがいくつかあります。

  • sg.getNodeByWordPattern(文字列パターン)
  • sg.getAllNodesByWordPattern(文字列パターン)

最初のものは、パターンに一致する最初の IndexedWord を返すか、何もない場合は null を返すだけなので、少し危険です。しかし、それはあなたが求めた最も直接的なものです。

開始する他の方法は次のとおりです。

  • sg.getFirstRoot() を使用して、グラフの (最初の、通常は唯一の) ルートを見つけ、そこから sg.getChildren(root) メソッドを使用するなどして下に移動します。
  • sg.vertexSet() を使用して、グラフ内のすべての IndexWord オブジェクトを取得します。
  • sg.getNodeByIndex(int) 入力文が既にわかっている場合は、整数インデックスで単語を要求できます。

通常、これらの方法では、ノードを反復処理する必要があります。実際、最初の 2 つの get...Node... メソッドは反復処理を行うだけです。

于 2011-11-26T01:47:38.900 に答える