Natural Language Interfaces to Database を開発しようとしていますが、質問 (疑問文) をコマンド (命令文) に変換するために使用できるライブラリまたは API (Java) があるかどうか疑問に思っています。
例:「1970年以前に生まれた従業員は?」より 「1970 年以前に生まれた従業員を取得する」へ。
これはかなり複雑で、重要な問題です。ただし、ドメインが限定されており (従業員のデータベース クエリなど)、入力として限られた一連の発話しか期待できない場合は、単純なルールベースのシステムを構築できます。
最も簡単な解決策は、一連の正規表現ベースの変換ルールを作成することです。たとえば、(was|were) の後に現れる単語が動詞であると仮定します。すべての頻繁な動詞とデータベース フィールドへのマッピングの辞書を保持できます。ここで、「born」は、たとえば DATE_OF_BIRTH と呼ばれるフィールドにマップされます。
より洗練されたルールベースのソリューションは、選択した言語のパーサーを検索または構築し、パーサーの出力とルール ベースに基づいて変換を実行することです。たとえば、パーサーは、文の述語、主語などを出力します。文のこれらの部分を再配置して、命令構造を生成する一連の規則があります。
手動でルール ベースを開発するという考えが嫌いな場合は、いつでも機械学習アプローチを試して、統計システムをトレーニングできます。ここでは、予想されるほとんどの質問タイプをカバーする質問データベースを開発し、統計モデルをトレーニングする必要があります。
上記のアプローチのいずれかを試すための単一のライブラリ/ツールを提案するとしたら、OpenNLP と言うでしょう。