Comprar un automóvil nuevo puede ser complicado y complicado debido a la gran cantidad de fabricantes de automóviles y modelos, cada uno con sus propios pros, contras y características especiales. Este motor de búsqueda tiene como objetivo ayudar a las personas a filtrar las revisiones para los modelos de automóviles, lo que sugiere los más interesantes y relevantes para ellos primero.
Crea aproximadamente 300,000 archivos de un archivo .csv especificado dado como el primer argumento y los almacena en un directorio especificado como el segundo argumento. Cada archivo corresponde a una línea en el archivo .csv , con cada argumento separado por una nueva línea. Esto forma el conjunto de datos base para la creación del índice invertido.
Una versión paralela del script dataset_generator.py que crea simultáneamente el conjunto de datos, reduciendo el tiempo en aproximadamente un 33%. Esta conclusión se basa en varias pruebas realizadas en diferentes PC.
Este script crea el índice invertido de los archivos generados con dataset_generator.py , tomando el directorio de los archivos como el primer argumento. El índice invertido se guarda en el directorio actual.
file : nombre de archivo de una revisiónmaker : fabricante de automóviles del automóvil revisadomodel : Modelo de automóvil del auto revisadoyear : Año del auto revisadoauthor : Autor de la revisióndate : Fecha de la revisióntitle : Título de la revisiónrating : calificación de la revisióncontent : revisión realUn script que funciona en el directorio del índice (debe estar en el directorio de trabajo) y permite solicitar consultas en el índice invertido.
Principales funciones de búsqueda y sintaxis:
word1 word2"word1 word2"word*[word1 TO word2]"word1 word2"~Nword1 AND/OR/NOT word2word~0 para salir Los comodines no funcionan en la consulta con campos especificados (Ex. maker:a* ), porque los campos maker y model se establecen como ID en la definición de esquema para evitar el preprocesamiento de ellos, ya que empeora los resultados de la consulta.
Módulo que contiene las clases y métodos para la puntuación personalizada de los diversos modelos.
Modelos actuales:
Modelo de texto completo: utiliza la puntuación BM25F con una ligera melodía a las variables libres B y K1 . Modelo utilizado para consultar: valores sintonizados BM25F: B=0.5, K1=1.5 .
Modelo de sentimiento: utiliza el sentimiento de la revisión para influir en la puntuación. Ha sido diseñado para funcionar tanto para BM25F como TF_IDF . Tiene 2 tipos diferentes de puntuación:
Puntuación con valor de sentimiento: utiliza solo el valor del sentimiento de la revisión para influir en la puntuación final con la fórmula: final_score = score * sentiment_value .
Calificación con valor de sentimiento y clasificación: utiliza el valor del sentimiento y la calificación de la revisión para arreglar la puntuación, evitando cualquier posible discordancia con la calificación y el valor del sentimiento. Utiliza una serie de fórmulas basadas en el tipo de sentimiento (consulte el comentario del código para más):
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 o if rating < 3: final_score = score * sentiment_value * 0.4 + rating/5 . Modelo de Word2Vec: el modelo se ha capacitado a medida en nuestro conjunto de datos utilizando la arquitectura CBOW (Bolsa de palabras continua). Para cada palabra en un documento, calcula un vector y luego calcula la media vector de un documento. La media se almacena en un archivo .json que utiliza la clase de modelo personalizado que calcula la similitud de coseno entre cada documento y el vector de consulta preprocesada. Luego utilice la siguiente fórmula para obtener el puntaje final: final_score = score * cosine_similarity .
Creación del conjunto de datos: puede crear el índice a partir del conjunto de datos descargándolo desde el enlace anterior y pegándolo en el directorio del proyecto. Ejecute dataset_generator.py de la siguiente manera: python3 -s dataset_generator.py review.csv <output_directory> .
Creación del índice invertido: una vez que haya creado el conjunto de datos, puede ejecutar index_generator.py para crear el índice invertido. Use el siguiente comando: python3 -s index_generator.py <dataset_directory> Sugiero probar la demostración del índice antes de crear el completo, ya que este script calcula el sentimiento de cada archivo durante la generación de índice, y dependiendo de las especificaciones de su PC, esto podría tomar un tiempo (me tomó ~ 8 horas para la primera versión de la completa y ~ 20 min para el Demo uno).
Consulta el índice: después de haber descargado o creado el índice, ahora puede descargar el modelo Word2Vec y los vectores Word2Vec en el directorio de trabajo. Luego, simplemente ejecute query.py de la siguiente manera: python3 -s query.py <index_directory_path> .
Este proyecto fue desarrollado y probado con Python 3.11.5 (descargue aquí). Cualquier uso de una versión diferente puede causar errores.
Los requisitos del módulo se enumeran en requisitos.txt.
Miembros del proyecto: Mussini Simone, Siena Andrea, Stomeo Paride