Покупка нового автомобиля может быть сложной и сложной из -за огромного количества автопроизводителей и моделей, каждый из которых со своими плюсами, минусами и специальными функциями. Эта поисковая система направлена на то, чтобы помочь людям отфильтровать отзывы для автомобильных моделей, предложив для них наиболее интересные и актуальные.
Создает приблизительно 300 000 файлов из указанного файла .csv , приведенного в качестве первого аргумента, и хранит их в каталоге, указанном в качестве второго аргумента. Каждый файл соответствует строке в файле .csv , с каждым аргументом, разделенным Newline. Это формирует базовый набор данных для создания инвертированного индекса.
Параллельная версия dataset_generator.py , которая одновременно создает набор данных, сокращая время примерно на 33%. Этот вывод основан на различных тестах, проведенных на разных ПК.
Этот скрипт создает инвертированный индекс из файлов, сгенерированных с помощью 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 для выхода Укриста не работают на запросе с указанными полями (Ex. maker:a* ), потому что поля maker и model устанавливаются в качестве идентификатора в определении схемы, чтобы избежать предварительной обработки их, поскольку это ухудшает результаты запроса.
Модуль, который содержит классы и методы для пользовательской оценки различных моделей.
Текущие модели:
Полнотекстовая модель: использует 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> Я предлагаю попробовать демо индекса, прежде чем создавать весь один, так как этот скрипт вычисляет настроение каждого файла во время генерации индекса, и в зависимости от спецификаций вашего ПК, это может занять давнее (это потребовалось мне ~ 8 часов для 1 -й версии полной и ~ 20 мин.
Запрос индекса: после того, как вы загрузили или создали индекс, теперь вы можете загрузить модель Word2VEC и векторы Word2VEC в рабочем каталоге. Затем просто запустите query.py следующим образом: python3 -s query.py <index_directory_path> .
Этот проект был разработан и протестирован с помощью Python 3.11.5 (скачать здесь). Любое использование другой версии может вызвать ошибки.
Требования к модулям перечислены в требованиях.txt.
Члены проекта: Муссини Симона, Сиена Андреа, Стомео Парид