การจำแนกเอกสารโดยใช้โครงข่ายประสาทเทียม


11

ฉันพยายามใช้ CNN (เครือข่ายประสาทเทียม) เพื่อจัดประเภทเอกสาร ซีเอ็นเอ็นสำหรับข้อความสั้น ๆ / ประโยคได้รับการศึกษาในเอกสารจำนวนมาก อย่างไรก็ตามดูเหมือนว่าไม่มีเอกสารใดที่ใช้ CNN สำหรับข้อความหรือเอกสารที่ยาว
ปัญหาของฉันคือมีฟีเจอร์มากมายจากเอกสาร ในชุดข้อมูลของฉันเอกสารแต่ละฉบับมีโทเค็นมากกว่า 1,000 รายการ / คำ ในการป้อนตัวอย่างแต่ละตัวให้กับ CNN ฉันแปลงเอกสารแต่ละฉบับเป็นเมทริกซ์โดยใช้word2vecหรือถุงมือทำให้เกิดเมทริกซ์ขนาดใหญ่ สำหรับแต่ละเมทริกซ์ความสูงคือความยาวของเอกสารและความกว้างคือขนาดของคำที่ฝังเวกเตอร์ ชุดข้อมูลของฉันมีตัวอย่างมากกว่า 9000 ตัวอย่างและใช้เวลานานในการฝึกอบรมเครือข่าย (ทั้งสัปดาห์) ซึ่งทำให้ยากต่อการปรับแต่งพารามิเตอร์
วิธีการแยกคุณสมบัติอื่นคือการใช้เวกเตอร์หนึ่งคำสำหรับแต่ละคำศัพท์ แต่สิ่งนี้จะสร้างเมทริกซ์ที่กระจัดกระจายมาก และแน่นอนว่าวิธีนี้ใช้เวลาในการฝึกฝนมากกว่าวิธีก่อนหน้า
ดังนั้นจะมีวิธีที่ดีกว่าสำหรับการแยกฟีเจอร์โดยไม่ต้องสร้างเมทริกซ์อินพุตขนาดใหญ่หรือไม่?
แล้วเราจะจัดการกับความยาวของตัวแปรได้อย่างไร? ขณะนี้ฉันเพิ่มสตริงพิเศษเพื่อให้เอกสารมีความยาวเท่ากัน แต่ฉันไม่คิดว่ามันเป็นทางออกที่ดี


2
การใช้ Vectorizer ของ TfIdf นั้นเหมาะสมหรือไม่? อาจใช้ร่วมกับ word2vec เพื่อทิ้งเฉพาะคำบนสุด x สำหรับแต่ละเอกสาร
Diego

ฉันไม่รู้ว่า Tfldf คืออะไร ฉันจะตรวจสอบเพื่อดูว่ามันใช้งานได้หรือไม่ ขอบคุณ
lenhhoxung

scikit-learn.org/stable/modules/ …ที่นี่ตัวอย่าง
Diego

ฉันแค่ตรวจสอบและฉันคิดว่ามันไม่ได้ช่วย โดยพื้นฐานแล้วคลาสตัวช่วยนั้นจะสร้างเมทริกซ์สำหรับชุดเอกสาร เวกเตอร์แถว (binary หรือ wordcount) แต่ละแถวในเมทริกซ์สอดคล้องกับเอกสาร แต่สำหรับ CNN เราต้องการเมทริกซ์สำหรับแต่ละเอกสาร
lenhhoxung

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

คำตอบ:


8

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

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

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

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

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


ความคิดที่น่าสนใจ ฉันจะลอง :)
lenhhoxung

ฉันขอถามสักคำได้ไหม? ฉันจะจัดการกับเอกสารที่มีความยาวต่างกันอย่างมีนัยสำคัญ (5 ประโยค / doc, 500 ประโยค / doc) ได้อย่างไรแม้ฉันจะเป็นตัวแทนในประโยคเวกเตอร์ประโยค? การ
ซ้อน

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

4

คุณสามารถใช้งานแต่งงานของภูมิภาค แทนที่จะแปลง "โทเค็น" แต่ละรายการเป็นเวกเตอร์คุณสามารถใช้กลยุทธ์เพื่อแปลงพื้นที่ข้อความเป็นเวกเตอร์ วิธีการนี้ใช้ที่นี่: https://arxiv.org/abs/1504.01255

หากคุณไม่ได้ จำกัด อยู่ที่ CNN คุณสามารถใช้โมเดลความสนใจแบบลำดับชั้นเช่นแบบนี้: https://www.cs.cmu.edu/~diyiy/docs/naacl16.pdfที่คุณมีแบบนี้: word vectors (combined into) sentence vectors (combined into) final document vector

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

ในการจัดการเอกสารที่มีความยาวต่างกันการขยาย / ตัดเป็นวิธีแก้ปัญหาเพียงอย่างเดียว

สุดท้ายเพื่อเพิ่มความเร็วคุณสามารถพยายามลดขนาดของข้อความโดยรวมเฉพาะส่วนที่สำคัญ (อาจเป็นเพียงจุดเริ่มต้นของเอกสารก็เพียงพอที่จะมีความถูกต้องในการจำแนกประเภทที่ดี)


1
ขอบคุณสำหรับลิงค์อ้างอิงของคุณ ภูมิภาคนี้น่าสนใจ เกี่ยวกับเอกสารขนาดตัวแปรตามที่กล่าวไว้ในบทความนี้arxiv.org/abs/1412.1058 (ผู้เขียนคนเดียวกัน) เราสามารถใช้หน่วยการรวมกำไรหลายหน่วยแทนการขยาย / ตัด
lenhhoxung
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.