新しい車を購入することは、膨大な数の自動車メーカーとモデルがあり、それぞれが独自の長所、短所、特別な機能を備えているため、難しくて複雑になる可能性があります。この検索エンジンは、人々が自動車モデルのレビューを除外するのを支援することを目的としており、最初に最も興味深い関連するものを示唆しています。
指定された.csvファイルから最初の引数として指定された.CSVファイルから約300,000ファイルを作成し、2番目の引数として指定されたディレクトリにそれらを保存します。各ファイルは.csvファイルの行に対応し、各引数はnewlineで区切られています。これにより、反転インデックスを作成するためのベースデータセットが形成されます。
データセットを同時に作成し、時間を約33%削減するスクリプトdataset_generator.pyの並列バージョン。この結論は、異なるPCで実施されるさまざまなテストに基づいています。
このスクリプトは、 dataset_generator.pyで生成されたファイルから反転インデックスを作成し、ファイルのディレクトリを最初の引数として取得します。次に、逆インデックスが現在のディレクトリに保存されます。
file :レビューのファイル名maker :レビューされた車の自動車メーカーmodel :レビューされた車の車モデルyear :レビューされた車の年author :レビューの著者date :レビューの日付title :レビューのタイトルrating :レビューの評価content :実際のレビューインデックスのディレクトリで動作するスクリプト(ワーキングディレクトリにある必要があります)で、反転インデックスでクエリを尋ねることができます。
主な検索関数と構文:
word1 word2"word1 word2"word*[word1 TO word2]"word1 word2"~Nword1 AND/OR/NOT word2word~0 WildCardsは、指定されたフィールド(Ex。Maker maker:a* )でクエリで動作しません。これは、 makerとmodelフィールドがスキーマ定義でIDとして設定されており、クエリの結果を悪化させるため、それらの前処理を避けるためです。
さまざまなモデルのカスタムスコアリングのクラスとメソッドを含むモジュール。
現在のモデル:
フルテキストモデル: BM25Fスコアリングを使用して、フリー変数BおよびK1をわずかに調整します。クエリに使用されるモデル:BM25Fチューニング値: B=0.5, K1=1.5 。
センチメントモデル:レビューの感情を使用してスコアに影響を与えます。 BM25FとTF_IDF両方で機能するように設計されています。 2種類のスコアリングがあります。
センチメント値でのスコアリング:レビューの感情値のみを利用して、式: final_score = score * sentiment_valueで最終スコアに影響を与えます。
感情の価値とランキングで得点:レビューの感情値と格付けを利用してスコアを修正し、格付けと感情値との不一致を回避します。感情の種類に基づいて一連の式を使用します(詳細については、コードコメントを参照)。
final_score = score * sentiment_value * rating/5 。final_score = score * sentiment_value * 1.2 - rating/5 。if rating > 3: final_score = score * sentiment_value * 0.4 - rating/5またはif rating < 3: final_score = score * sentiment_value * 0.4 + rating/5 。 word2vecモデル:モデルは、 CBOW (連続した単語の袋)アーキテクチャを使用してデータセットでカスタムトレーニングされています。ドキュメント内の各単語について、ベクトルを計算し、ドキュメントのベクトル平均を計算します。平均は、各ドキュメントと前処理されたクエリベクトルの間のコサインの類似性を計算するカスタムモデルクラスで使用される.jsonファイルに保存されます。次に、次の式を利用して、最終スコアを取得します: final_score = score * cosine_similarity 。
データセットの作成:上記のリンクからダウンロードし、プロジェクトディレクトリに貼り付けて、データセットから開始するインデックスを作成できます。 dataset_generator.pyを次のように実行します: python3 -s dataset_generator.py review.csv <output_directory> 。
反転インデックスの作成:データセットを作成したら、 index_generator.pyを実行して逆インデックスを作成できます。次のコマンドを使用します。Python3 python3 -s index_generator.py <dataset_directory>インデックス全体を作成する前にインデックスのデモを試すことをお勧めします。このスクリプトは、インデックス生成中に各ファイルの感情を計算し、PCの仕様に応じて、しばらく時間がかかる場合があります(1番目の1つのバージョンで〜20分かかります)。
インデックスのクエリ:インデックスをダウンロードまたは作成した後、ワーキングディレクトリにWord2VecモデルとWord2Vecベクトルをダウンロードできるようになりました。次に、次のようにquery.pyを実行するだけです: python3 -s query.py <index_directory_path> 。
このプロジェクトはPython 3.11.5で開発およびテストされました(こちらからダウンロード)。異なるバージョンを使用すると、エラーが発生する場合があります。
モジュールの要件は、要件にリストされています。txt。
プロジェクトメンバー:Mussini Simone、Siena Andrea、Stomeo Paride