由於大量的汽車製造商和型號,都有自己的優點,缺點和特殊功能,因此購買新車可能會很棘手且複雜。該搜索引擎旨在幫助人們過濾汽車模型的評論,並首先提出最有趣和最相關的評論。
從指定的.csv文件作為第一個參數創建大約300,000個文件,並將它們存儲在指定為第二個參數的目錄中。每個文件對應於.csv文件中的一行,每個參數都由newline分開。這形成了用於創建倒置索引的基本數據集。
同時創建數據集的腳本dataset_generator.py的並行版本,將時間減少了約33%。該結論基於對不同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用於退出通配符無法使用指定字段(例如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 -s index_generator.py <dataset_directory>我建議在創建整個索引之前嘗試嘗試索引的演示,因為此腳本在索引生成過程中計算了每個文件的情感,並且根據您的PC的規格,這可能花了一段時間(這可能需要一段時間的一個和一個完整的一個版本的一個和一個20分鐘的訪問),以進行一個和一個20分鐘的訪問,以進行一個和〜20分鐘。
查詢索引:下載或創建索引後,您現在可以在工作目錄中下載Word2Vec模型和Word2Vec向量。然後只需運行query.py如下: python3 -s query.py <index_directory_path> 。
該項目是用Python 3.11.5(在此處下載)開發和測試的。任何使用不同版本的使用都可能導致錯誤。
模塊要求列出在需求中。 txt。
項目成員:墨西尼·西蒙(Mussini Simone),錫耶納·安德里亞(Siena Andrea),斯托莫(Stomeo)