Metin sınıflandırması yine burada, çok sınıflı metin sınıflandırma problemlerini çözmek için Scikit-Learn kullanın

Lei Feng Net Not: Bu makale, Lei Feng'in altyazı grubu tarafından derlenen teknik bir blogdur, orijinal başlık Scikit-Learn ile Çok Sınıflı Metin Sınıflandırmasıdır ve yazar Susan Li'dir.

Tercüme | Zhu Yin Bitti | Yuhang MY

İş alanında birçok metin sınıflandırma uygulaması vardır.Örneğin, haberler genellikle konulara göre sınıflandırılır; içerik veya ürünler genellikle etiketlenir; kullanıcılar, çevrimiçi olarak ürünler veya markalar hakkında nasıl konuşulacağına göre destekçilere ayrılır.

Bununla birlikte, çoğu metin sınıflandırma makalesi ve çevrimiçi öğretici, spam filtreleme (spam'e karşı ham), duyarlılık analizi (pozitif ve negatif) gibi ikili metin sınıflandırmasıdır. Çok sayıda durumda, gerçek dünyadaki sorunlarımız bunlardan çok daha karmaşıktır. Bu nedenle, bugün yapacağımız şey bu: tüketici mali şikayetlerini önceden tanımlanmış 12 kategoriye ayırın. Bu veriler data.gov adresinden indirilebilir.

Bir makine öğrenimi bileşeni olarak Scikit-Learn'e güvenerek sistemimizi geliştirmek için Python ve Jupyter Notebook'u kullanıyoruz. PySpark'ta uygulamayı görmek istiyorsanız, lütfen sonraki makaleyi okuyun.

Problem oluşumu

Sorunumuz denetimli bir metin sınıflandırma problemidir. Amaç, sorunu çözmek için hangi denetimli makine öğrenimi yönteminin en uygun olduğunu araştırmaktır.

Yeni bir şikayetin gelmesi göz önüne alındığında, bunu 12 kategoriye ayırmak istiyoruz. Sınıflandırıcı, her yeni şikayetin bir ve yalnızca bir kategori olarak sınıflandırılmasına izin verir. Bu çok sınıflı bir metin sınıflandırma problemidir. Ne yaptığımızı görmek için sabırsızlanıyorum.

Veri tarama

Makine öğrenimi modellerini eğitmeye yatırım yapmadan önce, öncelikle bazı örneklere ve her kategorideki şikayetlerin sayısına bakmalıyız:

Şekil 1

Bu proje için sadece 2 sütuna ihtiyacımız var: "Ürün" ve "Tüketici Şikayet Beyanı".

  • giriş : Consumer_complaint_narrative

Örnek: "Kredi raporumda güncel olmayan bilgiler var. Kredi raporuyla ilgili bir ihtilafım var. Bu bilgi kaydı silinmeli. Bilgiler 7 yıldan daha önce ve kredi raporunun gerekliliklerini karşılamıyor."

  • Çıktı :ürün

Örnek: Kredi raporu

Tüketici şikayeti bildirimi sütunundaki atanmamış olanları sileceğiz ve ürünü bir tamsayı değeri olarak derlemek için bir sütun ekleyeceğiz, çünkü sınıflandırma özniteliği değişkeni için bir tamsayı kullanmak genellikle bir dizeden daha iyidir.

Ayrıca ileride kullanılmak üzere birkaç sözlük oluşturduk.

Temizledikten sonra, kullanmak istediğimiz ilk 5 veri satırı:

şekil 2

Dengesiz sınıflandırma

Her ürün için şikayet değerlerinin dengeli olmadığını görüyoruz. Tüketici şikayetleri çoğunlukla borç tahsilatı, kredi raporları ve ipotekler hakkındadır.

resim 3

Problemlerle karşılaştığımızda, bunları çözmek için standart algoritmalar kullanırız. Geleneksel algoritmalar genellikle sınıflandırmaların çoğuna eğilimlidir ve veri dağılımını dikkate almaz. En kötü durumda, birkaç kategori aykırı olarak kabul edilir ve göz ardı edilir. Dolandırıcılık tespiti ve kanser tahmini gibi bazı örneklerde, modelimizi dikkatlice kurarız veya her bir sınıfın altını çizerek ve yüksek hızda örnekleyerek veri setini manuel olarak dengeleriz.

Ancak, dengesiz öğrenme verisi durumumuzda, azınlık kategorilerine odaklanacağız. Çoğu sınıflandırmada yüksek doğruluğa sahip bir sınıflandırıcı tatmin edicidir. Bununla birlikte, azınlık sınıflandırmaları için de makul doğruluk korunmalıdır. Öyle olsun.

Metinsel ifade

Sınıflandırıcılar ve öğrenme algoritmaları, metin dosyalarını orijinal biçimlerinde doğrudan işleyemezler.Bunların çoğu, değişken uzunluklara sahip orijinal metin dosyaları yerine sabit boyutlu dijital özellik vektörleri gerektirir. Bu nedenle, ön işleme aşamasında metin daha iyi işlenen bir ifadeye dönüştürülecektir.

Metinden özellikleri çıkarmanın yaygın bir yöntemi, bir kelime dağarcığı modeli çantası kullanmaktır: bizim durumumuzda her belge için şikayet beyanı, kelime haznesinin sunumu (genellikle sıklık) dikkate alınacak, ancak bu kelime dağarcığının göründüğü sıra Görmezden gelinir.

Özellikle veri setimizdeki her bir terim için terim frekansı adı verilen bir ölçüm yöntemi hesaplayacağız. Ters belge frekansı, tf-idf olarak kısaltılır. Her tüketici şikayeti ifadesi için bir tf-idf vektörü hesaplamak için sklearn.feature_extraction.text.TfidfVectorizer kullanacağız:

  • Frekans için bir algoritma biçimi kullanmak için sublinear_df öğesini True olarak ayarlayın.

  • min_df, saklanması gereken bir kelimenin bulunması gereken minimum belge sayısıdır.

  • Norm, özellik vektörümüzün Öklid standardı 1'e sahip olmasını sağlamak için l2 olarak ayarlanmıştır.

  • ngram_range, hem tekli hem de ikili gramerleri dikkate aldığımızı belirtmek için) (1,2) olarak ayarlanmıştır.

  • Parazit özelliklerinin sayısını azaltmak için aynı zamirleri ("a", "the", ...) kaldırmak için stop_words'ü "english" olarak ayarlayın.

(4569, 12633)

Şimdi, her 4,569 tüketici şikayeti ifadesi, farklı tekli ve ikili dilbilgisi tf-idf puanlarını temsil eden 12.633 özellik ile temsil edilmektedir.

Her ürün için en alakalı terimleri bulmak için sklearn.feature_selection.chi2'yi kullanabiliriz:

# "Banka hesabı veya hizmeti":

. En alakalı tek dil grameri:

. Banka

. Kredili mevduat

En alakalı ikili dilbilgisi:

. Kredili mevduat ücretleri

. hesap kontrol ediliyor

# 'Tüketici kredisi':

.: En alakalı tek dilbilgisi:

. Araba

Araç

En alakalı ikili dilbilgisi:

. Araç xxxx

Toyota Otomobil Finansmanı

# 'kredi kartı':

. En alakalı tek dil grameri:

Citibank

. Kart

En alakalı ikili dilbilgisi:

. yıllık ücret

. kredi kartı

# 'Kredi raporu':

. En alakalı tek dil grameri:

. Experian

Aquifax

En alakalı ikili dilbilgisi:

. Trans Alliance

. Kredi raporu

# "Borcu geri isteyin":

. En alakalı tek dil grameri:

. Toplamak

Borç

En alakalı ikili dilbilgisi:

. Borç talep edin

. Talep ajansı

# 'Aktar':

. En alakalı tek dil grameri:

Batı Birliği

.paypal

. Aktar

# 'ev ipotek kredisi':

. En alakalı tek dil grameri:

. Değiştir

. ev ipotek kredisi

En alakalı ikili dilbilgisi:

. İpotek şirketi

. Kredi Değişikliği

# "Diğer finansal hizmetler":

. En alakalı tek dil grameri:

. Oral

Pasaport

En alakalı ikili dilbilgisi:

Ödemeye yardımcı olun

. Ödeme gerekli

# 'Kredi ödeme günü':

. En alakalı tek dil grameri:

. Borç para

. Ödeme günü

En alakalı ikili dilbilgisi:

. Ana bölüm

. Kredi ödeme günü

# 'Ön ödemeli kart':

. En alakalı tek dil grameri:

. Hizmet

. Ön ödemeli

En alakalı ikili dilbilgisi:

. Kazanılan para

. Ön ödemeli kart

# 'Öğrenci kredisi':

. En alakalı tek dil grameri:

Öğrenci

. navient

En alakalı ikili dilbilgisi:

. Öğrenci kredileri

. Öğrenci kredileri

# 'Sanal para birimi':

. En alakalı tek dil grameri:

. uğraşmak

. https

En alakalı ikili dilbilgisi:

. xxxx sağlayıcı

Para ihtiyacı

Bunların hepsi mantıklı, değil mi?

Çok seviyeli kategori sınıflandırıcı: özellikler ve tasarım

  • Denetimli bir sınıflandırıcıyı eğitmek için önce "tüketici şikayeti bildirimini" dijital bir vektöre dönüştürüyoruz. TF-IDF ağırlık vektörüne benzer bir vektör gösterimi geliştirdik.

  • Metnin vektör temsilini aldıktan sonra, görünmez "tüketici şikayeti beyanı" nı eğitmek ve "ürünün" hangi kategoriye gireceğini tahmin etmek için denetimli bir sınıflandırıcı eğitebiliriz.

Yukarıdaki tüm veriler dönüştürüldükten sonra, şimdi tüm özelliklere ve etiketlere sahibiz, sınıflandırıcıyı eğitmenin zamanı geldi. Bu tür problemler için kullanabileceğimiz birçok algoritma mevcuttur.

  • Naive Bayes sınıflandırıcı: En uygun kelime hesaplaması polinom değişkenleridir:

Eğitim ayarlarını yapılandırdıktan sonra bazı tahminler yapalım.

Şekil 4

Şekil 5

Fena değil!

Model seçimi

Artık test etmek, doğruluğunu değerlendirmek ve olası sorunların kaynağını bulmak için farklı makine öğrenimi modellerini kullanabiliriz.

Test için aşağıdaki dört modeli kullanacağız:

  • Lojistik regresyon

  • (Çoklu) Naif Bayes

  • Doğrusal destek vektör makinesi

  • Rastgele orman

Şekil 6

model adı

DoğrusalSVC: 0.822890

LogisticRegression: 0.792927

Çok terimli NB: 0.688519

RandomForestClassifier: 0.443826

İsim: doğruluk, dtype: float64

Doğrusal destek vektör makinesi ve lojistik regresyon diğer iki sınıflandırıcıdan daha iyi performans gösterir.Doğrusal destek vektör makinesinin küçük bir avantajı vardır, yaklaşık% 82 doğruluk oranına sahiptir.

Model değerlendirmesi

En iyi modelimizle (doğrusal destek vektör makinesi) devam ederek, tahmin edilen ve gerçek etiketler arasındaki farkı göstermek için kafa karışıklığı matrisine bakıyoruz.

Şekil 7

Çoğu tahmin çapraz çizgilerle sonuçlanır (tahmin edilen etiketler = gerçek etiketler), ki bu tam olarak istediğimiz şeydir. Ancak yine de birçok yanlış sınıflandırma var. Bunlara neyin sebep olduğunu görmek ilginç olabilir:

Figür 8

Resim 9

Gördüğünüz gibi, bazı yanlış sınıflandırılmış şikayetler birden fazla konuyla ilgilidir (örneğin, kredi kartları ve kredi raporlarıyla ilgili şikayetler). Bu tür bir hata her zaman olacaktır.

Ardından, her kategori için en alakalı terimleri bulmak için ki-kare testini kullanırız:

# "Banka Hesap Numarası ve Hizmetler":

. En yüksek tek dil dilbilgisi:

. Banka

. Hesap

. En yüksek ikili semantik:

. banka kartı

. Kredili mevduat ücretleri

# 'Tüketici kredisi':

. En yüksek tek terimli semantik:

Araç

. küçük bir araba

. En yüksek ikili semantik:

. bireysel kredi

. Geçmiş xxxx

Bul

Keşif Kartı

# "Kredi":

. xxxx hesabı

. Trans Alliance

# "Borcunuzu Geri Alın":

. Kredi hesabı

. zaman sınırı

Çevirin.

. Para göndermek

. alıkoyma

Ev İpotek Şirketi

. Kredi

# 'Ön ödemeli kart':

. Kartı Kullan

. denizcilik kredisi şirketi

Salima-Öğrenci Kredi Piyasası Derneği

# 'Sanal para birimi':

. Tek terimli semantiğe kadar:

. https

. tx

. En yüksek ikili semantik:

Para ihtiyacı

. xxxx sağlayıcı

Bunlar beklentilerimiz doğrultusunda.

Son olarak, her kategori için bir sınıflandırma raporu yazdırıyoruz:

Resim 9

Kaynak kodu Github'da bulunabilir ve geri bildirimlerinizi ve sorularınızı dört gözle bekliyoruz.

Orijinal bağlantı: https://towardsdatascience.com/multi-class-text-classification-with-scikit-learn-12f1e60e0a9

Lei Feng Ağı Lei Feng Ağı

Galaxy S10 / katlanabilir ekranlı telefon Samsung, CES2019'da kaslarını sergileyecek
önceki
Gerçek bir amiral gemisinin ne olduğunu anlamak için bu arabaya bir bakın!
Sonraki
Glory MINI fotoğraf yazıcısı Xiaomi'ye karşı bağımsız olarak gelişiyor ancak Huawei'den ayrılmayacak!
Kesinlikle kara at! "Kaçış Odası" nın ağızdan ağza sözleri yükselmeye devam ediyor ve binlerce kişi tarafından övgüyle karşılanıyor!
Fengshen Prequel'in ekipmanında, öğelerin maliyet etkinliğini rasyonel olarak ayırt eden büyük ayarlamalar
Cook ağlayacak! Qualcomm, mahkemeden tüm iPhone'ların satışını yasaklamasını istedi
Prisma stili aktarım efektini gerçekleştirebilecek harika bir iOS uygulaması oluşturmayı öğretin
"Aktif olarak hareket eden ve asla pes etmeyen" Wang Xin, bir geri dönüş yapacak ve şirketin yeni ürünlerini önümüzdeki yıl piyasaya sürecek!
Infiniti QX50 konsept otomobili, üretim versiyonuna yakın olarak tanıtıldı
Endişeli başyapıt "22 Yıl Sonra İtiraflar" gösteriye girerek toplumdaki sıcak konulara odaklanıyor ve hararetli tartışmalara yol açıyor
Hepsi 2019! 10GB RAM amiral gemisi cep telefonu çantası satın alın, modası geçmiş olmayacak
İkna etme, sadece yap, önceki tank Lu Bu üçünü de öldürdü
Fotoğraf çek ve kral ol! vivo X9s / X9s Plus piyasaya çıktı
Yeryüzü-Yuanyang Teraslarının Sanat Eserleri, Yunnan
To Top