Duygu Analizi Çalışması - Bloğum

, 12 Aralık, 2016

Duygu Analizi Çalışması

Bu süreç boyunca elde bulunan eğitim kümesinden veri ambarı tasarımı yapılması hedeflenir. Kelime bazlı frekans hesabı yapılır, kelime kümesi seçilir, seçilen küme ayrı bir tabloda saklanır ve kaynak olarak kullanılır. Veri ambarı söz konusu 2 tablo yardımıyla meydana getirilir ve süreç sonucunda artık veri algoritma girdisi olarak hazır hale gelmiş olur.

Kelime Bazlı Frekans Hesabının Yapılması *

Duygu ağırlığı olan kelimeler seçme aşamasına ulaşabilmek için eğitim kümemizde bulunan girdilerin içeriklerindeki her bir kelimenin frekans hesabının yapılması gerekir. Bu frekans hesabı sonunda elde edilen yeni veri tabanı tablosundan kelimeler seçerek veri ambarı tasarlanır.

Bu adımı gerçekleştirmek üzere bir frekans tablosu yaratılır ve bu tabloya PHP çatımız yardımıyla oluşturulan fonksiyonlar sayesinde kelimeler eklenir. Fonksiyon her bir girdi metnini alıp boşluklara göre kelimelere böler, girdinin her bir kelimesini frekans tablosunda arar, varsa sayısını güncelleyerek bir arttırır yoksa tabloya ekleyerek bir sonraki kelimeye geçer. Kelime seçimi yaparken karar verme açısından yardımcı olsun diye her bir kelime için hangi analizde kaç tane geçtiği bilgisi de tutulur. Bu işlevler yönetim paneline kazandırılır.

IDWORDCOUNTCOUNT_NCOUNT_HCOUNT_U
78adam830406207217
236iyi689342178169
1341lan662300209153
1196son572305134133
620insan555252131172
175guzel537264166107
2056yeni3401699477
518para33216264106

Çizelge: Frekans tablosundaki bazı kayıtlar.

Bu çalışmada 8 çekirdekli bir bilgisayarda saatlerce frekans hesabı yapıldıktan sonra frekans tablosunda yaklaşık 100.000 kelime yer almış ve bunların arasından yaklaşık 63.000’i sadece bir kez geçmiş olduğu saptanmıştır.

Duygu Ağırlıklı Kelimelerin Seçimi *

Veri ambarı tasarımı hedefine adım adım yaklaşırken duygu ağırlıklı kelimeleri seçmek için bir kaynak oluşturuldu. Bu kaynaktan yararlanarak kelimeler seçilir ve yeni bir seçilmiş kelime tablosu oluşturulur.

Frekans tablosu “COUNT” kolonunun değeriyle büyükten küçüğe doğru sıralanır ve Mysql Workbench yardımıyla Excel CSV dosyası olarak çıktı alınır. Alınan bu çıktı içerisindeki kelimelerden, araştırmacı ve sözlüğü kullanan kişilerden oluşan bir takım mutlu veya mutsuz gibi polar ağırlıkları olan kelimeleri tartışarak seçerler. Bu kelimeler çok sayıda girdi içerisinde geçen kelimeler, sayısı baskın olmasa da keskin bir şekilde duyguyu hissettiren kelimeler ve eğitim kümesinde kendini ifade etme şansı bulamamış, kullanımı sonucunda duygu ağırlığını ciddi şekilde etkileyen kelimeler olabilirler. Seçimi tamamlanmış kelimeler seçilen kelime tablosuna aktarılırlar.

Bu çalışmada bu şekilde yaklaşık 200 kelime seçilmiştir. Seçimlere karar verirken daha önce bu konuda çalışmalara imza atmış olan proje danışmanının yardımlarından yararlanılmıştır.

WORDCNTWORDCNTWORDCNTWORDCNT
bile1005dedim188chp106dibine36
ya907arasinda187takip105orgut34
iyi689turkiyede185ilan103tecavuze33
zaten669SMILEEMOTICON175arkadasim101kuran33
lan662amina174kan99vicdan30
insan555bizi172hava99muhalefet29
guzel537gol168nefret99fiziksel28
artik535calisan167adamlarin98polise27
ilk526cevap162saygi97mutsuz27
oyle488bok160aciklama96patlama25
neden412el160galatasaray96pislik24
bunun402sozluk160besiktas95bozuk24
olsa387maci152teror94suriyeli24
fazla376yoktur152sikeyim79gencecik24
insanlar359kendisine146adalet79osmanli24
beni342hak145anasini78islami23
yeni340cocugu145islam78muslumanlar21
kisi337sabah141sozlukte77nobel21
hicbir337orospu141canim77irkci20
ulan336gelecek140terorist76yasta20
para332entry140aci75kizla18
burada325cikip138tecavuz74pezevenk18
eden303kendine136efendim74polisler18
an302futbol135pkk73bal18
olmayan302kardesim134film73vur18
sizin289bunlarin134sehit67sabir17
tarafindan271insanlari132futbolcu66karanlik17
kotu260parti132soguk64kahkaha17
allah254a129bomba64sikik16
ulkede253milli128isid63gotunuze16
gerek250yalniz128sicak62saniyorsunuz16
adamlar249baslik127dizi61bombayi15
oy247kendimi127sampiyon57burs15
tabi244sacma127SADEMOTICON51cocukluk14
olabilir238yazik125euro48multeci14
yaptigi237ciddi124cay46hmm14
onemli237evde123sert45dondurma14
cocuk235polis120katil45cocugunun14
bence234mutlu119genis45siddetli13
akp234yahu116birinci44irkcilik12
diyor230mal116saldiri44icmeye11
hemen229eksi113lanet43jest11
mesela214gordum110tatli41hastane11
ulkenin210hdp110siddet39polisten10
insanlarin209ev110serefsiz38yerim10
kiz205takimi109evin37yaratiklar9
sanirim196oglum108hirsiz36mina8
devlet196kadinin107ataturk36iftira7
takim195devletin107aksine36dumur7
ulke194fenerbahce107

Çizelge: Duygu ağırlığı olan seçilmiş sözcükler.

Veri Ambarının Dinamik Olarak İnşa Edilmesi *

Veri madenciliği algoritmalarının girdisi olarak kabul ettiğimiz veri matrisinin oluşturulması için atılan adımlar tamamlandığında veri tabanı tablosu bu kez farklı bir biçimde tasarlanır. Adım adım oluşturulan süreçlerin işaret ettiği tablodur veri ambarı. Her bir satırı bir girdiyi temsil eder ve her bir sütunu seçilmiş olan kelimelerden meydana gelir. Girdi içerisinde geçen kelimeler ilgili sütunda 1 değerini alırken içermeyenler 0 değerlerini alırlar. Kelime sütunlarının sonunda girdinin analizini tutan kolon bulunur.

IDENTRY_IDWORD_23

WORD_63741ANALYSIS
121

0n
2510h
3800u

Çizelge: Veri ambarı tablosunun yapısı.

Yönetim panelinin duygu analizi sürecindeki fonksiyonlardan sonuncusu olan veri ambarının oluşturulması birkaç adımdan oluşur. İlk olarak tablo yapısına seçilen kelimelerin benzersiz sütunları “WORD_” kelimesinin sonuna bir alttan tire sonrasında eklenerek kolonlar oluşturulur. Böylece veri ambarının genişliği dinamik olarak kurulmuş olur. Sonrasında her bir girdi tekrar kelimelerine ayrıştırılıp, sırasıyla her girdi kelimesi seçilen kelime tablosundaki bütün kelimeler ile karşılaştırılır. Eğer eşleşme gerçekleşirse girdi veri ambarına ilgili kelime için 1 değerini alarak kaydedilir.

Duygu analizi sırasında projenin planladığı bir diğer başarım metodu ise veri ambarını 3 farklı biçimde tasarlamaktır. Bu tasarım sayesinde veriler 2 boyutlu olarak duygu analizinden geçebileceklerdir. 1. boyutta girdiler nötr yada polar, 2. boyutta ise mutlu yada mutsuz olarak işaretlenebilir hale geleceklerdir. Bunu gerçekleştirmek için yönetim paneline seçenek eklenir.

Proje yönetim panelinde yer alan veri madenciliği sayfası. Proje yönetim panelinde yer alan veri madenciliği sayfası.

Yukarıdaki şekildeki aşamalardan geçerek oluşan veri ambarı artık veri madenciliği işlemine hazırdır. Projede karar kılınan veri ambarı yapısı aşağıdaki çizelgede gösterilen testler sonucunda yaklaşık 200 seçilmiş kelime kolonundan oluşan ve içerisinde en az 3 seçilmiş kelime geçen girdilerden meydana gelir. Bu bağlamda uygulama kolaylığı ve verdiği başarı göz önüne alınarak SMO algoritması veri madenciliği yöntemi olarak seçilmiştir.

Veri Madenciliği Aşaması *

Bütün olarak sürecin son adımı olan bu adımda veri madenciliği uygulamaları test edilerek oluşturulan veri ambarından amacına uygun, en verimli olanını seçmek hedeflenir. Bu seçim 2 boyutta oluşturulan verilerin başarı oranlarıyla yapılır. Birinci boyutta verinin polaritesine göre, ikinci boyutta ise verinin duygu türüne göre ölçümler yapılır.

weka-smo SMO fonksiyonel algoritmasıyla gerçekleştirilen WEKA çalışması.

 

Veri ambarı Workbench yardımı ile CSV formatında dışa aktarılır. WEKA’nın Explorer penceresinden dışa aktardığımız dosya seçilir ve ilk iki sütun bir karara etkisi olmadığı için devre dışı bırakılır. Sınıflandırma sekmesinden bir algoritma seçilir ve Cross-Validation seçeneği ile sonuç elde edilir. Bu yöntem veriyi yanındaki kutuda belirtilen yüzdeye göre bölerek her defasında farklı bir parçasından olmak üzere test ederek sonuç ürettiği için daha verimli sonuçlar elde edilebilir.

ALG.YÖNTEMN H UN PH U
NaiveBayes100 Kelime (6323)46.0699 %54.2464 %62.4927 %
‘’ Min 3 kel. içeren(2309)48.246  %56.9511 %68.9984 %
150 Kelime (6323)45.0894 %55.9545 %62.9597 %
‘’ Min 3 kel. içeren(3043)48.4719 %59.4151 %68.6732 %
200 Kelime (6323)45.3582 %56.0177 %63.1349 %
‘’ Min 3 kel.içeren(3239)48.3483 %58.9071 %68.8005 %
SMO100 Kelime (6323)47.6198 %55.6856 %63.8646 %
‘’ Min 3 kel. içeren(2309)49.5453 %56.9078 %68.9984 %
150 Kelime (6323)48.1575 %57.789  %65.2948 %
‘’ Min 3 kel. içeren(3043)50.838  %58.6592 %68.1204 %
200 Kelime (6323)48.6636 %57.9155 %65.5867 %
‘’ Min 3 kel.içeren(3239)51.59   %58.2587 %69.6078 %
lazyIBk100 Kelime (6323)44.0614 %52.5384 %58.9901 %
‘’ Min 3 kel. içeren(2309)41.1    %51.3209 %56.8362 %
150 Kelime (6323)43.9348 %53.3449 %58.7274 %
‘’ Min 3 kel. içeren(3043)43.2468 %51.6595 %58.3538 %
200 Kelime (6323)44.4251 %53.3133 %58.202  %
‘’ Min 3 kel.içeren(3239)43.5011 %51.0034 %58.5352 %
J48100 Kelime (6323)44.346  %54.6734 %61.7046 %
‘’ Min 3 kel. içeren(2309)41.0134 %52.9233 %61.3672 %
150 Kelime (6323)44.2828 %55.3693 %61.9089 %
‘’ Min 3 kel. içeren(3043)43.1811 %55.2744 %61.4251 %
200 Kelime (6323)44.0297 %55.5907 %60.3327 %
‘’ Min 3 kel.içeren(3239)44.3347 %55.2331 %60.6113 %
Random Forest100 Kelime (6323)44.346  %54.3413 %62.4051 %
‘’ Min 3 kel. içeren(2309)47.2066 %56.2148 %67.0906 %
150 Kelime (6323)45.121  %55.907  %62.843  %
‘’ Min 3 kel. içeren(3043)47.6503 %57.3447 %66.0934 %
200 Kelime (6323)46.1964 %56.8559 %63.7186 %
‘’ Min 3 kel.içeren(3239)49.3053 %57.3016 %68.3391 %
SimpleCart100 Kelime (6323)46.9872 %55.5274 %60.7706 %
‘’ Min 3 kel. içeren(2309)46.9034 %55.6951 %62.8776 %
150 Kelime (6323)47.0505 %56.6661 %60.7414 %
‘’ Min 3 kel. içeren(3043)47.5846 %57.0818 %61.3022 %
200 Kelime (6323)47.0346 %56.761  %61.0625 %
‘’ Min 3 kel.içeren(3239)47.5764 %57.0238 %61.4764 %

Çizelge: Sınıflandırma algoritmalarının WEKA’da veri ambarı başarım tablosu.

Bu projede yapılan testler sonucunda karşılaştırmalar ve fikir yürütmeler yapılmış,  SMO algoritması seçilmiştir. Böylece veri madenciliği çalışması burada sona ermiş ve artık projeyi gerçekleştirme adımına geçmek için bir engel kalmamıştır. WEKA çıktıları SMO fonksiyonel algoritmasının ürettiği değerleri bünyesinde tuttuğu için bu veriler kaydedilerek gerçekleştirim aşamasında kullanılmak üzere saklanır.

duygu analizi adımları  duygu analizi aşamaları  text de duygu analizi  veri madenciliği ile duygu analizi  

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.