Comprar um carro novo pode ser complicado e complicado devido ao grande número de montadoras e modelos, cada um com seus próprios profissionais, contras e recursos especiais. Este mecanismo de pesquisa tem como objetivo ajudar as pessoas a filtrar as críticas para modelos de carros, sugerindo os mais interessantes e relevantes para elas primeiro.
Cria aproximadamente 300.000 arquivos de um arquivo .csv especificado como o primeiro argumento e os armazena em um diretório especificado como o segundo argumento. Cada arquivo corresponde a uma linha no arquivo .csv , com cada argumento separado por uma nova linha. Isso forma o conjunto de dados base para a criação do índice invertido.
Uma versão paralela do script dataset_generator.py que cria simultaneamente o conjunto de dados, reduzindo o tempo em aproximadamente 33%. Esta conclusão é baseada em vários testes realizados em diferentes PCs.
Este script cria o índice invertido a partir dos arquivos gerados com dataset_generator.py , pegando o diretório dos arquivos como o primeiro argumento. O índice invertido é então salvo no diretório atual.
file : nome do arquivo de uma revisãomaker : fabricante de carros do carro revisadomodel : Modelo de carro do carro revisadoyear : Ano do carro revisadoauthor : Autor da revisãodate : Data da revisãotitle : Título da Revisãorating : Classificação da revisãocontent : revisão realUm script que funciona no diretório do índice (precisa estar no diretório de trabalho) e permite fazer consultas no índice invertido.
Principais funções de pesquisa e sintaxe:
word1 word2"word1 word2"word*[word1 TO word2]"word1 word2"~Nword1 AND/OR/NOT word2word~0 para saída Os curingas não trabalham em consulta com campos especificados (por exemplo, maker:a* ), porque os campos de maker e model são definidos como ID na definição do esquema para evitar o pré -processamento deles, pois piora os resultados da consulta.
Módulo que contém as classes e métodos para a pontuação personalizada dos vários modelos.
Modelos atuais:
Modelo de texto completo: usa a pontuação do BM25F com uma ligeira música para as variáveis livres B e K1 . Modelo usado para consultar: Valores ajustados BM25F: B=0.5, K1=1.5 .
Modelo de sentimentos: usa o sentimento da revisão para influenciar a pontuação. Foi projetado para funcionar para BM25F e TF_IDF . Tem 2 tipos diferentes de pontuação:
Pontuação com o valor do sentimento: utiliza apenas o valor do sentimento da revisão para influenciar a pontuação final com a fórmula: final_score = score * sentiment_value .
Marcar com o valor e a classificação do sentimento: utiliza o valor do sentimento e a classificação da revisão para corrigir a pontuação, evitando possíveis discordâncias com a classificação e o valor do sentimento. Ele usa uma série de fórmulas com base no tipo de sentimento (consulte o Código Comentário para obter mais):
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 . Modelo Word2vec: O modelo foi treinado personalizado em nosso conjunto de dados usando a arquitetura CBOW (Saco de palavras contínuas). Para cada palavra em um documento, ele calcula um vetor e calcule a média do vetor de um documento. A média é armazenada em um arquivo .json usado pela classe Model Custom que calcula a similaridade de cosseno entre cada documento e o vetor de consulta pré -processado. Em seguida, utilize a seguinte fórmula para obter a pontuação final: final_score = score * cosine_similarity .
Criação do conjunto de dados: você pode criar o índice a partir do conjunto de dados baixando -o no link acima e colando -o no diretório do projeto. Execute dataset_generator.py da seguinte forma: python3 -s dataset_generator.py review.csv <output_directory> .
Criação do índice invertido: Depois de criar o conjunto de dados, você pode executar index_generator.py para criar o índice invertido. Use o seguinte comando: python3 -s index_generator.py <dataset_directory> Eu sugiro experimentar a demonstração do índice antes de criar o inteiro, pois esse script calcula o sentimento de cada arquivo durante a geração de índice e dependendo das especificações do seu PC, que pode demorar um pouco (isso demorou para a 1ª versão da 1ª versão da 1ª versão.
Consultando o índice: Depois de baixar ou criar o índice, agora você pode baixar o modelo Word2vec e os vetores Word2vec no diretório de trabalho. Em seguida, basta executar query.py da seguinte maneira: python3 -s query.py <index_directory_path> .
Este projeto foi desenvolvido e testado com o Python 3.11.5 (faça o download aqui). Qualquer uso de uma versão diferente pode causar erros.
Os requisitos do módulo estão listados em requisitos.txt.
Membros do projeto: Mussini Simone, Siena Andrea, Stomeo Paride