4

ユーザーが基本的に実際の英語を使用して実行するコマンドを入力できるようにする PHP ライブラリを探しています。基本的に、ユーザーが次のようなことができるようにしたい:

Please search for all users in Europeこれはselect * where users = 'Europe'

または私の意図の別の例:

Lookup (Find) the email address for John Smith

追記:こんなことも言っていただけると嬉しいですfor John Smith, Jane Smith, and John Doe

理想的には、このライブラリが存在する場合はスケーラブルであり、特定のことが発生したときに必要なことをプログラムできるようにしたいfind,emailですsearch,users

上記のようなことができるPHPライブラリを知っている人はいますか?

4

1 に答える 1

2

私の知る限り、現在、自然言語クエリに基づいて検索を行うためのライブラリは、PHP にも他のプログラミング言語にもありません ( IBM Watsonは使用できないと思います:) )。

実行可能なアプローチは、文法ベースのパーサーあいまい検索だと思います。

Jisonのようなパーサー ジェネレーターを使用すると、生成文法に対応するすべてのステートメントをユーザー ブラウザーで解析して「理解」し、生成されたクエリまたは中間表現のみをサーバーに送信できます。

ユーザーは入力中にすぐにフィードバックを得ることができ、フォームを送信してエラーが発生するよりもイライラしないため、PHP パーサーよりも優れています。この場合のクエリの解釈は 99% 正しいですが、多くの場合、(人間の観点から) 完全に正しいクエリは、文法によって予見できないため拒否されます。

それ以外の場合は、ストップ ワードの削除、テキストの小文字化、ステミングなどの前処理を行ってから、全文検索エンジンで検索できます (Lucene はおそらく最も強力ですが、それは Java で行われます)。PostgreSQLはそれをサポートしており、MySQL にもいくつかの全文検索機能があります。インデックスを使用し、空白と句読点でテキストをトークン化する基本的な RDBMS に基づいてプリミティブ エンジンを構築することもできます。

どちらの方法は、データがどの程度多様でノイズが多いか、および予想されるさまざまなクエリに依存します。ハイブリッド アプローチの実装を試みることもできます。つまり、文法を使用してテキストを解析し、失敗した場合は全文検索を使用します。

于 2013-03-12T20:11:26.010 に答える