3

各単語に対応するフレーズタグを取得したい場合、どうすれば取得できますか?

例えば ​​:

この文では、

私の犬もソーセージを食べるのが好きです。

次のようなスタンフォード NLP で解析ツリーを取得できます。

(ROOT (S (NP (PRP$ My) (NN dog)) (ADVP (RB also)) (VP (VBZ likes) (NP (JJ eating) (NN sausage))) (. .)))

上記の状況で、次のような各単語に対応するフレーズタグを取得したい

(My - NP), (dog - NP), (also - ADVP), (likes - VP), ...

フレーズタグを簡単に抽出する方法はありますか?

私を助けてください。

4

1 に答える 1

2
//I guess this is how you get your parse tree.
Tree tree = sentAnno.get(TreeAnnotation.class);

//The children of a Tree annotation is an array of trees.
Tree[] children = parent.children() 

//Check the label of any sub tree to see whether it is what you want (a phrase)
for (Tree child: children){
   if (child.value().equals("NP")){// set your rule of defining Phrase here
          List<Tree> leaves = child.getLeaves(); //leaves correspond to the tokens
          for (Tree leaf : leaves){ 
            List<Word> words = leaf.yieldWords();
            for (Word word: words)
                System.out.print(String.format("(%s - NP),",word.word()));
          }
   }
}

コードは完全にはテストされていませんが、大まかに必要なことを実行すると思います。さらに、再帰的にサブツリーにアクセスすることについては何も書いていませんが、それができるはずだと思います。

于 2013-01-22T21:47:57.490 に答える