อะไรคือวิธีมาตรฐานในการคำนวณระยะห่างระหว่างเอกสาร


34

เมื่อฉันพูดว่า "เอกสาร" ฉันนึกถึงหน้าเว็บต่างๆเช่นบทความ Wikipedia และเรื่องข่าว ฉันต้องการคำตอบที่ให้ทั้งตัวชี้วัดระยะทางวานิลลาคำศัพท์หรือตัวชี้วัดระยะทางความหมายรัฐของศิลปะที่มีการตั้งค่าที่แข็งแกร่งสำหรับหลัง

คำตอบ:


48

มีหลายวิธีในการทำสิ่งนี้ขึ้นอยู่กับจำนวนความหมายของข้อมูลที่คุณต้องการเก็บไว้และวิธีการที่เอกสารของคุณง่ายในการทำโทเค็น (เอกสาร html อาจเป็นการยากที่จะโทเค็น แต่คุณอาจทำอะไรบางอย่างด้วยแท็กและบริบท .)

บางคนได้รับการกล่าวถึงโดยแฟนและย่อหน้าเวกเตอร์โดยผู้ใช้ 1133029 เป็นคนที่แข็งแกร่งจริง ๆ แต่ฉันเพิ่งคิดว่าฉันจะเข้าไปลึกมากขึ้นเกี่ยวกับ plusses และ minuses ของวิธีการที่แตกต่างกัน

  • ระยะทางโคไซน์ - พยายามใช้ระยะทางที่แท้จริงโคไซน์น่าจะเป็นตัวชี้วัดระยะทางที่ใช้กันโดยทั่วไปในหลายโดเมน ด้วยที่กล่าวว่ามีข้อมูลน้อยมากในระยะทางโคไซน์ที่จริงสามารถแมปกลับไปเป็นความหมายอะไรซึ่งดูเหมือนจะไม่เหมาะสำหรับสถานการณ์นี้
  • ระยะทาง Levenshtein - หรือที่รู้จักกันว่าedit distanceปกติจะใช้กับโทเค็นแต่ละระดับเท่านั้น (คำ, บิ๊กแกรม, ฯลฯ ... ) โดยทั่วไปฉันจะไม่แนะนำตัวชี้วัดนี้เนื่องจากไม่เพียง แต่กำจัดข้อมูลความหมายใด ๆ แต่ยังมีแนวโน้มที่จะรักษาคำที่แตกต่างกันมากเช่นกัน แต่มันเป็นตัวชี้วัดที่พบบ่อยมากสำหรับสิ่งประเภทนี้
  • LSA - topic modelingเป็นส่วนหนึ่งของคลังแสงขนาดใหญ่ของเทคนิคเมื่อมันมาถึงการประเมินความคล้ายคลึงกันในเอกสารที่เรียกว่า LSA เพิ่งเลิกสวยไปแล้วเมื่อเร็ว ๆ นี้และจากประสบการณ์ของฉันมันไม่ใช่วิธีการสร้างแบบจำลองหัวข้อที่แข็งแกร่งที่สุด แต่มันก็ค่อนข้างตรงไปตรงมาที่จะนำไปใช้และมีการใช้งานโอเพ่นซอร์สน้อย
  • LDA - ยังเป็นเทคนิคที่ใช้สำหรับtopic modelingแต่มันแตกต่างจากLSAในที่จริงเรียนรู้การเป็นตัวแทนภายในที่มีแนวโน้มที่จะราบรื่นและใช้งานง่ายขึ้น โดยทั่วไปแล้วผลลัพธ์ที่คุณได้รับLDAจะดีกว่าสำหรับการสร้างแบบจำลองความคล้ายคลึงกันของเอกสารมากกว่าLSAแต่ไม่ดีพอสำหรับการเรียนรู้วิธีแยกแยะอย่างมากระหว่างหัวข้อต่างๆ
  • การจัดสรร Pachinko - เป็นการต่อเติมที่ยอดเยี่ยมจริงๆของ LDA โดยทั่วไปนี่เป็นเพียงรุ่นที่ได้รับการปรับปรุงอย่างมีนัยสำคัญLDAโดยมีข้อเสียเพียงอย่างเดียวที่ใช้เวลานานในการฝึกอบรมและการใช้งานโอเพ่นซอร์สค่อนข้างยากกว่าที่จะมาด้วย
  • word2vec - Google ได้รับการทำงานในชุดของเทคนิคสำหรับการลดชาญฉลาดคำพูดและเอกสารไปยังเวกเตอร์ที่เหมาะสมมากขึ้นกว่าเวกเตอร์เบาบางผลโดยใช้เทคนิคเช่นและCount Vectorizers TF-IDFWord2vec นั้นยอดเยี่ยมเพราะมีการใช้งานโอเพ่นซอร์สจำนวนมาก เมื่อคุณมีเวกเตอร์เมตริกใด ๆ ที่คล้ายคลึงกัน (เช่นระยะทางโคไซน์) สามารถนำมาใช้ด้านบนของมันได้อย่างมีประสิทธิภาพมากขึ้น
  • doc2vec - เป็นที่รู้จักกันว่าparagraph vectorsนี่คือเอกสารล่าสุดของ Google โดยเป็นชุดเอกสารที่มีความสำคัญมากที่สุด gensimห้องสมุดในหลามมีการดำเนินการword2vecที่เป็นพอที่ตรงไปตรงมาว่ามันสวยพอจะยกระดับการสร้างdoc2vecแต่ให้แน่ใจว่าจะให้ใบอนุญาตในใจถ้าคุณต้องการที่จะไปลงเส้นทางนี้

หวังว่าจะช่วยได้โปรดแจ้งให้เราทราบหากคุณมีข้อสงสัย


6

มีการวัดระยะทางเชิงความหมายจำนวนมากแต่ละแห่งมีทั้งข้อดีและข้อเสีย นี่เป็นเพียงไม่กี่คน:

  • ระยะโคไซน์ , ผลิตภัณฑ์ภายในระหว่างเวกเตอร์คุณลักษณะของเอกสาร;
  • LSAเป็นรูปแบบเวกเตอร์อีกรูปแบบหนึ่ง แต่ใช้ SVD สำหรับการยกเลิกเมทริกซ์คำเอกสารต้นฉบับ
  • WordNet เป็นฐานที่มนุษย์ยืนยันแล้ว แต่ไม่สามารถขยายได้

เริ่มต้นด้วยวิธีที่ง่ายที่สุดจากนั้นดำเนินการต่อไปตามปัญหาสำหรับกรณีของคุณ


1
โปรดทราบว่าเมื่อทำ LSA โดยทั่วไปคุณจะใช้ระยะทางโคไซน์ในการประมาณ LSA ของชุดข้อมูลดั้งเดิม เพียงชี้แจง
Simon

6

สังเกตุฉันพบ LSA ที่เหนือกว่า LDA อย่างมากทุกครั้งและทุกชุดข้อมูลที่ฉันได้ลองไว้ ฉันได้พูดคุยกับคนอื่นที่พูดในสิ่งเดียวกัน มันยังถูกใช้เพื่อชนะการแข่งขัน SemEval จำนวนมากสำหรับการวัดความคล้ายคลึงกันทางความหมายระหว่างเอกสารบ่อยครั้งเมื่อใช้ร่วมกับการวัดจาก wordnet ดังนั้นฉันจะไม่พูดว่ามันล้าสมัยหรือด้อยกว่า LDA อย่างแน่นอน สำหรับการสร้างแบบจำลองของหัวข้อและไม่คล้ายคลึงกันทางความหมายในประสบการณ์ของฉันตรงกันข้ามกับสิ่งที่ผู้ตอบบางคนระบุไว้

หากคุณใช้ gensim (ไลบรารีไพ ธ อน) มันมี LSA, LDA และ word2vec ดังนั้นคุณสามารถเปรียบเทียบ 3. doc2vec เป็นแนวคิดที่ยอดเยี่ยม แต่ไม่ได้ปรับขนาดได้ดีและคุณจะต้องปรับใช้ตัวเองเหมือนฉัน ไม่รู้ถึงการใช้งานโอเพนซอร์ซใด ๆ มันไม่ได้ปรับขนาดได้ดีสำหรับเอกสารแต่ละรุ่นต้องสร้างรุ่นใหม่และแยกต่างหากโดยใช้ SGD ซึ่งเป็นอัลกอริทึมการเรียนรู้ของเครื่องที่ช้า แต่มันอาจจะให้ผลลัพธ์ที่แม่นยำที่สุดแก่คุณ LSA และ LDA ยังปรับขนาดได้ไม่ดีนัก (อย่างไรก็ตาม word2vec ก็ทำได้เช่นกัน) LDA มีขนาดที่แย่ลงโดยทั่วไป อย่างไรก็ตามการใช้งานของ Gensim นั้นรวดเร็วมากเนื่องจากใช้ SVD แบบวนซ้ำ

บันทึกอื่น ๆ หนึ่งถ้าคุณใช้ word2vec คุณจะยังต้องพิจารณาวิธีการเขียนเวกเตอร์จากเอกสารเนื่องจากมันให้เวกเตอร์ที่แตกต่างกันต่อคำ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการทำให้เวกเตอร์แต่ละตัวเป็นแบบปกติและใช้ค่าเฉลี่ยสำหรับเวกเตอร์คำทั้งหมดในเอกสารหรือใช้ค่าเฉลี่ยถ่วงน้ำหนักโดยการถ่วงน้ำหนัก idf ของแต่ละคำ ดังนั้นจึงไม่ง่ายเหมือน 'ใช้ word2vec' คุณจะต้องทำอะไรเพิ่มเติมเพื่อคำนวณความคล้ายคลึงกันของเอกสาร

ฉันจะไปกับ LSA เป็นการส่วนตัวตามที่ฉันได้เห็นมันทำงานได้ดีสังเกตุ อย่างไรก็ตามไม่มีอาหารกลางวันฟรีดังนั้นควรลองแต่ละวิธีและดูว่าวิธีใดที่ดีกว่าสำหรับข้อมูลของคุณ


คุณใช้ LSA ได้อย่างไร? เป็นที่น่าสังเกตว่า LDA เป็นเสื้อคลุมบาง ๆ ที่สวยงามรอบ ๆ LSA (เป็น pLSA ที่มี dirichlet ก่อนหน้านี้) ที่แสดงให้เห็นอย่างชัดเจนเพื่อเพิ่มลักษณะทั่วไป คุณเกือบจะเห็นความถูกต้องที่ดีขึ้นกับ LSA แต่โดยทั่วไปแล้วเป็นผลมาจากการ overfitting ซึ่งเป็นปัญหาที่น่าทึ่งมากกับ LSA นอกจากนี้คุณหมายถึงอะไรโดยการขยายที่นี่ doc2vec ไม่จำเป็นต้องมีรูปแบบใหม่สำหรับแต่ละเอกสารและสำหรับการคำนวณไม่มีความแตกต่างที่น่าสังเกตระหว่าง LSA และ LDA ทั้งสองนี้สามารถปรับขนาดได้อย่างมาก
ตำหนิ Victoroff

ฉันไม่ได้สังเกตเห็นว่าเหมาะสมกับ LSA และอย่างที่ฉันพูดฉันได้พบกับคนอื่น ๆ อีกหลายคนที่ได้เห็นประสิทธิภาพที่ดีกว่า LDA นอกจากนี้ฉันเคยเห็น LSA ใช้ในรายการที่ชนะหลายรายการในการแข่งขันรอบรองชนะเลิศฉันไม่เคยเห็น LDA ใช้ในรายการที่ชนะ นั่นคือการประชุมเชิงวิชาการเพื่อเปรียบเทียบความคล้ายคลึงกันทางความหมายระหว่างเอกสารดังนั้นฉันคิดว่าพวกเขารู้ว่าพวกเขากำลังทำอะไรอยู่ Doc2vec หากคุณอ้างถึงการนำเวกเตอร์ย่อหน้าของ Mikolov ไปใช้ SGD ในเอกสารแต่ละฉบับแยกกัน ดังนั้นมันช้ามาก
Simon

@SlaterVictoroff ฉันคิดว่านั่นเป็นสิ่งที่เกินกว่าที่จะบอกว่ามันเกินกำลัง LDA เป็นที่รู้จักกันดีในการค้นหา / สืบค้นข้อมูลและกรณีการแนะนำ LSA เชิงประจักษ์ได้แสดงให้เห็นว่าทำงานได้ดีขึ้นมากและตรงกับประสบการณ์ของฉันเองเช่นฉันต้องการตรวจสอบสิ่งที่ค้นพบเหล่านี้กับข้อมูลของเราเอง Doc2Vec รุ่นต่างๆทำเอกสารการไล่ระดับสีต่อเอกสารขึ้นอยู่กับอัลกอริทึมที่ใช้ใน Doc2Vec เนื่องจากโดยทั่วไปจะอ้างถึงอัลกอริธึมที่แตกต่างกันมากมาย
Simon

3

รัฐปรากฏศิลปะจะเป็น "พาหะวรรค" แนะนำในกระดาษล่าสุด: http://cs.stanford.edu/~quocle/paragraph_vector.pdf ระยะทางโคไซน์ / ยูคลิดระหว่างเวกเตอร์ย่อหน้าน่าจะทำงานได้ดีกว่าวิธีอื่น ๆ อาจเป็นไปไม่ได้เนื่องจากไม่มีการใช้งานโอเพ่นซอร์ส

สิ่งที่ดีที่สุดถัดไปคือระยะห่างโคไซน์ระหว่างเวกเตอร์ LSA หรือระยะห่างโคไซน์ระหว่างเวกเตอร์ BOW ดิบ บางครั้งมันจะทำงานได้ดีกว่าในการเลือกแผนการลดน้ำหนักที่แตกต่างกันเช่น TF-IDF


หมายเหตุความคิดเห็นของฉันด้านล่างเกี่ยวกับความสามารถในการขยายเวกเตอร์ย่อหน้า เทคนิคนี้มีลักษณะที่มีแนวโน้มมาก แต่เป็นเรื่องยากที่จะดำเนินการและไม่ได้ระดับดีที่ทุกคนในขณะที่คุณกำลังทำ SGD แยกต่างหากสำหรับแต่ละเอกสารซึ่งเป็นค่าใช้จ่ายสูงมากถ้าผมจำได้ว่ากระดาษที่ถูกต้อง
ไซมอน

1

มันจะมีประโยชน์ที่จะมีในกระเป๋าคุณของเครื่องมือครอบครัวของท้องที่ที่มีความสำคัญขั้นตอนวิธีการคร่ำเครียด ครอบครัวนี้ไม่ได้มีความหมายเลย ที่จริงแล้วถือว่าข้อความเป็นลำดับของบิต ฉันพบว่ามีประโยชน์ในชุดข้อมูลสกปรกเมื่อข้อความเดียวกันปรากฏหลายครั้งด้วยความแตกต่างเล็กน้อย

คุณสามารถใช้ssdeep (ซึ่งใช้แฮช Nilsimsa ) เพื่อระบุเอกสารดังกล่าว เดิม Ssdeep มีการวางแผนสำหรับโดเมนของสแปม ผู้ส่งอีเมลขยะมักจะทำการเปลี่ยนแปลงเล็กน้อยในข้อความ (เพิ่มช่องว่าง) เพื่อป้องกันการตรวจจับโดยลายเซ็นที่แน่นอน (เช่นmd5 )

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

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