Herkese merhabalar THT ailesi bugün bir müddet üzerinde çaba sarf ettiğim Metin analiz uygulaması projesini tanıtacağım 5 adıma bu işi halledeceğiz keyifli okumalar.
1.Adım:Kütüphaneleri import etmek

. VaderSentiment: Metinlerin duygusal tonunu analiz ederken kullanılan bir kütüphanedir bazen NLP (Neuro Linguistic Programming) alanında kullanılır
. Spacy : NLP alanında kullanılan modern bir kütüphanedir metinleri anlamaya, analiz etmeye ve işleyip yapılandırmaya yardımcı olur.
.Langdetect: Girilen metnin dilini algılamaya yarayan bir kütüphane küçüktür ama etkilidir
. googletrans: Meşhur Google Translate API si kullanark çeviri yapmaya yarayan kütüphanedir.Bu ne işimize yarayacak demeyin anlatacam birazdan
. Tkinter : Python dilini bilenler elbet duymuştur bu kütüphaneyi ,GUI oluştururken bu kütüphaneden yararlanırız stabil hemde pythonun gömülü kütüphanelerindendir
Paketlerin kurulumu
2.Adım: Dil problemini ortadan kaldırmak
evet arkadaşlarla dil problemi çok sıkıntı çünkü vaderSentiment kütüphanesini analizini ingilizce diline göre yapıyor bu yüzden çeviri api si kullanıp kullanıcıdan alacağımız metni ingilizceye çevirecez
Öncelikle cevir_ve_analiz_et diye fonksiyon tanımladık ve dil diye bir değişken atadık bu değişkene de langdetect kütüphansinin detect fonksiyonunu atadık bu metnin dilini tespit eder
translator değişkenine ise Translator nesnesini atadık
alttaki şartlı ifade ise "Eğer metin dili ingilizce değilse translator değişkenine atanılan nesnenin translate modülünü kullanarak metni ingilizceye çevirip text değişkenini güncelle ve yeni text değerini döndür." Bakın size Pythonca - Türkçe çeviri yaptım tam anlamıyla yapılan işlem bu
Öncelikle cevir_ve_analiz_et diye fonksiyon tanımladık ve dil diye bir değişken atadık bu değişkene de langdetect kütüphansinin detect fonksiyonunu atadık bu metnin dilini tespit eder
translator değişkenine ise Translator nesnesini atadık
alttaki şartlı ifade ise "Eğer metin dili ingilizce değilse translator değişkenine atanılan nesnenin translate modülünü kullanarak metni ingilizceye çevirip text değişkenini güncelle ve yeni text değerini döndür." Bakın size Pythonca - Türkçe çeviri yaptım tam anlamıyla yapılan işlem bu
3.Adım: Kelimelerin Duygularını Anlayalım

önce duygu isimli bir fonksiyon oluşturalım tabiki parametre olarak metni alacak
sonra text dosyasını işleyebilmemiz için çevrilmiş olması lazım o yüzden üst fonksiyona yolluyoruz
alttaki printi görmezden gelin hata ayıklarken bir problem var mı diye konsoldan bakmak için yazdım
analyzer değişkenine SentimentItensityAnalyzer nesnesini atadık bu nesne metinlerin yapısını inceler çeşitli puanlandırma sistemi kullanarak totalskor ve daha bir sürü işeri yapmaya yarar
bize sentiment skoru lazım onun için analyzera atadığımız nesneden sadece metnin polarity skoru hesaplanmasını istedik
bu hesaplama biçimine göre eğer toplam polarity skoru 0.05 den büyükse pozitif -0.05 den küçükse negatif (-0.05 , 0.05) aralığında ise nötr bir cümledir

4.Adım: Metinleri Analiz edelim

burada nlp değişkenine spacy geliştiricilerinin hazırladığı dil işleme modelinin projemize ekledik
doc değişkenine ise metnimizin dil işleme modeli tarafından işleyip atadık
BU KISIMDA SPİCY KÜTÜPHANESİNİN ÇALIŞMA MATIĞINA DEĞİNMESEM BURDA SABAHA KADAR KOD ANLATAYIM FAYDA ETMEZ O YÜZDEN DETAYLI ANLATACAM
bakın millet "Ali elma yiyor" cümlesini düşünün spicy kütüphanesi bunu 6 yöntemden geçirir:
1.Tokenizasyon:
Burda spicy bu cümleyi ["Ali","elma","yiyor"] şeklinde kelime kelime parçalara ayırır
2.Lemmatizasyon:
Burda ise kelimelerin tek tek köküne bakıyor mesela "yiyor" kökü "ye" aynı bu şekilde analiz yapar
3.Parsing:
Burda kelimelerin öznesini yüklemini nesnesini vs herseyi tespit eder
4.NER (Varlık tanıma):
Burda kelimede özel isimleri cins isimleri kurukm,kuruluş vs isimleri tespit eder
5.Cümle ve Kelime Özellikleri:
Burda cümlenin isim cümlesi mi fiil cümlesi mi ,edilgen fiil mi,etken fiil mi vs tespitini yapar
6.Öznitelik Çıkarma:
burda da metinden anahtar kelimeleri çıkarır Seo kısmında baya faydalıdır
Spicy o kadar kapsamlı bir kütüphane ki tüm özelliklerini burada anlatamam ama kabaca bilmemiz gereken şeyler bunlar.Şimdi kodları anlatmaya devam edelim.
biz doc değişkenine metnin işlenmiş halini atadık ya şimdi orda kelimeler ayrıldı ve her birine token deniyor doc.sents kullanarak ise cümlelere varıyoruz biz bunları bir listeye eklersek ve listenin uzunluğunu alırsak BAM toplam cümle sayısı ortaya çıkar toplam kelime sayısı ise zaten doc da her kelime token halinde bulunmuyor mu direk uzunluğunu alalım fazla uğraşmaya gerek yok
Kelime Sayisi diye bir küme atadım kafanız karışmasın ama burda basit bir algoritma ile metinde hangi kelimeler ne kadar geçiyor diye kontrol ediyoruz bu kadar.
Metinlerde özet olsun diye ilk 100 kelimeyi alsın dedim ve sonuna "..." eklesin diye (Kitapları okumayıp arka kısmında özetteki üç noktayı hep görünce aklıma geldi)
Spicy o kadar kapsamlı bir kütüphane ki tüm özelliklerini burada anlatamam ama kabaca bilmemiz gereken şeyler bunlar.Şimdi kodları anlatmaya devam edelim.
biz doc değişkenine metnin işlenmiş halini atadık ya şimdi orda kelimeler ayrıldı ve her birine token deniyor doc.sents kullanarak ise cümlelere varıyoruz biz bunları bir listeye eklersek ve listenin uzunluğunu alırsak BAM toplam cümle sayısı ortaya çıkar toplam kelime sayısı ise zaten doc da her kelime token halinde bulunmuyor mu direk uzunluğunu alalım fazla uğraşmaya gerek yok
Kelime Sayisi diye bir küme atadım kafanız karışmasın ama burda basit bir algoritma ile metinde hangi kelimeler ne kadar geçiyor diye kontrol ediyoruz bu kadar.
Metinlerde özet olsun diye ilk 100 kelimeyi alsın dedim ve sonuna "..." eklesin diye (Kitapları okumayıp arka kısmında özetteki üç noktayı hep görünce aklıma geldi)
5.Adım: GUI

Bu kısımda anlatmaya fonksiyondaki sonraki kısmında başlayacam çünkü üstteki fonksiyon butona basılınca çalışması gereken fonksiyon
aslında bakınca herşey çok açık bir pencere oluşturuyoruz boyutunu ayarlıyoruz sekmenin başlığını ayarlıyoruz pencerenin bir kısmına metin girilebilen alan ekliyoruz sonra analiz et diye bir buyon koyuyoruz ve bu butona rapor fonksiyonunu bağlıyoruz alt kısma da sonuçların bastırıldığı ve kullanıcının müdahale etmesine izin vermiyoruz tabiki
butona tıklayınca eğer metin kısmı boş ise hata verir şekide ayarladık he birde 1.0 olarak gördüğünüz şeyler satır-sütun
bir sonraki kısımda ise değerlerin result_output kutucuğuna yazdırılması için yaptığımız bir takım işlemler

programın kodlarına ulaşmak isterseniz Github
Buraya kadar okuduysanız gözlerinize sağlık



