วิธีการ. similarity ใน SpaCy คำนวณอย่างไร


13

ไม่แน่ใจว่านี่เป็นไซต์สแต็กที่ถูกต้องหรือไม่

วิธีการ. ความคุ้นเคยทำงานอย่างไร

ว้าว spaCy ยอดเยี่ยมมาก! รูปแบบ tfidf นั้นง่ายกว่า แต่ w2v มีโค้ดเพียงบรรทัดเดียว!

ในบทช่วยสอน 10 บรรทัดของเขา บน spaCy andrazhribernik แสดงให้เราเห็นถึงวิธีการ. similarity ที่สามารถเรียกใช้บนโทเค็น, เซ็นต์, การส่งคำ, ชิ้นคำและเอกสาร

หลังจากnlp = spacy.load('en')และdoc = nlp(raw_text) เราสามารถทำ. สอบถามความคล้ายคลึงกันระหว่างโทเค็นและชิ้น อย่างไรก็ตามการคำนวณอะไรที่อยู่เบื้องหลังของฉากใน.similarityวิธีนี้?

SpaCy มีความเรียบง่ายอย่างไม่น่าเชื่อ.vectorซึ่งคำนวณเวกเตอร์ w2v ที่ผ่านการฝึกอบรมจากแบบจำลอง GloVe (วิธี.tfidfหรือ.fasttextวิธีการที่ยอดเยี่ยมจะเป็นอย่างไร)

แบบจำลองนั้นคำนวณความคล้ายคลึงโคไซน์ระหว่างสอง w2v, .vector, เวกเตอร์หรือการเปรียบเทียบเมทริกซ์อื่น ๆ หรือไม่? ข้อมูลเฉพาะไม่ชัดเจนในเอกสาร ; ความช่วยเหลือใด ๆ ชื่นชม!


1
"วิธีการ. tfidf หรือ. fasttext ยอดเยี่ยมเพียงใด" เอกสารให้เป็นตัวอย่างของการแทนที่เวกเตอร์ถุงมือกับ FastText อาจจะไม่เหมือนกันทุกประการ Github
Carl G

คำตอบ:


12

พบคำตอบสั้น ๆ ว่าใช่:

เชื่อมโยงไปยังรหัส Souce

return numpy.dot(self.vector, other.vector) / (self.vector_norm * other.vector_norm)

ดูเหมือนว่าสูตรสำหรับการคำนวณความเหมือนกันของโคไซน์และดูเหมือนว่าเวกเตอร์จะถูกสร้างขึ้นด้วย SpaCy .vectorซึ่งเอกสารกล่าวว่าได้รับการฝึกฝนจากรุ่น w2v ของ GloVe


6

โดยค่าเริ่มต้นแล้วมันก็มีความคล้ายโคไซน์โดยมีเวกเตอร์เฉลี่ยอยู่เหนือเอกสารสำหรับคำที่หายไป

doc.user_hooks['similarity']นอกจากนี้คุณยังสามารถปรับแต่งนี้โดยการตั้งค่าเบ็ดไป ส่วนประกอบของไปป์ไลน์นี้หุ้มฟังก์ชั่นที่คล้ายคลึงกันทำให้ง่ายต่อการปรับแต่งความคล้ายคลึงกัน:

https://github.com/explosion/spaCy/blob/develop/spacy/pipeline.pyx#L50


ในทางเทคนิคแล้วคุณดูเหมือนจะเชื่อมโยงกับSentenceSegmenterกลยุทธ์
Carl G
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.