ユーザーの用語を理解したいです。誰かが「Staples in NY」を検索しているとします。これは、キーワードが主食で場所がニューヨークの場所検索であることを理解したいと思います。同様に、誰かが「cat in hat」と入力した場合、パーサーはそれを位置検索としてフラグ付けするべきではありません。ここでは、キーワード全体が「cat in hat」です。検索用語を解析し、その比較 (A と B など) またはロケーション ベースの検索 (X の A など) を理解するために利用できるアルゴリズムまたはオープン ソース ライブラリはありますか?
3 に答える
あなたが説明する問題は、情報抽出と呼ばれます。多くのアルゴリズムが存在しますが、最も単純なものは正規表現マッチングであり、最も構造化された機械学習です。最初に正規表現を試し、Python を知っている場合はNLTKなどを調べてください。
プログラムが「NY」が場所であることを認識していれば、「NY のステープルズ」と「帽子をかぶった猫」を区別することができます。大文字で、または地名辞典と呼ばれるリストに「NY」が出現することでわかります。
一般的に問題はAI-completeであるため、良い結果が必要な場合は、多くの労力を費やすことを期待してください.
このような言語規則は、GATE やhttp://code.google.com/p/graph-expression/などの文法で記述する必要があります。例: (LocationLookup) の Token+。
よくわかりませんが、解析に関する私の経験によると、2つのアプローチがあります-
式を解析して値/パラメーターを収集できる文法を定義します。検索の種類を推測できるキーワードの辞書を作成することをお勧めします。
式自体が検索の種類を示すように、文法を厳密に定義してください。例: LOC: A in B 、VALUE $ からユーロ。等
パーサーについては、ANTLR / jcup & jflex を参照してください。