• Buradasın

    Naive Bayes Sınıflandırıcısı ile Tweet Duygu Analizi Eğitimi

    youtube.com/watch?v=ssVGJ7vh0F8

    Yapay zekadan makale özeti

    • Bu video, bir eğitmen ve öğrenciler arasında geçen interaktif bir NLP (Natural Language Processing) eğitim dersidir. Mehmet, Erhan, Almera ve Nezihe adlı kişiler dersin farklı bölümlerinde yer almaktadır.
    • Video, Twitter'dan alınan tweet verilerini kullanarak Naive Bayes sınıflandırıcısının nasıl eğitileceğini adım adım göstermektedir. İçerik, utility fonksiyonlarının yazılması, verinin train ve test setlere ayrılması, count_tweet fonksiyonu ile tweet temizleme ve frekans hesaplama, log prior ve log likelihood değerlerinin hesaplanması, eğitim ve test fonksiyonlarının yazılması ve modelin değerlendirilmesi gibi konuları kapsamaktadır.
    • Ders boyunca tweetlerin pozitif veya negatif olarak sınıflandırılması için gerekli matematiksel hesaplamalar gösterilmekte, hata analizi yapılmakta ve emoji'lerin tweetlerin duygusal tonunu nasıl etkilediği incelenmektedir. Video, gelecek derslerde diction üç, random forest ve derin öğrenme konularının işleneceği bilgisiyle sonlanmaktadır.
    00:06Naive Bayes Görevine Giriş
    • Bu hafta son olarak Naive Bayes'in assignment'ına bakılacak ve GitHub'dan çekilen assignment ile arasında küçük farklılıklar bulunabilir.
    • Öğrencilerin kendi cevaplarını yazmaları veya mevcut cevapları silip tekrar yazmaları seçenek olarak sunuluyor.
    • Naive Bayes'i kodlarken birkaç yardımcı fonksiyon yazılacak ve öncelikle utility fonksiyonları ve gerekli paketler import edilecek.
    01:36Veri Hazırlama
    • Veri setinde toplam 10 bin tweet bulunuyor, bunların 4 bin'i pozitif, 1 bin'i negatif ve test set için kalanlar kullanılıyor.
    • Pozitif ve negatif tweet'leri okuyup, train ve test setlere ayırma işlemi gerçekleştiriliyor.
    • Label'lar (y'ler) bir araya getirilerek oluşturuluyor.
    02:19Tweet Ön İşleme Fonksiyonu
    • "proses tweet" fonksiyonu karmaşık tweetleri temizleyerek mansion'ları, RT'leri, hashtag'leri ve linkleri silerek temiz bir tweet çıkarmakta.
    • Bu fonksiyon aynı zamanda stemming işlemi de gerçekleştiriyor.
    • Bu fonksiyon geçen haftaki fonksiyonla aynı işlevi görüyor.
    02:57Count Tweet Fonksiyonu
    • "count tweet" fonksiyonu tweet listesi alıp temizleyerek bir dictionary döndürüyor.
    • Dictionary'nin key'i stem edilmiş kelime ve class label'ını barındıran bir tuple, value'su ise tweet koleksiyonunda o context'te geçme frekansı.
    • Fonksiyonun büyük kısmı hazır olarak verilmiş, sadece result dictionary'si ve bazı kısımların değiştirilmesi gerekiyor.
    06:27Naive Bayes Eğitimi
    • Naive Bayes eğitimi için formüller üzerinden d (toplam tweet sayısı), pozitif tweet olasılığı ve negatif tweet olasılığı hesaplanıyor.
    • Log prior hesaplamak için pozitif tweet olasılığı bölü negatif tweet olasılığı hesaplanıp logaritması alınıyor.
    • Kelimenin pozitif ve negatif context olasılıkları frekanslardan faydalanarak ve Laplace smoothing uygulanarak hesaplanıyor.
    10:14Frekans Dictionary ve Naive Bayes Eğitimi
    • Frekans dictionary'si oluşturmak için "count tweet" fonksiyonu çağrılıyor ve boş bir dictionary ile training set için frekanslar hesaplanıyor.
    • Bu işlem 10 bin tweet'i ön işleme geçirmek için biraz zaman alıyor.
    • "train naive bayes" fonksiyonu yazılacak ve bu fonksiyon frekans dictionary'sini, training set tweet listesini ve etiketlerini alıp Naive Bayes classifier'ı kodlayacak.
    12:06Vocabulary Boyutu Hesaplama
    • Vocabulary boyutu (V) frekans dictionary'sindeki tüm unique kelimelerin sayısını veriyor.
    • Frekans dictionary key'leri alınarak tuple'daki kelimeler elde ediliyor ve set ifadesi kullanılarak duplicate elemanlar temizleniyor.
    • Son olarak set'in uzunluğu alınıyor ve bu vocabulary size olarak hesaplanıyor.
    14:09Naive Bayes Algoritması İçin Pozitif ve Negatif Örneklerin Hesaplanması
    • Frekans dictionary'sinden faydalanarak pozitif ve negatif kelimelerin toplam geçme sayıları hesaplanıyor.
    • Her bir kelime için, pozitif kontekste geçme sayısı toplam pozitif kontekste geçme sayısına, negatif kontekste geçme sayısı ise toplam negatif kontekste geçme sayısına ekleniyor.
    • NPOS ve NNEG değerleri, frekans dictionary'si kullanılarak toplam pozitif ve toplam negatif kelime sayısını hesaplamak için kullanılıyor.
    16:27Log Prior Hesaplama
    • Toplam döküman sayısı, train y vektörünün uzunluğundan alınarak hesaplanıyor.
    • Pozitif örnek sayısı, train y vektöründe 1 değerlerinin toplamı olarak, negatif örnek sayısı ise 0 değerlerinin toplamı olarak hesaplanıyor.
    • Log prior değeri, pozitif örnek sayısının negatif örnek sayısına oranı alınarak logaritma alınarak hesaplanıyor.
    20:30Log Likelihood Hesaplama
    • Vocabulary'deki her bir kelime için lookup fonksiyonu kullanılarak pozitif ve negatif frekansları bulunuyor.
    • Laplace smoothing için pozitif frekansı 1 eklenerek toplam pozitif kontekste geçme sayısına, negatif frekansı 1 eklenerek toplam negatif kontekste geçme sayısına bölünerek probability'ler hesaplanıyor.
    • Log likelihood değeri, pozitif probability'nin negatif probability'ye oranı alınarak logaritma alınarak hesaplanıyor.
    26:09Naive Bayes Prediction Fonksiyonu
    • Naive Bayes için bir predict fonksiyonu yazılacak ve bu fonksiyon tweet to predict, log prior ve log likelihood parametrelerini alacak.
    • Tweet önce process_tweet fonksiyonu ile işleniyor ve probability değeri sıfırla başlatılıyor.
    • Log prior değeri probability'ye eklenerek, tweet içerisinde geçen tokenların her biri için log likelihood değerleri toplanarak tahmin yapılıyor.
    27:47Tweet Duyarlılık Sınıflandırıcısının Çalışma Prensibi
    • Sınıflandırıcı, her tweet içindeki her kelimenin (token) log likelihood değerini toplar ve bu toplam sıfırdan büyükse tweet'i pozitif, sıfırdan küçükse tweet'i negatif olarak sınıflandırır.
    • "I love learning NLP with Inziva" gibi bir tweet için model pozitif bir değer verirken, "I hate learning NLP with Inziva" gibi bir tweet için negatif bir değer verir.
    • Emojiler (gülen yüz, ağlayan yüz) gibi semboller tweet'in duyarlılığını büyük ölçüde etkiler; örneğin gülen yüz sembolü eklenmesi tweet'in pozitif olarak değerlendirilmesine neden olur.
    30:08Modelin Test Edilmesi
    • "Twilight is much better movie than Lord of the Rings" gibi bir tweet model tarafından pozitif olarak değerlendirilirken, "verse" kelimesi negatif bir ağırlıkta olduğu için bu tweet'i negatif olarak sınıflandırır.
    • "XD" sembolü model tarafından negatif bir değerle ilişkilendirilir, bu da tweet'in genellikle alaycı bir tonla yazıldığını gösterir.
    • Model, tweet'lerdeki sembollerin (emojiler, özel karakterler) duyarlılık sınıflandırmasında önemli bir rol oynadığını gösterir.
    34:31Test Seti ve Hata Hesaplama
    • Test seti üzerindeki tweet'ler için modelin tahminlerini almak için "nave_bayes_predict" fonksiyonu kullanılır ve tahminler 0 veya 1 olarak sınıflandırılır.
    • Hata hesaplaması için mutlak değerlerin ortalaması alınır ve bu değer "accuracy" olarak adlandırılır.
    • Sınıflandırma problemlerinde genellikle mean square error yerine absolute error kullanılır çünkü sınıflandırma problemlerinde sınıflar 0 ve 1 arasında olduğu için bu yöntem daha uygundur.
    41:44Model Performansı
    • 2000 tweet için işlemler yapıldığında model %99.40 doğruluk oranına ulaşmıştır.
    • Model bazı tweet'lerde hatalı sınıflandırma yapabilir; örneğin bir tweet negatif olmasına rağmen pozitif olarak sınıflandırılabilir.
    42:53Kelimeleri Pozitif ve Negatif Oranına Göre Filtreleme Fonksiyonu
    • Son bir fonksiyon olan "filter worlds by ratio of positive to negative count" ile bazı kelimelerin diğerlerinden daha pozitif veya negatif olduğu belirleniyor.
    • Bu fonksiyon, log likelihood hesaplamadan ziyade frekanslar üzerinden pozitiflik ve negatiflik oranını hesaplıyor.
    • Fonksiyon, kelimeleri pozitif ve negatif tweetlerdeki geçme sıklığına göre (pozitif+1)/(negatif+1) formülüyle oran hesaplıyor ve threshold değerine göre en pozitif ve en negatif kelimeleri buluyor.
    44:44Fonksiyonun Çalışma Prensibi
    • Bu oranlar kullanılarak karar verilemediği tweetler tespit edilebilir ve kesinlik katabilir, precision artırabilir.
    • Fonksiyon, pozitif diyorsa o tweetin pozitif olma olasılığını daha yükseğe, negatif diyorsa o tweetin negatif olması olasılığını daha yükseğe çekebilir.
    • Fonksiyon, dataset'in dengeli olduğunu varsayıyor, aksi takdirde sonuçların ölçeklendirilmesi gerekebilir.
    47:35Fonksiyonun Uygulanması ve Sonuçları
    • Fonksiyon, pozitif negatif ratio için hesaplama yaparak threshold değerine göre kelimeleri filtreliyor.
    • Negatif tweetlerde sıklıkla geçen "üzgün surat" ve "ağlayan surat" gibi ifadeler çok negatif ratio'ya sahipken, pozitif tweetlerde "gülücük" gibi ifadeler çıkıyor.
    • Threshold değeri arttırıldıkça (500, 250, 100) farklı sonuçlar elde ediliyor; örneğin 500'de sadece gülen suratlar, 250'de iki nokta üst üste de ekleniyor.
    52:27Hata Analizi ve Sonuçlar
    • Hata analizi fonksiyonu, test setindeki yanlış etiketlenmiş örnekleri gösteriyor.
    • Model özellikle gülen ve ağlayan surat ifadelerinde hatalar yapıyor.
    • Bazı tweet'lerde "üzgün surat" ifadesi olmasına rağmen model pozitif tahmin yapıyor, bu da üzgün suratın ağırlığının o kadar yüksek olmadığını gösteriyor.
    57:04Dersin Kapanışı
    • Ders saat 4:30'a kadar sürmüş ve verimli geçmiştir.
    • Öğrenciler feedback formundan geri bildirim verebilirler.
    • Haftaya Nezihe ile dersler devam edecek.
    57:55Teşekkür ve Zaman Dilimi
    • Katılımcılara katılmaları ve gelmeleri için teşekkür edildi.
    • İlk iki hafta tamamlanmış durumda.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor