Semantic Grep - เครื่องมือค้นหาที่ใช้ Word2Vec
(github.com/arunsupe)- sgrep เป็นเครื่องมือบรรทัดคำสั่งที่ใช้ word embedding เพื่อทำการค้นหาเชิงความหมายสำหรับข้อความที่ป้อนเข้าไป
- ค้นหาคำที่มีความใกล้เคียงกันในเชิงความหมายกับคำค้น แทนการจับคู่สตริงแบบตรงตัวอย่างเดียว
- ออกแบบมาเพื่อมอบประสบการณ์การใช้งานที่คล้ายกับ grep
- ความสามารถ
- ค้นหาเชิงความหมายด้วย Word2Vec embedding
- ตั้งค่า similarity threshold ได้
- แสดงบริบทรอบบรรทัดที่ตรงกันทั้งก่อนและหลัง
- แสดงผลแบบไฮไลต์สีสำหรับคำที่ตรงกันและหมายเลขบรรทัด
- รองรับการอ่านจากไฟล์หรือ standard input
- ตั้งค่าได้ผ่านไฟล์ JSON และอาร์กิวเมนต์บรรทัดคำสั่ง
- ตัวอย่างการใช้งาน
- ค้นหาคำที่มีความหมายใกล้เคียงกับ "death" ใน "The Old Man and the Sea" ของ Hemingway พร้อมบริบทและหมายเลขบรรทัด:
curl -s 'https://gutenberg.ca/ebooks/hemingwaye-oldmanandthesea/…' \ | sgrep -C 2 -n -threshold 0.55 death - คำสั่งนี้จะทำสิ่งต่อไปนี้:
- ดึงข้อความของ "The Old Man and the Sea" จาก Project Gutenberg Canada
- pipe ข้อความเข้าไปยัง sgrep
- ค้นหาคำที่มีความหมายใกล้เคียงกับ "death"
- ตั้งค่า similarity threshold เป็น 0.55 (-threshold 0.55)
- แสดงบริบท 2 บรรทัดก่อนและหลังแต่ละผลลัพธ์ที่ตรงกัน (-C 2)
- แสดงหมายเลขบรรทัด (-n)
- เอาต์พุตจะแสดงคะแนนความคล้าย คำที่ถูกเน้น บริบท และหมายเลขบรรทัด
- ค้นหาคำที่มีความหมายใกล้เคียงกับ "death" ใน "The Old Man and the Sea" ของ Hemingway พร้อมบริบทและหมายเลขบรรทัด:
- Word2Vec model
- sgrep ต้องใช้โมเดล Word2Vec ในรูปแบบไบนารี สามารถใช้โมเดลที่ฝึกไว้ล่วงหน้า เช่น Word2Vec ของ Google หรือฝึกเองด้วยเครื่องมืออย่าง gensim ได้
- ดาวน์โหลดไฟล์ .bin มาไว้ในเครื่องและอัปเดต config.json
- Word2Vec ของ Google: https://github.com/mmihaltz/word2vec-GoogleNews-vectors
- เวอร์ชันแบบ slim: โมเดล GoogleNews-vectors-negative300-SLIM.bin.gz https://github.com/eyaler/word2vec-slim/ (ขอบคุณ eyaler)
- download-model.sh เป็นสคริปต์ตัวช่วยแบบง่ายที่บันทึกโมเดล word2vec ขนาดเล็กที่ eyaler โฮสต์ไว้ลงในไดเรกทอรี models/googlenews-slim/
สรุปโดย GN⁺
- sgrep เป็นเครื่องมือที่ใช้ word embedding เพื่อค้นหาคำที่มีความหมายใกล้เคียงกันในข้อความ
- มอบประสบการณ์การใช้งานคล้าย grep แต่มีความสามารถที่ไปไกลกว่าการจับคู่สตริงแบบตรงตัว
- ใช้โมเดล Word2Vec ในการตัดสินความคล้าย และสามารถใช้งานได้อย่างยืดหยุ่นผ่านตัวเลือกการตั้งค่าหลากหลาย
- มีประโยชน์สำหรับงานวิเคราะห์ข้อความและงานประมวลผลภาษาธรรมชาติ โดยเฉพาะเมื่อจำเป็นต้องค้นหาแบบอิงบริบท
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ขณะแกะอ่านโค้ด มีการแชร์ทิปเล็ก ๆ น้อย ๆ หลายข้อ
ไอเดียนี้มีประโยชน์มาก จนสงสัยว่าทำไมตัวเองไม่เคยนึกถึง
มีทั้งเครื่องมือและบริษัทชื่อ semgrep อยู่แล้ว
ถ้าเครื่องมือนี้จัดการกับวลีเชิงอธิบายหรือวลีผสมได้ ก็จะมีประโยชน์มาก
เป็นเครื่องมือที่เจ๋งมาก
เครื่องมือนี้เจ๋งมากและอยากลองใช้จริง ๆ
เสนอ fltr เป็นเครื่องมือคล้ายกัน
เจ๋งมาก และสงสัยว่าสามารถค้นหาชื่อไฟล์ได้ด้วยหรือไม่
ได้เจอเครื่องมือที่เจ๋งมาก