由于大量的汽车制造商和型号,都有自己的优点,缺点和特殊功能,因此购买新车可能会很棘手且复杂。该搜索引擎旨在帮助人们过滤汽车模型的评论,并首先提出最有趣和最相关的评论。
从指定的.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)