/Sentiment-Analysis-in-Turkish-Film

Graduation Project/Sentiment Analysis in Turkish Film Reviews

Primary LanguagePython

Proje dosyası içerisinde veriseti ve .py uzantılı dosyalar bulunmaktadır.Tüm proje içeriği paylaşılmamıştır.

Demo


Proje İşleyişi

1. Veri setini oluşturma
2. Veri seti önişleme
3. Count Vectorizer Özellik vektörü çıkarımı ve matrise dönüştürme
4.Lojistik Regresyon, Naive Bayes ve Destek Vektör Makineleri ile ayrı ayrı eğitme
5. TF-IDF Vectorizer Özellik vektörü çıkarımı ve matrise dönüştürme
6.Lojistik Regresyon, Naive Bayes ve Destek Vektör Makineleri ile ayrı ayrı eğitme
7. İki özellik vektörü ile yapılan eğitimlerin başarı oranları karşılaştırması yapma
8. Başarılı modeli kullanarak kullanıcıya yorum ekranı sunma


Veri Seti

Çeşitli film izleme platformlarından toplanmış 11.506 negatif, 12.144 pozitif yorum olmak üzere toplam 23.650 yorum içermektedir.


Ön İşleme

Günlük konuşma dili ile yazılmış olan yorumlar çokça gereksiz kelime, anlamsız karakter içermektedir ve buda anlam karmaşasına sebep olmaktadır. Bunu önlemek ve daha sade veri seti elde etmek için ön işleme uygulanmıştır.  
Noktalama işaretleri de kelimeleri sayısal vektörlere dönüştürme aşamasında gereksiz yere vektörlerin büyüklüğünü arttıracak bir unsur olduğundan tüm noktalama işaretleri ve sayılar temizlenmiştir. Türkçe alfabede yer almayan tüm karakterler kaldırılmıştır. Şapkalı karakterler eşleniği ile değiştirilmiştir. Kelime vektörlerinin bütünlüğünü sağlamak için tüm harfler küçük harfe dönüştürülmüştür.

Zemberek Kütüphanesi Kullanılmıştır.


Count Vectorizer)

Bir metin belgesindeki terim / jeton sayımlarını vektöre dönüştürmek için kullanılır. 

Çok fazla terim olduğu için sınırlama koyulur ve vektör boyutları böylece daha küçük tutulur.
vect = TfidfVectorizer(min_df = 2,ngram_range=(1,2)).fit(X_train)
Projede 2 metinden daha az metinde gözüken kelimeleri, listeden kaldırdım.

Bu sınıf kullanılarak yapılan özellik çıkarımında ilk ve son 20 özellik


TF-IDF Vectorizer

Bir metinde geçen terimlerin çıkarılması ve bu terimlerin geçtiği miktara göre çeşitli hesapların yapılması üzerine kuruludur.

Örneğin, 0 – Bu film gerçekten muhteşem.
1 – Yaptığı muhteşem filmlerden sadece biri bu.
2 –Bu kadar sıkıcı film görmedim.
Birinci metin içinde muhteşem terimi için hesaplamamızı yaparsak
TF = 2 / 4 = 0.5�IDF = log(3/2) = 0.18
TF-IDF =0.5*0.18=0,09

Projede TF-IDF ile ilk ve son 20 özellik listelendiğinde


Lojistik Regresyon

Bu teoremde S biçimli bir eğri olan Lojistik Fonksiyon kullanıldığı için bu adı almıştır.

Bir yorumun iyi ya da kötü olduğunu hesaplarken eğer olasılık n(t)>= 0.5 ise pozitif bir yorumdur. Yani eğri altında kalan sonuçlar negatif, üstünde kalanlar ise pozitif yorumdur.


Naive Bayes

Naive Bayes sınıflandırıcısının temeli Bayes teoremine dayanır ve her değeri diğer değerlerden bağımsız olarak sınıflandırır. Olasılık kullanarak ve belirli bir dizi özelliğe dayanarak bir sınıfı, kategoriyi tahmin etmemizi sağlar.

A Pozitif – B Negatif P ( A | B ) = B olayı gerçekleştiğinde A olayının gerçekleşme olasılığı P ( B | A ) = A olayı gerçekleştiğinde B olayının gerçekleşme olasılığı
P ( B ) = B olayının gerçekleşme olasılığı


Destek Vektör Makineleri

Bu algoritmada, her bir veri maddesini belirli bir koordinatın değeri olan her özelliğin değeri ile birlikte n-boyutlu boşluğa (burada n sahip olduğunuz özelliklerin sayısı) bir nokta olarak çizilir. Ardından, iki sınıftan oldukça iyi ayrım yapan hiper-düzlemi bularak sınıflandırma gerçekleştirilir

Pozitif yorumların mavi renk, negatif yorumların kırmızı olduğunu düşünürsek, yapılan tahmin bu hiper-düzlem üzerinde olursa pozitif altta kalırsa negatif yorum olarak sınıflandırılır.


Model Başarı Karşılaştırma


Ekran Çıktısı