ใช้คำว่า embeddings กับเอกสารทั้งหมดเพื่อรับเวกเตอร์คุณลักษณะ


38

ฉันจะใช้คำศัพท์เพื่อฝังแผนที่เอกสารกับเวกเตอร์ฟีเจอร์ได้อย่างไรเหมาะสำหรับใช้กับการเรียนรู้ภายใต้การดูแล

ฝังคำแผนที่แต่ละคำเพื่อเวกเตอร์ที่บางจำนวนไม่มากเกินไปขนาดใหญ่ (เช่น 500) ที่เป็นที่นิยมembeddings คำได้แก่word2vecและถุงมือwvRdd

ฉันต้องการใช้การเรียนรู้ภายใต้การดูแลเพื่อจำแนกเอกสาร ขณะนี้ฉันกำลังทำแผนที่เอกสารแต่ละฉบับกับเวกเตอร์คุณลักษณะโดยใช้การแทนคำถุงจากนั้นจึงใช้ตัวจําแนกแบบลักษณนาม ฉันต้องการแทนที่เวกเตอร์คุณลักษณะถุงคำ - คำด้วยการฝังคำที่มีการฝึกอบรมไว้ล่วงหน้าเพื่อใช้ประโยชน์จากความรู้เชิงความหมายที่มีอยู่ในการฝังคำ มีวิธีมาตรฐานในการทำเช่นนั้น?

ฉันสามารถจินตนาการถึงความเป็นไปได้บ้าง แต่ฉันไม่รู้ว่ามีบางอย่างที่สมเหตุสมผลที่สุดหรือไม่ วิธีการสมัครที่ฉันเคยพิจารณา:

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

  • การต่อเวกเตอร์เข้ากับคำทั้งหมดไม่ทำงานเพราะจะไม่นำไปสู่เวกเตอร์ที่มีขนาดคงที่ นอกจากนี้ดูเหมือนว่าเป็นความคิดที่ไม่ดีเพราะมันจะไวเกินไปต่อการจัดวางคำเฉพาะ

  • ฉันสามารถใช้คำนั้นเพื่อจัดกลุ่มคำศัพท์ของทุกคำให้เป็นกระจุกกลุ่มคงที่พูดกันว่า 1000 กลุ่มซึ่งฉันใช้ความคล้ายคลึงโคไซน์บนเวกเตอร์เพื่อวัดความคล้ายคลึงกันของคำ จากนั้นแทนที่จะเป็นถุงคำคำฉันสามารถมีถุงแบบกลุ่ม: เวกเตอร์คุณลักษณะที่ฉันจัดหาให้กับ classifer อาจเป็น 1000- เวกเตอร์ซึ่งองค์ประกอบที่นับจำนวนคำในเอกสารที่ เป็นส่วนหนึ่งของคลัสเตอร์ฉันii

  • ป.ร. ให้คำเหล่านี้ embeddings คำให้ฉันคำนวณชุดของด้านบน 20 มากที่สุดคำที่คล้ายกันและคะแนนความคล้ายคลึงกันของพวกเขา{20} ฉันสามารถปรับเวกเตอร์ลักษณะคล้ายคำถุงด้วยการใช้สิ่งนี้ เมื่อผมเห็นคำว่าที่นอกเหนือไปจากการเพิ่มองค์ประกอบที่สอดคล้องกับคำโดย , ฉันยังสามารถเพิ่มองค์ประกอบที่สอดคล้องกับคำโดย , เพิ่มองค์ประกอบที่สอดคล้องกับคำโดยและอื่น ๆww1,,w20s1,,s20ww1w1s1w2s2

มีวิธีการเฉพาะที่น่าจะทำงานได้ดีสำหรับการจำแนกเอกสารหรือไม่?


ฉันไม่ได้กำลังหาย่อหน้า 2vec หรือ doc2vec; สิ่งเหล่านี้ต้องการการฝึกอบรมในคลังข้อมูลขนาดใหญ่และฉันไม่มีคลังข้อมูลขนาดใหญ่ ฉันต้องการใช้คำที่มีอยู่แล้วแทน


1
คุณได้ตัดสินใจเกี่ยวกับวิธีการเฉพาะสำหรับการแสดงเอกสารโดยใช้ embeddings ที่ผ่านการฝึกอบรมมาแล้วหรือไม่? บางทีนี่อาจช่วยได้บ้าง
turdus-merula

1
@ user115202 เรียบร้อย! ไม่ได้แก้ปัญหาที่ฉันมี แต่มันเป็นความคิดที่ฉลาดที่ฟังดูคุ้มค่า - ขอบคุณที่ชี้ให้เห็น! ฉันไม่เคยพบวิธีแก้ปัญหาที่ดีมากสำหรับปัญหานี้ซึ่งดีกว่าการใช้คำถุง บางทีนี่อาจไม่ใช่คำศัพท์ที่ใช้ในงานแต่ง ขอบคุณ!
DW

หนึ่งนี้ยังเกี่ยวข้องกับปัญหาของคุณอาจจะน้อยกว่าหนึ่งก่อนการเป็นตัวแทนการเรียนรู้สำหรับข้อความที่สั้นมากใช้คำถ่วงน้ำหนักฝังรวม
turdus-merula


1
ทำไมไม่ใช้ RNN เอกสารความยาวผันแปรไม่ได้เป็นปัญหาสำหรับ RNN wildml.com/2015/09/…
kalu

คำตอบ:


23

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

จากผลลัพธ์ในบทความล่าสุดหนึ่งฉบับดูเหมือนว่าการใช้ min และ max ทำงานได้ดีพอสมควร มันไม่ได้ดีที่สุด แต่มันง่ายและดีหรือดีกว่าเทคนิคง่ายๆอื่น ๆ โดยเฉพาะถ้าเวกเตอร์สำหรับคำในเอกสารคือคุณจะคำนวณและn) ที่นี่เราใช้ค่าต่ำสุดพิกัด - อย่างน้อยคือเวกเตอร์ที่และในทำนองเดียวกันสำหรับค่าสูงสุด เวกเตอร์คุณลักษณะคือการต่อกันของเวกเตอร์สองตัวนี้ดังนั้นเราจึงได้เวกเตอร์ฟีเจอร์ในnv1,v2,,vnRdmin(v1,,vn)max(v1,,vn)uui=min(vi1,,vin)R2d. ฉันไม่ทราบว่าสิ่งนี้ดีกว่าหรือแย่กว่าการเป็นตัวแทนคำ แต่สำหรับเอกสารสั้น ๆ ฉันคิดว่ามันอาจจะดีกว่าแบบคำต่อคำและอาจช่วยให้ใช้งานแต่งงานได้

TL: DR: น่าประหลาดใจการต่อข้อมูล min และ max ทำงานได้ดีพอสมควร

อ้างอิง:

การเป็นตัวแทนการเรียนรู้สำหรับข้อความสั้น ๆ โดยใช้การถ่วงน้ำหนักการรวมการฝังคำ เซดริกเดอบูม, สตีเวนแวนแคนนีย์, โทมัสเดเมสเตอร์, บาร์ ธ โฮเฮด ตัวอักษรการจดจำรูปแบบ; arXiv: 1607.00570 นามธรรม , รูปแบบไฟล์ PDF ดูตารางโดยเฉพาะอย่างยิ่ง 1 และ 2

เครดิต: ขอบคุณ @ user115202 ที่นำบทความนี้มาให้ความสนใจ


4
สำหรับข้อความสั้น avg / min / max อาจทำงานได้ดี แต่ถ้าข้อความยาวเช่นบทความข่าว
อะโวคาโด

1
สำหรับทุกคนที่อ่านผ่านกระดาษนั้นและสับสนเหมือนฉัน: กระดาษไม่ได้มุ่งเน้นไปที่วิธีการที่ @DW กล่าวถึงพวกเขาเพียงกล่าวสั้น ๆ ภายใต้หัวข้อ "5.1. Baselines" เป็นแนวทางพื้นฐาน เนื้อหาของบทความมุ่งเน้นไปที่เทคนิคของตัวเองซึ่งเกี่ยวข้องกับการฝึกอบรมตัวจําแนกโดยใช้งานแต่งงานซึ่งมีความซับซ้อนมากกว่าวิธีที่ระบุไว้ที่นี่!
Migwell

16

คุณสามารถใช้ doc2vec คล้ายกับ word2vec และใช้แบบจำลองที่ผ่านการฝึกอบรมล่วงหน้าจากคลังข้อมูลขนาดใหญ่ จากนั้นใช้สิ่งที่ต้องการ.infer_vector()ใน gensim เพื่อสร้างเวกเตอร์เอกสาร การฝึกอบรม doc2vec ไม่จำเป็นต้องมาจากชุดฝึกอบรม

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

นอกจากนี้คุณยังสามารถรวมคุณลักษณะเบาบาง (คำ) เข้ากับคุณลักษณะที่มีความหนาแน่นสูง (คำเวกเตอร์) เพื่อเติมเต็มซึ่งกันและกัน ดังนั้นฟีเจอร์เมทริกซ์ของคุณจะเป็นการต่อกันของกระจัดกระจายของเมทริกซ์คำกับค่าเฉลี่ยของเวกเตอร์คำ https://research.googleblog.com/2016/06/wide-deep-learning-better-together-with.html

อีกวิธีที่น่าสนใจคือการใช้อัลกอริทึมที่คล้ายกันกับ word2vec แต่แทนที่จะทำนายคำเป้าหมายคุณสามารถทำนายเลเบลเป้าหมายได้ นี่เป็นการปรับเวกเตอร์คำโดยตรงไปยังงานการจัดหมวดหมู่ http://arxiv.org/pdf/1607.01759v2.pdf

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


6

หากคุณกำลังทำงานกับข้อความภาษาอังกฤษและต้องการให้คำว่า embeddings ได้รับการฝึกฝนมาก่อนแล้วโปรดดูที่: https://code.google.com/archive/p/word2vec/

นี่คือ word2vec รุ่น C ดั้งเดิม นอกเหนือจากการเปิดตัวครั้งนี้พวกเขายังได้ปล่อยนางแบบที่ผ่านการฝึกอบรมมาแล้วกว่า 100 พันล้านคำจากบทความ Google News (ดูหัวข้อย่อย: "เวกเตอร์คำและวลีที่ผ่านการฝึกอบรมล่วงหน้า")

ในความคิดและประสบการณ์ของฉันในการทำงานกับคำว่า embeddings สำหรับการจัดหมวดหมู่เอกสารรูปแบบเช่น doc2vec (กับ CBOW) ทำงานได้ดีกว่าถุงคำมาก

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

นอกจากนี้ตรวจสอบบทความนี้ว่ารายละเอียดการทำงานภายในของ word2vec / doc2vec: http://arxiv.org/abs/1411.2738 ซึ่งจะทำให้เข้าใจรหัส gensim ง่ายมาก


1
ขอบคุณสำหรับคำแนะนำ ฉันไม่ได้ขอให้ฝังคำ ฉันรู้วิธีฝังคำที่ได้รับการฝึกฝนมาแล้ว (ฉันพูดถึง word2vec ในคำถามของฉัน) คำถามของฉันคือวิธีสร้างเวกเตอร์คุณลักษณะจากคำศัพท์ที่ฝังไว้ล่วงหน้า ฉันชื่นชมการอ้างอิงถึง doc2vec แต่คลังข้อมูลของฉันมีขนาดค่อนข้างเล็กดังนั้นฉันจึงสงสัย / กลัวว่าการพยายามฝึกอบรมรหัส doc2vec จะมีประสิทธิภาพมากเกินไปและทำงานได้ไม่ดี
DW
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.