Membeli mobil baru bisa rumit dan rumit karena banyaknya pembuat mobil dan model, masing -masing dengan pro, kontra, dan fitur khusus. Mesin pencari ini bertujuan untuk membantu orang menyaring ulasan untuk model mobil, menunjukkan yang paling menarik dan relevan bagi mereka terlebih dahulu.
Membuat sekitar 300.000 file dari file .csv tertentu yang diberikan sebagai argumen pertama dan menyimpannya di direktori yang ditentukan sebagai argumen kedua. Setiap file sesuai dengan baris dalam file .csv , dengan setiap argumen dipisahkan oleh newline. Ini membentuk dataset dasar untuk pembuatan indeks terbalik.
Versi paralel dari skrip dataset_generator.py yang secara bersamaan membuat dataset, mengurangi waktu sekitar 33%. Kesimpulan ini didasarkan pada berbagai tes yang dilakukan pada PC yang berbeda.
Script ini membuat indeks terbalik dari file yang dihasilkan dengan dataset_generator.py , mengambil direktori file sebagai argumen pertama. Indeks terbalik kemudian disimpan dalam direktori saat ini.
file : nama file ulasanmaker : Produsen mobil dari mobil yang ditinjaumodel : Model mobil dari mobil yang diulasyear : Tahun mobil yang ditinjauauthor : Penulis Ulasandate : Tanggal Tinjauantitle : Judul ulasanrating : Peringkat ulasancontent : Tinjauan AktualSkrip yang berfungsi pada direktori indeks (perlu berada di direktori kerja) dan memungkinkan meminta pertanyaan pada indeks terbalik.
Fungsi pencarian utama dan sintaks:
word1 word2"word1 word2"word*[word1 TO word2]"word1 word2"~Nword1 AND/OR/NOT word2word~0 untuk keluar Wildcard tidak berfungsi pada kueri dengan bidang yang ditentukan (Ex. maker:a* ), karena bidang maker dan model ditetapkan sebagai ID dalam definisi skema untuk menghindari preprocessing dari mereka, karena itu memperburuk hasil kueri.
Modul yang berisi kelas dan metode untuk penilaian khusus dari berbagai model.
Model saat ini:
Model teks lengkap: Menggunakan skor BM25F dengan sedikit nada ke variabel gratis B dan K1 . Model yang digunakan untuk meminta: Nilai Tuned BM25F: B=0.5, K1=1.5 .
Model Sentimen: Menggunakan sentimen ulasan untuk mempengaruhi skor. Ini telah dirancang untuk bekerja untuk BM25F dan TF_IDF . Ini memiliki 2 jenis penilaian yang berbeda:
Penilaian dengan nilai sentimen: hanya menggunakan nilai sentimen ulasan untuk mempengaruhi skor akhir dengan rumus: final_score = score * sentiment_value .
Penilaian dengan nilai sentimen dan peringkat: Memanfaatkan nilai sentimen dan peringkat ulasan untuk memperbaiki skor, menghindari segala kemungkinan perbedaan dengan peringkat dan nilai sentimen. Ini menggunakan serangkaian rumus berdasarkan jenis sentimen (lihat Kode Komentar untuk lebih):
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 atau if rating < 3: final_score = score * sentiment_value * 0.4 + rating/5 . Model Word2Vec: Model ini telah dilatih khusus pada dataset kami menggunakan arsitektur CBOW (Continuous Bag of Words). Untuk setiap kata dalam dokumen itu menghitung vektor dan kemudian menghitung rata -rata vektor dari dokumen. Rata -rata disimpan dalam file .json yang digunakan oleh kelas model khusus yang menghitung kesamaan kosinus antara setiap dokumen dan vektor kueri yang diproses. Kemudian gunakan formula berikut untuk mendapatkan skor akhir: final_score = score * cosine_similarity .
Pembuatan Dataset: Anda dapat membuat indeks mulai dari dataset dengan mengunduhnya dari tautan di atas dan menempelkannya di direktori proyek. Jalankan dataset_generator.py sebagai berikut: python3 -s dataset_generator.py review.csv <output_directory> .
Pembuatan indeks terbalik: Setelah Anda membuat dataset, Anda dapat menjalankan index_generator.py untuk membuat indeks terbalik. Gunakan perintah berikut: python3 -s index_generator.py <dataset_directory> Saya sarankan mencoba demo indeks sebelum membuat seluruh yang, karena skrip ini menghitung sentimen setiap file selama generasi indeks, dan tergantung pada spesifikasi PC Anda, ini mungkin memakan waktu beberapa saat (butuh satu jam untuk versi 1 dan satu -satunya untuk satu -satunya.
Meminta indeks: Setelah Anda mengunduh atau membuat indeks, Anda sekarang dapat mengunduh model Word2Vec dan vektor Word2Vec di direktori kerja. Kemudian cukup jalankan query.py sebagai berikut: python3 -s query.py <index_directory_path> .
Proyek ini dikembangkan dan diuji dengan Python 3.11.5 (unduh di sini). Penggunaan versi yang berbeda dapat menyebabkan kesalahan.
Persyaratan modul tercantum dalam persyaratan.txt.
Anggota Proyek: Mussini Simone, Siena Andrea, Stomeo Paride