การซื้อรถใหม่อาจเป็นเรื่องยุ่งยากและซับซ้อนเนื่องจากผู้ผลิตรถยนต์และรุ่นจำนวนมากแต่ละคนมีข้อดีข้อเสียและคุณสมบัติพิเศษของตัวเอง เครื่องมือค้นหานี้มีจุดมุ่งหมายเพื่อช่วยให้ผู้คนกรองความคิดเห็นสำหรับรุ่นรถยนต์แนะนำสิ่งที่น่าสนใจและเกี่ยวข้องที่สุดสำหรับพวกเขาก่อน
สร้างไฟล์ประมาณ 300,000 ไฟล์จากไฟล์ .csv ที่ระบุเป็นอาร์กิวเมนต์แรกและเก็บไว้ในไดเรกทอรีที่ระบุเป็นอาร์กิวเมนต์ที่สอง แต่ละไฟล์สอดคล้องกับบรรทัดในไฟล์ .csv โดยแต่ละอาร์กิวเมนต์คั่นด้วยบรรทัดใหม่ สิ่งนี้เป็นชุดข้อมูลพื้นฐานสำหรับการสร้างดัชนีคว่ำ
เวอร์ชันคู่ขนานของ 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 สำหรับการออก Wildcards ไม่ทำงานกับการสืบค้นด้วยฟิลด์ที่ระบุ (เช่น maker:a* ) เนื่องจากฟิลด์ maker และ model ถูกตั้งค่าเป็น ID ในนิยามสคีมาเพื่อหลีกเลี่ยงการประมวลผลล่วงหน้าของพวกเขาเนื่องจากมันแย่ลงผลลัพธ์การสืบค้น
โมดูลที่มีคลาสและวิธีการสำหรับการให้คะแนนแบบกำหนดเองของรุ่นต่างๆ
รุ่นปัจจุบัน:
โมเดลข้อความแบบเต็ม: ใช้การให้คะแนน 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/5final_score = score * sentiment_value * 1.2 - rating/5if 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 (Bag of Words ต่อเนื่อง) สำหรับแต่ละคำในเอกสารจะคำนวณเวกเตอร์แล้วคำนวณค่าเฉลี่ยเวกเตอร์ของเอกสาร ค่าเฉลี่ยจะถูกเก็บไว้ในไฟล์ .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> ฉันขอแนะนำให้ลองสาธิตดัชนีก่อนที่จะสร้างทั้งหมดเนื่องจากสคริปต์นี้คำนวณความเชื่อมั่นของแต่ละไฟล์ในระหว่างการสร้างดัชนีและขึ้นอยู่กับรายละเอียดของพีซีของคุณ
การสอบถามดัชนี: หลังจากที่คุณดาวน์โหลดหรือสร้างดัชนีตอนนี้คุณสามารถดาวน์โหลดโมเดล Word2vec และเวกเตอร์ Word2vec ในไดเรกทอรีการทำงาน จากนั้นเพียงเรียกใช้ query.py ดังนี้: python3 -s query.py <index_directory_path>
โครงการนี้ได้รับการพัฒนาและทดสอบด้วย Python 3.11.5 (ดาวน์โหลดที่นี่) การใช้เวอร์ชันอื่นอาจทำให้เกิดข้อผิดพลาด
ข้อกำหนดของโมดูลแสดงอยู่ในข้อกำหนด. txt
สมาชิกโครงการ: Mussini Simone, Siena Andrea, Stomeo Paride