Gizli Dirichlet Ayırma bileşeni

Bu makalede, sınıflandırılmamış metinleri kategoriler halinde gruplandırmak için Azure Machine Learning tasarımcısında Latent Dirichlet Ayırma bileşeninin nasıl kullanılacağı açıklanmaktadır.

Gizli Dirichlet Ayırma (LDA), benzer metinleri bulmak için genellikle doğal dil işlemede kullanılır. Bir diğer yaygın terim de konu modellemedir.

Bu bileşen bir metin sütunu alır ve şu çıkışları oluşturur:

  • Kaynak metin ve her kategori için bir puan

  • Her kategori için ayıklanan terimleri ve katsayıları içeren özellik matrisi

  • Giriş olarak kullanılan yeni metni kaydedip yeniden uygulamanızı sağlayan dönüştürme

Bu bileşen scikit-learn kitaplığını kullanır. scikit-learn hakkında daha fazla bilgi için öğreticileri ve algoritmanın açıklamasını içeren GitHub deposuna bakın.

Latent Dirichlet Ayırma hakkında daha fazla bilgi

LDA genellikle sınıflandırma için bir yöntem değildir. Ancak oluşturucu bir yaklaşım kullandığından, bilinen sınıf etiketlerini sağlamanız ve ardından desenleri çıkarmanız gerekmez. Bunun yerine algoritma, konu gruplarını tanımlamak için kullanılan bir olasılık modeli oluşturur. Mevcut eğitim olaylarını veya modele sağladığınız yeni durumları giriş olarak sınıflandırmak için olasılık modelini kullanabilirsiniz.

Metin ve kategoriler arasındaki ilişki hakkında güçlü varsayımlarda bulunmayı önlediğinden, üretken bir modeli tercih edebilirsiniz. Konuları matematiksel olarak modellemek için yalnızca sözcüklerin dağılımını kullanır.

Teori, PDF indirmesi olarak sunulan bu makalede ele alınmaktadır: Latent Dirichlet Allocation: Blei, Ng ve Jordan.

Bu bileşendeki uygulama, LDA için scikit-learn kitaplığını temel alır.

Daha fazla bilgi için Teknik notlar bölümüne bakın.

Latent Dirichlet Ayırmayı yapılandırma

Bu bileşen, ham veya önceden işlenmiş bir metin sütunu içeren bir veri kümesi gerektirir.

  1. Latent Dirichlet Ayırma bileşenini işlem hattınıza ekleyin.

    Metin Analizi altındaki varlıklar listesinde Latent Dirichlet Allocation bileşenini sürükleyip tuvale bırakın.

  2. Bileşenin girişi olarak, bir veya daha fazla metin sütunu içeren bir veri kümesi sağlayın.

  3. Hedef sütunlar için analiz etmek üzere metin içeren bir veya daha fazla sütun seçin.

    Birden çok sütun seçebilirsiniz, ancak bunlar dize veri türünde olmalıdır.

    LDA metinden büyük bir özellik matrisi oluşturduğundan, genellikle tek bir metin sütununu analiz edersiniz.

  4. Model kullanılacak konu sayısı için, giriş metninden türetmek istediğiniz kategori veya konu sayısını belirten 1 ile 1000 arasında bir tamsayı girin.

    Varsayılan olarak 5 konu oluşturulur.

  5. N-gram için, karma sırasında oluşturulan en fazla N gram uzunluğunu belirtin.

    Varsayılan değer 2'dir, yani hem büyük harflerin hem de tek birimlerin oluşturulduğu anlamına gelir.

  6. Çıkış değerlerini olasılıklara dönüştürmek için Normalleştir seçeneğini belirleyin.

    Dönüştürülen değerleri tamsayı olarak göstermek yerine çıkış ve özellik veri kümesindeki değerler aşağıdaki gibi dönüştürülür:

    • Veri kümesindeki değerler, burada P(topic|document)bir olasılık olarak temsil edilir.

    • Özellik konu matrisindeki değerler, burada P(word|topic)bir olasılık olarak temsil edilir.

    Not

    Azure Machine Learning tasarımcısında scikit-learn kitaplığı artık 0.19 sürümünden normalleştirilmemiş doc_topic_distr çıkışını desteklememektedir. Bu bileşende Normalleştirme parametresi yalnızca özellik Konu matrisi çıkışına uygulanabilir. Dönüştürülmüş veri kümesi çıkışı her zaman normalleştirilir.

  7. Tüm seçenekleri göster seçeneğini belirleyin ve ardından aşağıdaki gelişmiş parametreleri ayarlamak istiyorsanız TRUE olarak ayarlayın.

    Bu parametreler LDA'nın scikit-learn uygulamasına özeldir. Scikit-learn'de LDA hakkında bazı iyi öğreticiler ve resmi scikit-learn belgesi vardır.

    • Rho parametresi. Konu dağılımlarının sparsity için önceden bir olasılık sağlayın. Bu parametre sklearn parametresine topic_word_prior karşılık gelir. Sözcüklerin dağılımının düz olmasını bekliyorsanız 1 değerini kullanın; diğer bir deyişle, tüm sözcüklerin kesin olduğu varsayılır. Sözcüklerin çoğunun seyrek göründüğünü düşünüyorsanız, daha düşük bir değere ayarlayabilirsiniz.

    • Alfa parametresi. Belge başına konu ağırlıklarının düşüklüğü için önceki bir olasılık belirtin. Bu parametre sklearn parametresine doc_topic_prior karşılık gelir.

    • Tahmini belge sayısı. İşlenecek belge (satır) sayısıyla ilgili en iyi tahmininizi gösteren bir sayı girin. Bu parametre, bileşenin yeterli boyutta bir karma tablo ayırmasına olanak tanır. scikit-learn içindeki parametresine karşılık gelir total_samples .

    • Toplu iş boyutu. LDA modeline gönderilen her metin toplu işlemine kaç satır eklendiğini gösteren bir sayı girin. Bu parametre, scikit-learn içindeki parametresine karşılık gelir batch_size .

    • Öğrenme güncelleştirme zamanlamasında kullanılan yinelemenin ilk değeri. Çevrimiçi öğrenmede erken yinelemeler için öğrenme oranını azaltan başlangıç değerini belirtin. Bu parametre, scikit-learn içindeki parametresine karşılık gelir learning_offset .

    • Güncelleştirmeler sırasında yinelemeye güç uygulandı. Çevrimiçi güncelleştirmeler sırasında öğrenme hızını denetlemek için yineleme sayısına uygulanan güç düzeyini belirtin. Bu parametre, scikit-learn içindeki parametresine karşılık gelir learning_decay .

    • Veriler üzerinden geçiş sayısı. Algoritmanın veriler üzerinde en fazla kaç kez döngüye geçirileceğini belirtin. Bu parametre, scikit-learn içindeki parametresine karşılık gelir max_iter .

  8. Metni sınıflandırmadan önce n-gram listesini ilk geçişte oluşturmak istiyorsanız Ngram sözlüğü oluştur veya LDA'den önce ngramlar için derleme sözlüğü seçeneğini belirleyin.

    İlk sözlüğü önceden oluşturursanız, daha sonra modeli gözden geçirirken sözlüğü kullanabilirsiniz. Sonuçları sayısal dizinler yerine metne eşleyebilmek genellikle yorumlama açısından daha kolaydır. Ancak, sözlüğü kaydetmek daha uzun sürer ve ek depolama alanı kullanır.

  9. En büyük ngram sözlüğü boyutu için, n-gram sözlüğünde oluşturulabilecek toplam satır sayısını girin.

    Bu seçenek, sözlüğün boyutunu denetlemek için kullanışlıdır. Ancak girişteki ngram sayısı bu boyutu aşarsa çakışmalar oluşabilir.

  10. İşlem hattını gönderin. LDA bileşeni, tek tek sözcüklerle ilişkili olabilecek konuları belirlemek için Bayes teoremini kullanır. Sözcükler yalnızca hiçbir konu veya grupla ilişkilendirilmemiştir. Bunun yerine, her n-gram bulunan sınıflardan herhangi biriyle ilişkilendirilma olasılığı öğrenilmiştir.

Sonuçlar

Bileşenin iki çıkışı vardır:

  • Dönüştürülen veri kümesi: Bu çıkış giriş metnini, belirtilen sayıda bulunan kategoriyi ve her kategori için her metin örneğinin puanlarını içerir.

  • Özellik konu matrisi: En soldaki sütun ayıklanan metin özelliğini içerir. Her kategori için bir sütun, bu kategorideki bu özelliğin puanını içerir.

LDA dönüşümü

Bu bileşen ayrıca veri kümesine LDA uygulayan LDA dönüştürmesini de oluşturur.

Bu dönüşümü kaydedebilir ve diğer veri kümeleri için yeniden kullanabilirsiniz. Bu teknik, büyük bir corpus üzerinde eğitim aldıysanız ve katsayıları veya kategorileri yeniden kullanmak istiyorsanız yararlı olabilir.

Bu dönüşümü yeniden kullanmak için, Gizli Dirichlet Ayırma bileşeninin sağ panelindeki Veri kümesini kaydet simgesini seçerek bileşeni bileşen listesindeki Veri kümeleri kategorisi altında tutun. Daha sonra bu dönüştürmeyi yeniden kullanmak için bu bileşeni Dönüştürme Uygula bileşenine bağlayabilirsiniz.

LDA modelini veya sonuçlarını iyileştirme

Genellikle tüm gereksinimleri karşılayacak tek bir LDA modeli oluşturamazsınız. Bir görev için tasarlanmış bir model bile doğruluğu artırmak için birçok yineleme gerektirebilir. Modelinizi geliştirmek için tüm bu yöntemleri denemenizi öneririz:

  • Model parametrelerini değiştirme
  • Sonuçları anlamak için görselleştirme kullanma
  • Oluşturulan konuların yararlı olup olmadığını belirlemek için konu uzmanlarının geri bildirimlerini alma

Nitel ölçüler sonuçları değerlendirmek için de yararlı olabilir. Konu modelleme sonuçlarını değerlendirmek için şunları göz önünde bulundurun:

  • Doğru -luk. Benzer öğeler gerçekten benzer mi?
  • Çeşitlilik. Model, iş sorunu için gerektiğinde benzer öğeler arasında ayrım yapabilir mi?
  • Ölçeklendirilebilirlik. Çok çeşitli metin kategorilerinde mi yoksa yalnızca dar bir hedef etki alanında mı çalışır?

Genellikle metinleri temizlemek, özetlemek ve basitleştirmek veya kategorilere ayırmak için doğal dil işlemeyi kullanarak LDA'ya dayalı modellerin doğruluğunu geliştirebilirsiniz. Örneğin, tümü Azure Machine Learning'de desteklenen aşağıdaki teknikler sınıflandırma doğruluğunu geliştirebilir:

  • Sözcük kaldırmayı durdur

  • Büyük/küçük harf normalleştirme

  • Lemmatizasyon veya kök ayırma

  • Adlandırılmış varlık tanıma

Daha fazla bilgi için bkz. Metni Ön İşleme.

Tasarımcıda, metin işleme için R veya Python kitaplıklarını da kullanabilirsiniz: R Betiği Yürütme, Python Betiği Yürütme.

Teknik notlar

Bu bölüm uygulama ayrıntılarını, ipuçlarını ve sık sorulan soruların yanıtlarını içerir.

Uygulama ayrıntıları

Varsayılan olarak, dönüştürülmüş bir veri kümesi ve özellik konu matrisi için çıkışların dağılımları olasılık olarak normalleştirilir:

  • Dönüştürülen veri kümesi, belge verilen konuların koşullu olasılığı olarak normalleştirilir. Bu durumda, her satırın toplamı 1'e eşittir.

  • Özellik konusu matrisi, konu başlığı verilen sözcüklerin koşullu olasılığı olarak normalleştirilir. Bu durumda, her sütunun toplamı 1'e eşittir.

İpucu

Bazen bileşen boş bir konu döndürebilir. Çoğu zaman, bunun nedeni algoritmanın sahte rastgele başlatılmasıdır. Böyle bir durumda ilgili parametreleri değiştirmeyi deneyebilirsiniz. Örneğin, N-gram sözlüğünün en büyük boyutunu veya özellik karması için kullanılacak bit sayısını değiştirin.

LDA ve konu modelleme

Gizli Dirichlet Ayırma genellikle içerik tabanlı konu modellemesi için kullanılır. Bu, temel olarak sınıflandırılmamış metinlerden kategorilerin öğrenilmesi anlamına gelir. İçerik tabanlı konu modellemesinde konu, sözcüklere göre bir dağıtımdır.

Örneğin, birçok ürün içeren bir grup müşteri gözden geçirmesi sağladığınızı varsayalım. Müşteriler tarafından zaman içinde gönderilen inceleme metni, bazıları birden çok konuda kullanılan birçok terim içerir.

LDA işleminin tanımlamış olduğu bir konu , tek bir ürün için yapılan incelemeleri veya bir ürün gözden geçirme grubunu temsil edebilir. LDA için, konu yalnızca bir dizi sözcük için zaman içindeki olasılık dağılımıdır.

Koşullar nadiren tek bir ürün için özeldir. Diğer ürünlere başvurabilir veya her şey için geçerli olan genel terimler olabilir ("harika", "korkunç"). Diğer terimler kirli sözcükler olabilir. Ancak LDA yöntemi, evrendeki tüm sözcükleri yakalamaya veya birlikte oluşum olasılıklarının dışında sözcüklerin nasıl ilişkili olduğunu anlamaya çalışmaz. Yalnızca hedef etki alanında kullanılan sözcükleri gruplandırabilir.

Terim dizinleri hesaplandıktan sonra, uzaklık tabanlı bir benzerlik ölçüsü iki metin parçasının benzer olup olmadığını belirlemek için tek tek metin satırlarını karşılaştırır. Örneğin, ürünün kesin olarak bağıntılı birden çok adına sahip olduğunu fark edebilirsiniz. Öte yandan, genellikle belirli bir ürünle ilişkili olarak güçlü negatif terimler olduğunu fark edebilirsiniz. Benzerlik ölçüsünü hem ilgili terimleri tanımlamak hem de öneriler oluşturmak için kullanabilirsiniz.

Bileşen parametreleri

Ad Tür Aralık İsteğe Bağlı Varsayılan Açıklama
Hedef sütunlar Sütun Seçimi Gerekli StringFeature Hedef sütun adı veya dizini.
Modele konu sayısı Tamsayı [1;1000] Gerekli 5 Belge dağıtımını N konu başlığına göre modelle.
N-gram Tamsayı [1;10] Gerekli 2 Karma oluşturma sırasında oluşturulan N-gram sırası.
Normalleştirmek Boole Doğru veya Yanlış Gerekli true Çıkışı olasılıklara göre normalleştirin. Dönüştürülen veri kümesi P(konu|document) ve özellik konusu matrisi P(word|topic) olacaktır.
Tüm seçenekleri göster Boole Doğru veya Yanlış Gerekli Yanlış scikit-learn çevrimiçi LDA'ya özgü ek parametreler sunar.
Rho parametresi Float [0.00001;1.0] Tüm seçenekleri göster onay kutusu seçili olduğunda geçerlidir 0.01 Konu sözcüğü önceki dağıtım.
Alfa parametresi Float [0.00001;1.0] Tüm seçenekleri göster onay kutusu seçili olduğunda geçerlidir 0.01 Belge konusu önceki dağıtım.
Tahmini belge sayısı Tamsayı [1;int. MaxValue] Tüm seçenekleri göster onay kutusu seçili olduğunda geçerlidir 1000 Tahmini belge sayısı. parametresine total_samples karşılık gelir.
Toplu iş boyutu Tamsayı [1;1024] Tüm seçenekleri göster onay kutusu seçili olduğunda geçerlidir 32 Toplu iş boyutu.
Öğrenme hızı güncelleştirme zamanlamasında kullanılan yinelemenin ilk değeri Tamsayı [0;int. MaxValue] Tüm seçenekleri göster onay kutusu seçili olduğunda geçerlidir 0 Erken yinelemeler için öğrenme hızını azaltan ilk değer. parametresine learning_offset karşılık gelir.
Güncelleştirmeler sırasında yinelemeye uygulanan güç Float [0.0;1.0] Tüm seçenekleri göster onay kutusu seçili olduğunda geçerlidir 0,5 Öğrenme hızını denetlemek için yineleme sayımına uygulanan güç. parametresine learning_decay karşılık gelir.
Eğitim yinelemelerinin sayısı Tamsayı [1;1024] Tüm seçenekleri göster onay kutusu seçili olduğunda geçerlidir 25 Eğitim yinelemelerinin sayısı.
Ngramlar sözlüğü oluşturma Boole Doğru veya Yanlış Tüm seçenekleri göster onay kutusu seçili olmadığında uygulanır Doğru LDA'yi hesaplamadan önce ngram sözlüğü oluşturur. Model inceleme ve yorumlama için kullanışlıdır.
En büyük ngram sözlüğü boyutu Tamsayı [1;int. MaxValue] Ngram'ların Derleme sözlüğüTrue olduğunda geçerlidir 20000 Ngram sözlüğünün en büyük boyutu. Girişteki belirteç sayısı bu boyutu aşarsa çakışmalar oluşabilir.
Özellik karması için kullanılacak bit sayısı. Tamsayı [1;31] Tüm seçenekleri göster onay kutusu seçili olmadığında ve Ngram derleme sözlüğüFalse olduğunda geçerlidir 12 Özellik karması için kullanılacak bit sayısı.
LDA öncesinde ngram sözlüğü oluşturma Boole Doğru veya Yanlış Tüm seçenekleri göster onay kutusu seçili olduğunda geçerlidir Doğru LDA'nın öncesinde bir ngram sözlüğü oluşturur. Model inceleme ve yorumlama için kullanışlıdır.
Sözlükteki en fazla ngram sayısı Tamsayı [1;int. MaxValue] Tüm seçenekleri göster onay kutusu seçili olduğunda ve Ngramlar sözlüğü oluştur seçeneği Doğru olduğunda geçerlidir 20000 Sözlüğün en büyük boyutu. Girişteki belirteç sayısı bu boyutu aşarsa çakışmalar oluşabilir.
Karma bit sayısı Tamsayı [1;31] Tüm seçenekleri göster onay kutusu seçiliyken ve Ngramlar sözlüğü oluştur seçeneği Yanlış olduğunda geçerlidir 12 Özellik karması sırasında kullanılacak bit sayısı.

Sonraki adımlar

Azure Machine Learning'in kullanabileceği bileşenler kümesine bakın.

Bileşenlere özgü hataların listesi için bkz. Tasarımcı için özel durumlar ve hata kodları.