2011-06-20 13 views
0

ユーザーのセラー語を理解したいと思います。誰かが "NYのステープル"を探していると思う - 私はキーワードがステープルであり場所がニューヨークである場所の検索を理解したいと思う。同様に、誰かが "cat in hat"と入力した場合、パーサはそれを場所検索としてはいけません。キーワード全体が "cat in hat"です。 検索用語を解析し、比較(A対Bなど)またはその位置ベース検索(X内のAなど)を理解するアルゴリズムまたはオープンソースライブラリはありますか?検索用語を解析して貴重な情報を抽出するパーサー

答えて

3

あなたが記述する問題はinformation extractionと呼ばれます。多くのアルゴリズムが存在します。最も単純なのは正規表現のマッチングです。最初にregexpsを試してみて、Pythonを知っていればNLTKのようなものを見てください。

あなたのプログラムが "NY"が場所であることをプログラムが知っている場合、 "NYのステープル"と "帽子の猫"を区別できます。大文字か「NY」がgazetteerと呼ばれるリスト内に出現するため、どちらかを指定することができます。

問題は一般的にはAI-completeです。良い結果が必要な場合は、大変な作業が必要です。構文解析と私の経験につきとして

+0

地名辞典はどのように使用しますか?それは私がアドレスのダンプを取って解析することができるものですか?このサービスを提供しているサービスプロバイダはありますか? – Shamik

+0

@Shamik:サービスが必要な場合は、OpenCalaisなどの場所から完全なIEサービスを入手できます。あなたがフリーライドをしているなら、Wikipediaのデータベースダンプをダウンロードし、それから地名辞書を抽出してください。 –

+0

@ Shamic http://dbpedia.org/は、それを正確に示しています。 –

0

すぎてわからないが、2つのアプローチ -

  1. が式を解析し、値/パラメータを収集することができ文法を定義します。キーワードの辞書を使って検索のタイプ​​を推測することができます。

  2. 式自体が検索のタイプ​​についてあなたに知らせるように、文法を定義するときは厳密にしてください。 例えばLOC:AのB、VALUE $をユーロにします。

パーサーについては、ANTLR/jcup & jflexを参照してください。