يمكن أن يكون شراء سيارة جديدة أمرًا صعبًا ومعقدًا بسبب العدد الهائل من صانعي السيارات والموديلات ، ولكل منها إيجابياتها وسلبياتها وميزاتها الخاصة. يهدف محرك البحث هذا إلى مساعدة الأشخاص على تصفية مراجعات نماذج السيارات ، مما يشير إلى أكثرها إثارة وثيقة الصلة بها أولاً.
ينشئ ما يقرب من 300000 ملف من ملف .csv محدد كوسيطة أولى ويخزنهم في دليل محدد كوسيطة ثانية. يتوافق كل ملف مع سطر في ملف .csv ، مع كل وسيطة مفصولة بواسطة سطر جديد. هذا يشكل مجموعة البيانات الأساسية لإنشاء الفهرس المقلوب.
إصدار مواز من Script 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 للخروج لا تعمل الأرقام البرية على الاستعلام مع الحقول المحددة (على سبيل المثال ، maker:a* ) ، لأن الحقول maker model يتم تعيينها كمعرف في تعريف المخطط لتجنب المعالجة المسبقة لها ، لأنه يزداد سوءًا لنتائج الاستعلام.
الوحدة النمطية التي تحتوي على فئات وطرق للتسجيل المخصص في مختلف النماذج.
النماذج الحالية:
نموذج النص الكامل: يستخدم تسجيل BM25F مع لحن بسيط للمتغيرات الحرة B و K1 . النموذج المستخدم للاستعلام: BM25F القيم المضبوطة: B=0.5, K1=1.5 .
نموذج المشاعر: يستخدم شعور المراجعة للتأثير على النتيجة. لقد تم تصميمه للعمل لكل من BM25F و TF_IDF . لديها نوعان مختلفان من التسجيل:
التسجيل مع قيمة المشاعر: يستخدم فقط قيمة المشاعر للمراجعة للتأثير على النتيجة النهائية مع الصيغة: 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 ساعات للنسخة 1st من واحد واحد تقريبًا من 20 دقيقة.
الاستعلام عن الفهرس: بعد تنزيل أو إنشاء الفهرس ، يمكنك الآن تنزيل نموذج Word2VEC وناقلات Word2VEC في دليل العمل. ثم ببساطة تشغيل query.py كما يلي: python3 -s query.py <index_directory_path> .
تم تطوير هذا المشروع واختباره باستخدام Python 3.11.5 (تنزيل هنا). أي استخدام لإصدار مختلف قد يسبب أخطاء.
يتم سرد متطلبات الوحدة النمطية في المتطلبات.
أعضاء المشروع: موسيني سيمون ، سيينا أندريا ، ستومو باريد