Javaで実装されたCFGパーサを探しています。私は自然言語を解析しようとしています。そして、私は可能なすべての解析木(あいまいさ)が必要です。私はすでにスタンフォードパーサーのような多くのNLPパーサーを研究していました。しかし、それらは主に統計データ(私が持っていないツリーバンク)を必要とし、それらを新しい言語に適応させることはむしろ難しく、文書化されていません。 ANTRLやJFlexなどのパーサージェネレータがいくつか見つかりましたが、あいまいさを処理できるかどうかはわかりません。どのパーサージェネレータまたはJavaライブラリが私のために最適ですか? ありがとうございますあいまいさをサポートするJava CFGパーサ
答えて
hereを参照してください。そのディスカッションの私の最後のコメントでは、派生を失敗させる前に派生したパーズツリーを複製することによって、パースツリーのすべてを生成できるようにすることを説明します。
はあなたの文法がある場合:
G -> ...
あなたは強化だろうが、このようです:
G' -> G {semantic:deal-with-complete-parse-tree} <NOT-VALID-TOKEN>.
解析エンジンは、最終的にすべての派生に失敗しますが、あなたのプログラムがあります次のいずれか
- すべての樹木の保存クローン。
- 見つかった各ツリーのセマンティクスを扱います。
私が教授していた時、ANTLRとJavaCCの両方がうまくいった。私の好みは、BNFのレキシカルな分析と、それほど複雑ではない歴史、ビジョン、yとライセンスのためANTLRです。
答えのApalalaありがとう。実際に私はまだパーサージェネレータとは協力していません。私の場合、それが最善の解決策だと思いますか?一度ANTLRを学び始めると時間がかかり、私はすでに論文を完成させるために何点かを無駄にしています。 – hrzafer
@hrzafer主流のパーサジェネレータには多くの文法が用意されています。あなたはあなたのニーズに適応できるものを見つけるでしょう。時間に関しては、あなただけがそれを見積もることができます。私が教えてくれたとき、ANTLR/JavaCCでの最初の課題は3週目でした。それは6時間/週のテーマでした(論文は20-40時間/週の努力でなければなりません)。 – Apalala
答えてくれてありがとう、PEPを見た後、私はこれが私の必要と思うものだと思う。 – hrzafer