L'achat d'une nouvelle voiture peut être délicat et compliqué en raison du grand nombre de constructeurs automobiles et de modèles, chacun avec ses propres avantages, ses inconvénients et ses fonctionnalités spéciales. Ce moteur de recherche vise à aider les gens à filtrer les avis sur les modèles de voitures, suggérant d'abord les plus intéressants et les plus pertinents.
Crée environ 300 000 fichiers à partir d'un fichier .csv spécifié donné comme le premier argument et les stocke dans un répertoire spécifié comme deuxième argument. Chaque fichier correspond à une ligne dans le fichier .csv , avec chaque argument séparé par une nouvelle ligne. Cela forme l'ensemble de données de base pour la création de l'index inversé.
Une version parallèle du script dataset_generator.py qui créent simultanément l'ensemble de données, réduisant le temps d'environ 33%. Cette conclusion est basée sur divers tests effectués sur différents PC.
Ce script crée l'index inversé à partir des fichiers générés avec dataset_generator.py , prenant le répertoire des fichiers comme premier argument. L'indice inversé est ensuite enregistré dans le répertoire actuel.
file : nom de fichier d'une revuemaker : fabricant de voitures de la voiture examinéemodel : Modèle de voiture de la voiture examinéeyear : année de la voiture examinéeauthor : Auteur de la revuedate : date de l'examentitle : Titre de la revuerating : note de la revuecontent : revue réelleUn script qui fonctionne sur le répertoire de l'index (doit être dans le répertoire de travail) et permet de demander des requêtes sur l'index inversé.
Fonctions de recherche principales et syntaxe:
word1 word2"word1 word2"word*[word1 TO word2]"word1 word2"~Nword1 AND/OR/NOT word2word~0 pour la sortie Les caractères génériques ne fonctionnent pas sur la requête avec des champs spécifiés (ex. maker:a* ), car les champs maker et model sont définis comme ID dans la définition du schéma pour éviter leur prétraitement, car il aggrave les résultats de la requête.
Module qui contient les classes et les méthodes pour la notation personnalisée des différents modèles.
Modèles actuels:
Modèle de texte complet: utilise la notation BM25F avec un léger mélodie aux variables libres B et K1 . Modèle utilisé pour interroger: BM25F Valeurs réglées: B=0.5, K1=1.5 .
Modèle de sentiment: utilise le sentiment de la revue pour influencer le score. Il a été conçu pour fonctionner à la fois pour BM25F et TF_IDF . Il a 2 types de score différents:
La notation avec la valeur du sentiment: utilise uniquement la valeur de sentiment de la revue pour influencer le score final avec la formule: final_score = score * sentiment_value .
La notation avec la valeur du sentiment et le classement: utilise la valeur du sentiment et la note de l'examen pour corriger le score, en évitant toute discordance possible avec la notation et la valeur du sentiment. Il utilise une série de formules basées sur le type de sentiment (voir le commentaire du code pour en savoir plus):
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 ou if rating < 3: final_score = score * sentiment_value * 0.4 + rating/5 . Modèle Word2Vec: Le modèle a été formé sur mesure sur notre ensemble de données à l'aide de l'architecture CBOW (sac continu de mots). Pour chaque mot dans un document, il calcule un vecteur puis calcule la moyenne vectorielle d'un document. La moyenne est stockée dans un fichier .json qui est utilisé par la classe de modèle personnalisée qui calcule la similitude du cosinus entre chaque document et le vecteur de requête prétraité. Utilisez ensuite la formule suivante pour obtenir le score final: final_score = score * cosine_similarity .
Création de l'ensemble de données: vous pouvez créer l'index à partir de l'ensemble de données en le téléchargeant à partir du lien ci-dessus et en le collant dans le répertoire du projet. Exécutez dataset_generator.py comme suit: python3 -s dataset_generator.py review.csv <output_directory> .
Création de l'index inversé: une fois que vous avez créé l'ensemble de données, vous pouvez exécuter index_generator.py pour créer l'index inversé. Utilisez la commande suivante: python3 -s index_generator.py <dataset_directory> Je suggère d'essayer la démo de l'index avant de créer celle entière, car ce script calcule le sentiment de chaque fichier pendant la génération d'index, et en fonction des spécifications de votre PC, cela pourrait prendre un certain temps (il m'a fallu ~ 8 heures pour la première version de la première et ~ 20 min pour la démo).
Interroger l'index: Après avoir téléchargé ou créé l'index, vous pouvez maintenant télécharger le modèle Word2Vec et les vecteurs Word2Vec dans le répertoire de travail. Ensuite, exécutez simplement query.py comme suit: python3 -s query.py <index_directory_path> .
Ce projet a été développé et testé avec Python 3.11.5 (télécharger ici). Toute utilisation d'une version différente peut entraîner des erreurs.
Les exigences du module sont répertoriées dans les exigences.txt.
Membres du projet: Mussini Simone, Siena Andrea, Stomeo Paride