接続とコンマに基づいてツリーを分割したいと思います。たとえば、VP and VP
またはNP and NP
またはVP, VP
またはNP,NP
の場合は、それぞれのVPまたはNPを別々に抽出したいと考えています。私は次のコードを持っています:スタンフォードパーサーのためにTregexを使用して接続詞で接続されたVP/NPを抽出する
List<Tree> subtrees = constituent.subTreeList();
for (int i = 0; i < subtrees.size(); i++) {
String s = "@VP $+ CC $+ @VP";
TregexPattern p = TregexPattern.compile(s);
TregexMatcher m = p.matcher(subtrees.get(i));
while (m.find()) {
m.getMatch().pennPrint();
Tree foundTree = m.getMatch();
System.out.println(m.getMatch());
}
}
しかし、次のテキストでは機能しません。私のコードで何が間違っていますか?
(VP (VP (VB manage) (NP (NP (DT the) (JJ entire) (NN life) (NN cycle)) (PP (IN of) (NP (PRP$ your) (NNS APIs))))) (CC and) (VP (VB expose) (NP (PRP$ your) (NNS APIs)) (PP (TO to) (NP (JJ third-party) (NNS developers)))))
「動作しません」とはどういう意味ですか?どのような出力または例外が表示されますか?期待される成果は?また、なぜ各サブツリーに対してパターンをコンパイルしていますか? – dantiston
@dantistonすべてのサブツリーに対してこれを繰り返すのは、すべてのVPまたはNPを連結詞と結びつけることを期待しているからです。問題は、コードが一致するものを見つけられないことです。パターンに何か問題がありますか? – user1419243