ขั้นตอนวิธีปฏิบัติที่ดีที่สุดสำหรับความคล้ายคลึงของประโยค


18

ฉันมีสองประโยคคือ S1 และ S2 ซึ่งทั้งคู่มีจำนวนคำ (ปกติ) ต่ำกว่า 15

อะไรคืออัลกอริทึมที่มีประโยชน์และประสบความสำเร็จมากที่สุด (การเรียนรู้ของเครื่อง) ซึ่งอาจง่ายต่อการติดตั้ง (เครือข่ายประสาทเทียมก็โอเคยกเว้นว่าสถาปัตยกรรมนั้นซับซ้อนพอ ๆ กับ Google Inception เป็นต้น)

ฉันกำลังมองหาอัลกอริทึมที่จะทำงานได้ดีโดยไม่ต้องใช้เวลามากเกินไป มีอัลกอริทึมใดบ้างที่คุณประสบความสำเร็จและใช้งานง่าย?

สิ่งนี้สามารถทำได้ แต่ไม่จำเป็นต้องอยู่ในหมวดหมู่ของการทำคลัสเตอร์ พื้นหลังของฉันมาจากการเรียนรู้ของเครื่องดังนั้นคำแนะนำใด ๆ ยินดีต้อนรับ :)


คุณใช้อะไร ฉันยังต้องเผชิญหน้ากันต้องหาคำตอบสำหรับบทความที่เกี่ยวข้องกับ 'k' ในคลังข้อมูลที่อัพเดทอยู่ตลอดเวลา
Dileepa

คำตอบ:


16

ความคล้ายคลึงกันโคไซน์สำหรับ Vector Space อาจเป็นคำตอบคุณ: http://blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/

หรือคุณสามารถคำนวณ eigenvector ของแต่ละประโยค แต่ปัญหาคือความคล้ายคลึงกันคืออะไร?

"นี่คือต้นไม้", "นี่ไม่ใช่ต้นไม้"

หากคุณต้องการตรวจสอบความหมายของประโยคคุณจะต้องใช้ชุดข้อมูล wordvector ด้วยชุดข้อมูล wordvector คุณจะสามารถตรวจสอบความสัมพันธ์ระหว่างคำต่างๆ ตัวอย่าง: (ราชา - ชาย + หญิง = ราชินี)

Siraj Raval มีสมุดบันทึกหลามที่ดีสำหรับการสร้างชุดข้อมูล wordvector: https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE


8

วิธีการหนึ่งที่คุณสามารถลองได้คือการหาค่าเฉลี่ยของเวกเตอร์คำที่สร้างโดยอัลกอริธึมการฝังคำ (word2vec, ถุงมือ, ฯลฯ ) อัลกอริทึมเหล่านี้สร้างเวกเตอร์สำหรับแต่ละคำและความคล้ายคลึงกันในหมู่พวกเขาหมายถึงความคล้ายคลึงกันทางความหมายในหมู่คำ ในกรณีของเวกเตอร์เฉลี่ยระหว่างประโยค จุดเริ่มต้นที่ดีสำหรับการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการเหล่านี้คือบทความนี้: ความหมายของการจัดงานแต่งประโยคที่ดีที่สุด มันกล่าวถึงวิธีการฝังประโยค ฉันยังแนะนำให้คุณศึกษา Unsupervised Learning of Sentence Embeddings โดยใช้ Compositional n-Gram คุณสมบัติที่ผู้เขียนอ้างว่าวิธีการของพวกเขาเอาชนะวิธีการที่ทันสมัย พวกเขายังให้รหัสและคำแนะนำการใช้งานในrepo GitHubนี้


3

bert-as-service ( https://github.com/hanxiao/bert-as-service#building-a-qa-semantic-search-engine-in-3-minutes ) เสนอวิธีแก้ปัญหานั้น

ในการตอบคำถามของคุณการดำเนินการด้วยตนเองจากศูนย์จะค่อนข้างยากเนื่องจาก BERT ไม่ใช่ NN ที่น่ารำคาญ แต่ด้วยวิธีนี้คุณสามารถเสียบเข้ากับสัญลักษณ์ที่ใช้ประโยคที่คล้ายคลึงกันได้


2

คุณควรตรวจสอบhttps://github.com/seatgeek/fuzzywuzzy#usage fuzzywuzzy เป็นห้องสมุดที่ยอดเยี่ยมสำหรับการจับคู่สตริง / ข้อความที่ให้ตัวเลขระหว่าง 0 ถึง 100 ตามลักษณะของสองประโยคที่คล้ายกัน มันใช้ระยะทาง Levenshtein เพื่อคำนวณความแตกต่างระหว่างลำดับในแพ็คเกจที่ใช้งานง่าย นอกจากนี้ให้ตรวจสอบการโพสต์บล็อกนี้สำหรับคำอธิบายโดยละเอียดเกี่ยวกับการทำงานของ fuzzywuzzy บล็อกนี้เขียนโดยผู้เขียน fuzzywuzzy


1

บล็อกนี้มีทางออกสำหรับความคล้ายคลึงกันของข้อความสั้น ๆ พวกเขาส่วนใหญ่ใช้ BERT โครงข่ายประสาทเทียมเพื่อค้นหาความคล้ายคลึงกันระหว่างประโยค https://medium.com/@vimald8959/sentence-categorisation-short-text-similarity-61bb88fae15e


สวัสดียินดีต้อนรับสู่ Data Science Stack Exchange! เมื่ออ้างอิงโซลูชันจากเว็บไซต์ภายนอกโปรดลองเขียนบทสรุปในคำตอบของคุณ อันที่จริงแล้วสิ่งนี้จะง่ายต่อการอ่านและป้องกันไม่ให้คำตอบของคุณล้าสมัยหากหน้าเป้าหมายมีการเปลี่ยนแปลงหรือมีการแบ่งลิงก์
Romain Reboulleau

นีซนี่เป็นสิ่งที่ดีจริงๆ ดังนั้นโดยทั่วไปพวกเขาใช้ BERT? @RomainReboulleau ถูกต้องแน่นอน!
DaveTheAl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.