Gizli Dirichlet Ayırma bileşeni
Bu makalede, Azure Machine Learning tasarımcısında Gizli Dirichlet Ayırma bileşenini kullanarak sınıflandırılmamış metinleri kategoriler halinde gruplandırma işlemi 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 modellemesidir.
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 metne 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.
Gizli 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ıza ve ardından desenleri çıkarsamanıza gerek yoktur. Bunun yerine algoritma, konu gruplarını tanımlamak için kullanılan olasılıksal bir model oluşturur. Mevcut eğitim durumları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.
Gizli Dirichlet Ayırma bileşenini işlem hattınıza ekleyin.
Metin Analizi altındaki varlık listesinde Latent Dirichlet Allocation bileşenini sürükleyip tuvale bırakın.
Bileşenin girişi olarak, bir veya daha fazla metin sütunu içeren bir veri kümesi sağlayın.
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.
Modellemek istediğiniz konu sayısı için, giriş metninden kaç kategori veya konu başlığı türetmek istediğinizi belirten 1 ile 1000 arasında bir tamsayı girin.
Varsayılan olarak 5 konu oluşturulur.
N-gram için, karma oluşturma sırasında oluşturulan en fazla N gram uzunluğunu belirtin.
Varsayılan değer 2'dir ve hem büyük hem de tek birimlerin oluşturulduğu anlamına gelir.
Çı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 gelen 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ülen veri kümesi çıkışı her zaman normalleştirilir.
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 eşit olduğu varsayılır. Çoğu sözcüğün 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 sparsity değeri 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
total_samples
karşılık gelir.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 parametreye
batch_size
karşılık gelir.Öğrenme güncelleştirme zamanlamasında kullanılan yinelemenin ilk değeri. Çevrimiçi öğrenmede erken yinelemeler için öğrenme hızını azaltan başlangıç değerini belirtin. Bu parametre, scikit-learn içindeki parametreye
learning_offset
karşılık gelir.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 parametreye
learning_decay
karşılık gelir.Veriler üzerinden geçiş sayısı. Algoritmanın veriler üzerinde döngü yapacak maksimum sayısını belirtin. Bu parametre, scikit-learn içindeki parametreye
max_iter
karşılık gelir.
Metni sınıflandırmadan önce ilk geçişte n-gram listesini oluşturmak istiyorsanız Ngramlar sözlüğü oluştur veya LDA'nın öncesinde 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üğün kaydedilmesi daha uzun sürer ve ek depolama alanı kullanır.
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.
İş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 herhangi bir konu veya grupla ilişkilendirilmemiştir. Bunun yerine, her n-gram bulunan sınıflardan herhangi biriyle ilişkilendirilmeyi öğrenme olasılığına sahiptir.
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 konusu 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 Latent Dirichlet Ayırma bileşeninin sağ panelindeki Veri kümesini kaydet simgesini seçerek bileşeni bileşen listesindeki Veri kümeleri kategorisinin altında tutun. Ardından 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. Tek bir görev için tasarlanmış bir model bile doğruluğu geliştirmek 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ğruluk. Benzer öğeler gerçekten benzer mi?
- Çeşitlilik. Model, iş sorunu için gerektiğinde benzer öğeler arasında ayrım yapabilir mi?
- Ölçeklenebilirlik. Çok çeşitli metin kategorilerinde mi yoksa yalnızca dar bir hedef etki alanında mı çalışır?
Metni temizlemek, özetlemek ve basitleştirmek veya kategorilere ayırmak için doğal dil işlemeyi kullanarak genellikle 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 iyileştirebilir:
Sözcüğü kaldırmayı durdur
Büyük/küçük harf normalleştirme
Lemmatizasyon veya kök oluşturma
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ğıtı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 modellemesi
Gizli Dirichlet Ayırma genellikle içerik tabanlı konu modellemesi için kullanılır ve bu da sınıflandırılmamış metinlerden kategorileri öğrenme 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 müşteri incelemeleri birliği sağladığınızı varsayalım. Müşteriler tarafından zaman içinde gönderilen inceleme metni, bazıları birden çok konu başlığında kullanılan birçok terim içerir.
LDA işleminin tanımlamış olduğu bir konu, tek bir ürünün incelemelerini veya bir ürün gözden geçirme grubunu temsil edebilir. LDA'ya göre 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üne özeldir. Diğer ürünlere başvurabilir veya her şey için geçerli olan genel terimler olabilir ("harika", "korkunç"). Diğer terimler gürültü sözcükleri olabilir. Ancak LDA yöntemi, birlikte oluşum olasılıkları dışında evrendeki tüm sözcükleri yakalamaya veya 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.
Dizinler terimi 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ı olduğunu fark edebilirsiniz. Öte yandan, büyük ölçüde negatif terimlerin genellikle belirli bir ürünle ilişkili 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ı | Tip | Aralık | İsteğe bağlı | Varsayılan | Açıklama |
---|---|---|---|---|---|
Hedef sütun(lar) | Sütun Seçimi | Zorunlu | StringFeature | Hedef sütun adı veya dizini. | |
Modele konu sayısı | Tamsayı | [1; 1000] | Zorunlu | 5 | Belge dağıtımını N konu başlıklarına göre modelle. |
N gram | Tamsayı | [1; 10] | Zorunlu | 2 | Karma oluşturma sırasında oluşturulan N gram sırası. |
Normalleştirmek | Boolean | Doğru veya Yanlış | Zorunlu | true | Çıktıyı olasılıklara göre normalleştirin. Dönüştürülen veri kümesi P (konu|belge) ve özellik konu matrisi P(word|topic) olacaktır. |
Tüm seçenekleri göster | Boolean | Doğru veya Yanlış | Zorunlu | False | scikit-learn çevrimiçi LDA'ya özgü ek parametreler sunar. |
Rho parametresi | Satışa Arz | [0.00001; 1.0] | Tüm seçenekleri göster onay kutusu seçildiğinde uygulanır | 0,01 | Konu sözcüğü önceki dağıtım. |
Alfa parametresi | Satışa Arz | [0.00001; 1.0] | Tüm seçenekleri göster onay kutusu seçildiğinde uygulanır | 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çildiğinde uygulanır | 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çildiğinde uygulanır | 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çildiğinde uygulanır | 0 | Erken yinelemeler için öğrenme hızını düşüren ilk değer. parametresine learning_offset karşılık gelir. |
Güncelleştirmeler sırasında yinelemeye uygulanan güç | Satışa Arz | [0.0; 1.0] | Tüm seçenekleri göster onay kutusu seçildiğinde uygulanır | 0,5 | Öğrenme hızını denetlemek için yineleme sayısına uygulanan güç. parametresine learning_decay karşılık gelir. |
Eğitim yineleme sayısı | Tamsayı | [1; 1024] | Tüm seçenekleri göster onay kutusu seçildiğinde uygulanır | 25 | Eğitim yinelemelerinin sayısı. |
Ngramlar için derleme sözlüğü | Boolean | Doğru veya Yanlış | Tüm seçenekleri göster onay kutusu seçili olmadığında geçerlidir | True | LDA hesaplamadan önce ngramlar 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] | Ngramların derleme sözlüğü True olduğunda geçerlidir | 20000 | En büyük ngrams sözlüğü 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'nın öncesinde ngramlar sözlüğü oluşturma | Boolean | Doğru veya Yanlış | Tüm seçenekleri göster onay kutusu seçildiğinde uygulanır | True | LDA'nın öncesinde ngramlar 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çiliyken 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ın sözlüğü oluştur seçeneği False olduğunda geçerlidir | 12 | Özellik karması sırasında kullanılacak bit sayısı. |
Sonraki adımlar
Bkz. Azure Machine Learning için kullanılabilen bileşenler kümesi.
Bileşenlere özgü hataların listesi için bkz . Tasarımcı için özel durumlar ve hata kodları.