Der Kauf eines neuen Autos kann aufgrund der großen Anzahl von Autoherstellern und Modellen mit jeweils eigenen Vorstellungen, Nachteilen und besonderen Merkmalen schwierig und kompliziert sein. Diese Suchmaschine soll Menschen helfen, Bewertungen für Automodelle zu filtern, was zuerst die interessantesten und relevantesten für sie hindeutet.
Erstellt ungefähr 300.000 Dateien aus einer angegebenen .csv -Datei als erstes Argument und speichert sie in einem als zweiten Argument angegebenen Verzeichnis. Jede Datei entspricht einer Zeile in der .csv -Datei, wobei jedes Argument durch eine neue Linie getrennt ist. Dies bildet den Basisdatensatz für die Erstellung des umgekehrten Index.
Eine parallele Version des Skript dataset_generator.py , das den Datensatz gleichzeitig erstellt und die Zeit um ca. 33%verkürzt. Diese Schlussfolgerung basiert auf verschiedenen Tests, die an verschiedenen PCs durchgeführt wurden.
Dieses Skript erstellt den invertierten Index aus den mit dataset_generator.py generierten Dateien, wobei das Verzeichnis der Dateien als erstes Argument verwendet wird. Der umgekehrte Index wird dann im aktuellen Verzeichnis gespeichert.
file : Dateiname einer Bewertungmaker : Automobilhersteller des überprüften Autosmodel : Automodell des überprüften Autosyear : Jahr des überprüften Autosauthor : Autor der Überprüfungdate : Datum der Überprüfungtitle : Titel der Bewertungrating : Bewertung der Überprüfungcontent : Tatsächliche BewertungEin Skript, das auf dem Verzeichnis des Index funktioniert (muss im Arbeitsverzeichnis liegen) und ermöglicht die Befragung von Abfragen im umgekehrten Index.
Hauptsuchfunktionen und Syntax:
word1 word2"word1 word2"word*[word1 TO word2]"word1 word2"~Nword1 AND/OR/NOT word2word~0 für den Ausgang Wildcards arbeiten nicht an Abfragen mit bestimmten Feldern (z. B. maker:a* ), da maker und model in der Schema -Definition als ID eingestellt werden, um die Vorverarbeitung von ihnen zu vermeiden, da dies die Abfrageergebnisse verschlechtert.
Modul, das die Klassen und Methoden für die benutzerdefinierte Bewertung der verschiedenen Modelle enthält.
Aktuelle Modelle:
Volltextmodell: Verwendet BM25F-Bewertung mit einer leichten Melodie zu den freien Variablen B und K1 . Modell, das zur Abfrage verwendet wird: BM25F -abgestimmte Werte: B=0.5, K1=1.5 .
STIENT MODELL: Verwendet das Gefühl der Überprüfung, um die Punktzahl zu beeinflussen. Es wurde so konzipiert, dass es sowohl für BM25F als auch für TF_IDF funktioniert. Es hat 2 verschiedene Arten von Wertungen:
Bewertung mit Sentimentwert: Verwendet nur den Stimmungswert der Überprüfung, um die Endbewertung mit der Formel zu beeinflussen: final_score = score * sentiment_value .
Bewertung mit Stimmungswert und Ranking: Verwendet den Stimmungswert und die Bewertung der Überprüfung, um die Punktzahl festzulegen, wodurch mögliche Diskordien mit der Bewertung und des Stimmungswerts vermieden wird. Es wird eine Reihe von Formeln verwendet, die auf der Art des Gefühls basieren (siehe Code -Kommentar für mehr):
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 oder if rating < 3: final_score = score * sentiment_value * 0.4 + rating/5 . Word2VEC -Modell: Das Modell wurde mithilfe der CBOW -Architektur (Continuous -Sack of Words) auf unserem Datensatz speziell geschult. Für jedes Wort in einem Dokument berechnet es einen Vektor und berechnet dann den Vektormittelwert eines Dokuments. Der Mittelwert wird in einer .json -Datei gespeichert, die von der benutzerdefinierten Modellklasse verwendet wird, die die Kosinus -Ähnlichkeit zwischen jedem Dokument und dem vorverarbeiteten Abfragevektor berechnet. Verwenden Sie dann die folgende Formel, um die Endergebnis zu erhalten: final_score = score * cosine_similarity .
Erstellung des Datensatzes: Sie können den Index aus dem Datensatz aus dem Link über den obigen Link erstellen und im Projektverzeichnis einfügen. Führen Sie dataset_generator.py wie folgt aus: python3 -s dataset_generator.py review.csv <output_directory> .
Erstellung eines invertierten Index: Sobald Sie den Datensatz erstellt haben, können Sie index_generator.py ausführen, um den invertierten Index zu erstellen. Verwenden Sie den folgenden Befehl: python3 -s index_generator.py <dataset_directory>
Abfragen des Index: Nachdem Sie den Index heruntergeladen oder erstellt haben, können Sie jetzt das Word2VEC -Modell und die Word2VEC -Vektoren im Arbeitsverzeichnis herunterladen. Dann einfach query.py wie folgt ausführen: python3 -s query.py <index_directory_path> .
Dieses Projekt wurde mit Python 3.11.5 entwickelt und getestet (hier herunterladen). Jede Verwendung einer anderen Version kann Fehler verursachen.
Die Modulanforderungen sind in Anforderungen aufgeführt.
Projektmitglieder: Musssini Simone, Siena Andrea, Stomeo Paride