อัลกอริทึมสำหรับการจัดกลุ่มข้อความ


17

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

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

ตอนนี้ฉันกำลังลองใช้ฟีเจอร์ที่ง่ายที่สุดเพียงแค่ใส่คำและระยะห่างระหว่างประโยคที่กำหนดเป็น:

ป้อนคำอธิบายรูปภาพที่นี่

(A และ B เป็นชุดคำที่สอดคล้องกันในประโยค A และ B)

มันสมเหตุสมผลหรือไม่

ฉันกำลังพยายามใช้อัลกอริทึมMean-Shiftจาก scikit ไลบรารี่กับระยะทางนี้เนื่องจากไม่จำเป็นต้องใช้จำนวนคลัสเตอร์ล่วงหน้า

หากใครจะแนะนำวิธีการ / แนวทางที่ดีกว่าสำหรับปัญหา - มันจะได้รับการชื่นชมอย่างมากเพราะฉันยังใหม่กับหัวข้อ

คำตอบ:


13

ตรวจสอบซอฟต์แวร์โอเพ่นซอร์สของStanford NLP Group ( http://www-nlp.stanford.edu/software ) โดยเฉพาะStanford Classifier ( http://www-nlp.stanford.edu/software/classifier.shtml ) . ซอฟต์แวร์เขียนด้วยภาษาJavaซึ่งจะทำให้คุณพึงพอใจ แต่มีการเชื่อมโยงกับภาษาอื่น ๆ ด้วย หมายเหตุการออกใบอนุญาต - หากคุณวางแผนที่จะใช้รหัสในผลิตภัณฑ์เชิงพาณิชย์คุณต้องได้รับใบอนุญาตการค้า

อีกชุดที่น่าสนใจของห้องสมุดโอเพ่นซอร์ส IMHO เหมาะสำหรับงานนี้และอีกมากมายคือกรอบการทำงานแบบขนานสำหรับการเรียนรู้ของเครื่อง GraphLab ( http://select.cs.cmu.edu/code/graphlab ) ซึ่งรวมถึงการจัดกลุ่มไลบรารีการใช้การจัดกลุ่มต่างๆ อัลกอริทึม ( http://select.cs.cmu.edu/code/graphlab/clustering.html ) มันเป็นความเหมาะสมอย่างยิ่งสำหรับปริมาณมากของข้อมูล (เช่นคุณมี) ตามที่มันดำเนินการMapReduceรูปแบบและจึงสนับสนุนmulticoreและมัลติโปรเซสเซอร์ ประมวลผลแบบขนาน

คุณมักจะตระหนักถึงสิ่งต่อไปนี้ แต่ฉันจะพูดถึงมันในกรณี ชุดเครื่องมือภาษาธรรมชาติ (NLTK)สำหรับPython( http://www.nltk.org ) มีโมดูลสำหรับการจัดกลุ่ม / การจำแนก / การจัดหมวดหมู่ข้อความ ตรวจสอบบทที่เกี่ยวข้องในNLTK Book: http://www.nltk.org/book/ch06.html

UPDATE:

การพูดของอัลกอริทึมมันก็ดูเหมือนว่าคุณได้พยายามส่วนใหญ่ของคนที่จากscikit-learnเช่นแสดงในตัวอย่างเช่นการสกัดหัวข้อนี้: http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html แต่คุณอาจพบห้องสมุดอื่น ๆ ที่มีประโยชน์ซึ่งดำเนินการความหลากหลายของการจัดกลุ่มขั้นตอนวิธีการรวมทั้งที่ไม่ใช่เชิงลบเมทริกซ์ตัวประกอบ (NMF) หนึ่งของห้องสมุดดังกล่าวเป็นงูหลาม Matrix ตัวประกอบ (PyMF)กับหน้าบ้านในhttps://code.google.com/p/pymfและ source code ที่https://github.com/nils-werner/pymf อีกประการหนึ่งที่น่าสนใจยิ่งกว่าคือห้องสมุดที่ใช้ Python ก็คือNIMFAซึ่งดำเนินการต่างๆขั้นตอนวิธีการ NMF : http://nimfa.biolab.si นี่คืองานวิจัยอธิบายNIMFA: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf นี่คือตัวอย่างจากเอกสารที่นำเสนอวิธีการแก้ปัญหาการประมวลผลข้อความที่คล้ายกันมากของการจัดกลุ่มหัวข้อ : http://nimfa.biolab.si/nimfa.examples.documents.html


1
ขอบคุณมากสำหรับการตอบสนองอย่างละเอียด ฉันจะทำตามข้อเสนอแนะทั้งหมดของคุณทำงานมากลองและทดสอบ! นอกจากนี้ฉันยังพบว่าเครื่องมือ carrot2 ทำงานได้ยอดเยี่ยมมากในการจัดกลุ่มข้อมูลที่เป็นข้อความ ลิงค์โพสต์สำหรับการอ้างอิงในอนาคตhttp://project.carrot2.org/
Maxim Galushka

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