ランク付けされていないブール検索を実装しようとしています。このためには、ツリーを構築し、DFS を実行してドキュメントを取得する必要があります。リーフ ノードはありますが、ツリーを構築するのが困難です。
例: query = OR ( AND (マリア・シャラポワ) テニス)
結果:
また | | | | そしてテニス | | | | マリアシャラポワ
DFS を使用してツリーをトラバースし、特定のドキュメント ID に相当するブール値を計算して、コーパスから必要なドキュメントを識別します。誰かがPythonを使用してこれを設計するのを手伝ってくれますか? クエリを解析し、今のところリーフ ノードを取得しました。
編集:私はここに新しいので、明確さを欠いて申し訳ありません。私は基本的に非常に素朴な検索エンジンを構築しようとしています。したがって、ユーザーは OR ( AND (マリア シャラポワ) テニス) のようなブールクエリを入力します。入力したクエリに応じてユーザーに表示されるウィキペディア ドキュメントのコーパスがあります。
これまで、クエリを解析して個々の演算子 (OR、AND など) を取得しました。そして、個々の検索用語 (マリア、テニスなど)。解析用のコードは、基本的にすべての演算子とクエリ用語を入力どおりにグループ化する単なる関数です。すなわち、(マリア・シャラポワ)、(テニス)、OR、AND。ツリーのボトムアップを作成するために、この関数をこのように解析しました。ここで、テニス、マリア、シャラポワなどの対応するキーワードの転置リストを使用して、転置リストを使用してブール演算を実行し、特定の「documentid」を取得します。次に、この documentid が API に渡され、API が正しいウィキペディア ページを取得します。
トピックをより詳細に説明するために、私の問題の詳細については、このドキュメントを参照してください: http://www.ccs.neu.edu/home/jaa/CSG339.06F/Lectures/boolean.pdf