การค้นหาแพ็คเกจ Python ที่เหมาะสมบน PYPI อาจเป็นเรื่องยากเล็กน้อยเนื่องจาก PYPI ไม่ได้ออกแบบมาเพื่อค้นหาแพ็คเกจได้อย่างง่ายดาย ตัวอย่างเช่นคุณสามารถค้นหาคำว่า "พล็อต" และรับรายการแพ็คเกจหลายร้อยชุดที่มีคำว่า "พล็อต" ตามลำดับแบบสุ่ม
แรงบันดาลใจจากโพสต์บล็อกนี้เกี่ยวกับการค้นหาบทความ arxiv โดยใช้เวกเตอร์ฝังตัวฉันตัดสินใจที่จะสร้างแอปพลิเคชันขนาดเล็กที่ช่วยให้คุณค้นหาแพ็คเกจ Python ด้วยวิธีการที่คล้ายกัน ตัวอย่างเช่นคุณสามารถถามได้ว่า "ฉันต้องการสร้างพล็อตและการสร้างภาพข้อมูลที่ดี" และมันจะให้รายการแพ็คเกจสั้น ๆ ที่สามารถช่วยคุณได้
โครงการทำงานโดยการรวบรวมบทสรุปโครงการและคำอธิบายสำหรับแพ็คเกจทั้งหมดบน PYPI ด้วยการดาวน์โหลดมากกว่า 100 สัปดาห์ สิ่งเหล่านี้จะถูกแปลงเป็นตัวแทนเวกเตอร์โดยใช้หม้อแปลงประโยค เมื่อผู้ใช้ป้อนแบบสอบถามจะถูกแปลงเป็นตัวแทนเวกเตอร์และคำอธิบายแพคเกจที่คล้ายกันมากที่สุดจะถูกดึงมาจากฐานข้อมูลเวกเตอร์ น้ำหนักเพิ่มเติมจะได้รับจากปริมาณการดาวน์โหลดรายสัปดาห์ก่อนที่จะนำเสนอผลลัพธ์ให้กับผู้ใช้ในแผงควบคุม
โครงการใช้เทคโนโลยีต่อไปนี้:
.env โดยค่าเริ่มต้นข้อมูลทั้งหมดจะถูกเก็บไว้ในเครื่องในพื้นที่ของคุณ นอกจากนี้ยังเป็นไปได้ที่จะจัดเก็บข้อมูลสำหรับ API บนพื้นที่เก็บข้อมูล Azure Blob และให้ API อ่านจากที่นั่น ในการทำเช่นนั้นให้สร้างไฟล์ .env :
cp .env.template .envและกรอกข้อมูลในฟิลด์ที่ต้องการ
สคริปต์การตั้งค่าจะ:
dataSTORAGE_BACKEND ถูกตั้งค่าเป็น BLOB : อัปโหลดชุดข้อมูลไปยังที่เก็บข้อมูล Blobมีสามวิธีในการเรียกใช้สคริปต์การตั้งค่าขึ้นอยู่กับว่าคุณมีชุดเครื่องมือ NVIDIA GPU และ NVIDIA คอนเทนเนอร์ที่ติดตั้ง โปรดเรียกใช้สคริปต์การตั้งค่าโดยใช้วิธีการที่ใช้ได้กับคุณ:
บันทึก
ชุดข้อมูลมีแพ็คเกจประมาณ 100.000 แพ็คเกจบน PYPI พร้อมการดาวน์โหลดมากกว่า 100 สัปดาห์ เพื่อเพิ่มความเร็วในการพัฒนาในท้องถิ่นคุณสามารถลดจำนวนแพ็คเกจที่ประมวลผลในเครื่องโดยลดค่าของ FRAC_DATA_TO_INCLUDE ใน pypi_scout/config.py
เริ่มแอปพลิเคชันโดยใช้ Docker Compose:
docker-compose upหลังจากนั้นไม่นานแอปพลิเคชันของคุณจะอยู่ที่ http: // localhost: 3000
ชุดข้อมูลสำหรับโครงการนี้ถูกสร้างขึ้นโดยใช้ชุดข้อมูล PYPI บน Google BigQuery แบบสอบถาม SQL ที่ใช้สามารถพบได้ใน pypi_bigquery.sql ชุดข้อมูลผลลัพธ์มีให้บริการเป็นไฟล์ CSV บน Google Drive