Metin kümeleme için algoritmalar


17

Çok sayıda cümleyi anlamlarına göre gruplara ayırma problemim var. Bu, çok sayıda cümleniz olduğunda ve anlamlarına göre gruplandırmak istediğinizde bir soruna benzer.

Bunu yapmak için hangi algoritmalar öneriliyor? Önceden kümelerin sayısını bilmiyorum (ve daha fazla veri geliyor gibi kümeler de değişebilir), normalde her cümleyi temsil etmek için hangi özellikler kullanılır?

Şimdi sadece kelime listesi ve cümleler olarak tanımlanan cümleler arasındaki mesafe ile en basit özellikleri deniyorum:

resim açıklamasını buraya girin

(A ve B, A ve B cümlesindeki karşılık gelen kelime kümeleridir)

Hiç mantıklı mı?

Önceden küme sayısı gerektirmediği için scikit kütüphanesinden Mean-Shift algoritmasını bu mesafeye uygulamaya çalışıyorum .

Herhangi biri sorun için daha iyi yöntemler / yaklaşımlar önerecekse - konu hakkında hala yeni olduğum için çok takdir edilecektir.

Yanıtlar:


13

Kontrol Stanford NLP Grubu 'ın açık kaynak yazılımı ( http://www-nlp.stanford.edu/software özellikle), Stanford Sınıflandırıcı ( http://www-nlp.stanford.edu/software/classifier.shtml ) . Yazılım, Javamuhtemelen sizi memnun edecek şekilde yazılmıştır , ancak diğer diller için de bağlamaları vardır. Not lisans - ticari ürünlerde kodlarını kullanmayı düşünüyorsanız, sen ticari lisans gerekiyor.

Bu görev için uygun IMHO ve daha birçok ilginç açık kaynak kütüphanesi, kümeleme kütüphanesini içeren ve çeşitli kümeleme uygulayan GraphLab ( http://select.cs.cmu.edu/code/graphlab ) için paralel bir çerçevedir. algoritmaları ( http://select.cs.cmu.edu/code/graphlab/clustering.html ). Modeli uyguladığı ve dolayısıyla çok çekirdekli ve çok işlemcili paralel işlemeyi desteklediği için çok büyük miktarda veriye (sizin gibi) uygundur .MapReduce

Büyük olasılıkla aşağıdakilerin farkındasınız, ancak her ihtimale karşı söz edeceğim. Doğal Dil Toolkit (NLTK) için Python( http://www.nltk.org ) kümeleme / sınıflandırma / kategorize metin için modülleri içerir. İlgili bölüm edin NLTK Book: http://www.nltk.org/book/ch06.html .

GÜNCELLEME:

Algoritmalardan bahsetmişken, scikit-learnbu konu çıkarma örneğinde gösterildiği gibi çoğunu denediğiniz görülüyor : http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html . Bununla birlikte, Negatif Olmayan Matris Faktorizasyonu (NMF) dahil olmak üzere çok çeşitli kümeleme algoritmalarını uygulayan diğer faydalı kütüphaneleri bulabilirsiniz . Böyle kütüphanelerin biri Python Matriks çarpanlara (PyMF) adresindeki ana sayfadan ile https://code.google.com/p/pymf de ve kaynak kodu https://github.com/nils-werner/pymf . Python tabanlı bir başka, daha da ilginç kütüphane NIMFAçeşitli NMF algoritmalarını uygulayan : http://nimfa.biolab.si . İşte bir araştırma makalesi NIMFA: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf . Konu kümelemesine çok benzer metin işleme sorununa çözüm sunan dokümanlarından bir örnek : http://nimfa.biolab.si/nimfa.examples.documents.html .


1
Bu kadar ayrıntılı yanıt için çok teşekkürler. Tüm önerilerinizden geçeceğim, denemek ve test etmek için çok fazla iş! Ayrıca carrot2 aracının metin verilerinin denetimsiz kümelenmesinde gerçekten iyi bir iş çıkardığını gördüm. İleride referans için bağlantı gönderme http://project.carrot2.org/
Maxim Galushka

@MaximGalushka: Çok hoş geldiniz! Bulgularınızı ve sonunda elde edeceğiniz ilerlemeyi öğrenmeyi merak ediyorum. Buraya mesaj göndermek veya doğrudan benimle bağlantı kurmaktan çekinmeyin.
Aleksandr Blekh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.