7

Natural Language Interfaces to Database を開発しようとしていますが、質問 (疑問文) をコマンド (命令文) に変換するために使用できるライブラリまたは API (Java) があるかどうか疑問に思っています。

例:「1970年以前に生まれた従業員は?」より 「1970 年以前に生まれた従業員を取得する」へ。

4

1 に答える 1

2

これはかなり複雑で、重要な問題です。ただし、ドメインが限定されており (従業員のデータベース クエリなど)、入力として限られた一連の発話しか期待できない場合は、単純なルールベースのシステムを構築できます。

最も簡単な解決策は、一連の正規表現ベースの変換ルールを作成することです。たとえば、(was|were) の後に現れる単語が動詞であると仮定します。すべての頻繁な動詞とデータベース フィールドへのマッピングの辞書を保持できます。ここで、「born」は、たとえば DATE_OF_BIRTH と呼ばれるフィールドにマップされます。

より洗練されたルールベースのソリューションは、選択した言語のパーサーを検索または構築し、パーサーの出力とルール ベースに基づいて変換を実行することです。たとえば、パーサーは、文の述語、主語などを出力します。文のこれらの部分を再配置して、命令構造を生成する一連の規則があります。

手動でルール ベースを開発するという考えが嫌いな場合は、いつでも機械学習アプローチを試して、統計システムをトレーニングできます。ここでは、予想されるほとんどの質問タイプをカバーする質問データベースを開発し、統計モデルをトレーニングする必要があります。

上記のアプローチのいずれかを試すための単一のライブラリ/ツールを提案するとしたら、OpenNLP と言うでしょう。

于 2014-10-22T13:14:52.897 に答える