Javaで実装されたCFGパーサーを探しています。問題は、私が自然言語を解析しようとしているということです。そして、そのうちの1つだけでなく、すべての可能な解析ツリー(あいまいさ)が必要です。私はすでにスタンフォードパーサーのような多くのNLPパーサーを研究しました。しかし、それらは主に統計データ(私が持っていないツリーバンク)を必要とし、それらを新しい言語に適応させることはかなり困難であり、十分に文書化されていません。ANTRLやJFlexなどのパーサジェネレータを見つけましたが、あいまいさを処理できるかどうかはわかりません。では、どのパーサジェネレータまたはJavaライブラリが私に最適ですか?前もって感謝します
2851 次
3 に答える
1
ここで関連する議論を見てください。その議論の最後のコメントで、派生を失敗させる前にこれまでに派生した解析ツリーを複製することにより、任意のパーサジェネレータにすべての解析ツリーを生成させることができることを説明します。
文法が次の場合:
G -> ...
あなたはこれを増強するでしょう:
G' -> G {semantic:deal-with-complete-parse-tree} <NOT-VALID-TOKEN>.
解析エンジンは最終的にすべての派生で失敗しますが、プログラムには次のいずれかが含まれます。
- すべての木のクローンを保存しました。
- 見つかった各ツリーのセマンティクスを処理しました。
私が教えていたとき、ANTLRとJavaCCの両方がうまくいきました。私の好みは、BNF字句解析、およびはるかに複雑でない歴史、ビジョン、y、およびライセンスのためにANTLRを選択しました。
于 2011-01-03T23:05:57.957 に答える