NAIVE BAYES YÖNTEMİ İLE BLOG İÇERİKLERİNİN

advertisement
NAIVE BAYES YÖNTEMİ İLE BLOG İÇERİKLERİNİN
SINIFLANDIRILMASI
Onur DEĞERLİ
YÜKSEK LİSANS TEZİ
BİLGİSAYAR BİLİMLERİ
GAZİ ÜNİVERSİTESİ
BİLİŞİM ENSTİTÜSÜ
KASIM 2012
ANKARA
iv
NAIVE BAYES YÖNTEMİ İLE BLOG İÇERİKLERİNİN
SINIFLANDIRILMASI
(Yüksek Lisans Tezi)
Onur DEĞERLİ
GAZİ ÜNİVERSİTESİ
BİLİŞİM ENSTİTÜSÜ
Kasım 2012
ÖZET
İnternet teknolojilerinin gelişimi ile birlikte bilginin yayılımı ve miktarı da
artmıştır. Artan bilgi içerisinde, kullanıcıların kaliteli ve doğru içeriklere
ulaşması da gittikçe zorlaşmaktadır. Blog içerikleri, sosyal medya siteleri gibi
yapılar, bilginin artmasında ve yayılımında en önemli etmenler haline
gelimiştir. Bu tezde, kategorileri editör vasıtası ile belirlenmiş blogların
içerikleri, kelime ve kelime gruplarına ayrıştırılmıştır. Bu gruplar 8 kategori
altında sınıflandırılmıştır. Daha sonra eğitim kümesi oluşturulmuştur. Bu
eğitim kümesi kullanılarak, veri madenciliği algoritmalarından birisi olan
Naive Bayes algoritması ile kategorisi belli olmayan bir test içeriğinin hangi
kategoriye ait olacağını bulan uygulama başarılı bir şekilde yapılmıştır.
Bilim Kodu
: 702 . 1.014
Anahtar Kelimeler : veri madenciliği, blog madenciliği, metin
madenciliği, naive bayes, semantik web, web crawler.
Sayfa Adedi
: 75
Tez Yöneticisi
: Doç. Dr. O. Ayhan ERDEM
v
BLOG CONTENT CLASSIFICATION WITH NAIVE BAYES
TECHNIQUE
(M.Sc. Thesis)
Onur DEĞERLİ
GAZİ UNIVERSITY
INSTITUTE OF INFORMATICS
November 2012
ABSTACT
Quantity and spread of knowledge is increased with the development of internet
technologies. Increased knowledge makes it hard for users to reach qualified
and right contents. Blog contents and social media sites has become important
factors to increase and spread knowledge. In this thesis; blog contents, which
were specified by editor, are split as words and word groups and classified in 8
categories and then training set was created. The application to predict the
category of an unclassified test data is successfully done by using this training
set, with the Naive Bayes algorithm which is one of the data mining techniques.
Science Code
Keywords
Page Number
Adviser
: 702 . 1.014
: data mining, blog mining, text mining, naive bayes,
semantic web, web crawler.
: 75
: Assoc. Prof. Dr. O. Ayhan ERDEM
vi
TEŞEKKÜR
Bu çalışmanın gerçekleşmesine katkılarından dolayı ve danışmanım olarak tezin
yazılmasında yol gösteren sayın hocam Doç. Dr. O. Ayhan ERDEM’e teşekkür
ederim.
vii
İÇİNDEKİLER
ÖZET........................................................................................................................... iv
ABSTRACT ................................................................................................................. v
TEŞEKKÜR ................................................................................................................ vi
İÇİNDEKİLER .......................................................................................................... vii
ÇİZELGELERİN LİSTESİ ......................................................................................... ix
ŞEKİLLERİN LİSTESİ ............................................................................................... x
SİMGELER ................................................................................................................. xi
1. GİRİŞ ....................................................................................................................... 1
2. BLOGLAR VE VERİ MADENCİLİĞİ ÇALIŞMALARI ...................................... 4
2.1. Veri Madenciliği Çalışmaları ............................................................................ 5
3. VERİ MADENCİLİĞİ ............................................................................................. 7
3.1. Veri Madenciliği Süreçleri ............................................................................... 8
3.1.1. Veri temizleme ...................................................................................... 9
3.1.2. Veri bütünleştirme ................................................................................. 9
3.1.3. Veri indirgeme ..................................................................................... 10
3.1.4. Veri dönüştürme .................................................................................. 10
3.1.5. Veri madenciliği algoritmasının uygulanması .................................... 10
3.1.6. Sonuçları sunma ve değerlendirme ..................................................... 10
3.2. Veri Madenciliği Teknikleri ........................................................................... 11
3.2.1. Karar Ağaçları ..................................................................................... 12
3.2.2. Yapay Sinir Ağları .............................................................................. 13
3.2.3. Genetik Algoritma .......................................................................................... 14
3.2.4. K-en Yakın Komşu Algoritması .................................................................... 15
3.2.5. Birliktelik Kuralı ............................................................................................ 16
3.2.6. Naive Bayes ................................................................................................... 16
3.3. Veri Madenciliği Kullanım Alanları ............................................................... 22
4. BLOG İÇERİKLERİNİN SINIFLANDIRILMASI............................................... 26
4.1. Kategorilerin Belirlenmesi .............................................................................. 26
4.2. Kategorilere Göre Blog Listelerinin Oluşturulması ........................................ 27
4.3. Veritabanı Yapısının Oluşturulması ................................................................ 29
4.4. Blog İçeriklerinin Kaydedilmesi ..................................................................... 36
4.5. Eğitim Verisinin Oluşturulması ...................................................................... 38
viii
4.6. Naive Bayes Algoritmasının Uygulanması ..................................................... 44
4.7. Kullanılan Test Yöntemleri Ve Test Sonuçlarının Değerlendirilmesi ............ 52
4.8. Uygulama Arayüzü ......................................................................................... 61
4.8.1. Anasayfa ............................................................................................... 61
4.8.2. İstatistik sayfası .................................................................................... 66
4.8.3. Test içerik listesi sayfası ...................................................................... 67
4.8.4. Test içerik oluşturma sayfası ................................................................ 68
5. SONUÇ VE ÖNERİLER ....................................................................................... 70
KAYNAKLAR .......................................................................................................... 72
ÖZGEÇMİŞ ............................................................................................................... 75
ix
ÇİZELGELERİN LİSTESİ
Çizelge
Sayfa
Çizelge 3.1. Örnek veri kümesi .................................................................................. 19
Çizelge 3.2. Örnek veri kümesinin olasılık tablosu .................................................. 20
Çizelge 4.1. Kategorilere göre blog sayısı ................................................................ 28
Çizelge 4.2. Kategorilere göre blog yazısı sayısı ...................................................... 28
Çizelge 4.3. Kelime grubu türlerine göre kayıt sayısı ............................................... 43
Çizelge 4.4. Kategorilere göre kelime sayısı ............................................................ 44
Çizelge 4.5. Kelimelerin kategorilerde geçme toplamlarının her bir kategorideki
toplam sayısı .......................................................................................... 46
Çizelge 4.6. Kategorilerin ağırlıkları ........................................................................ 47
Çizelge 4.7. "İnternet" kelimesinin kategorilerdeki geçme toplamları ..................... 47
Çizelge 4.8. "İnternet" kelimesinin kategorilerdeki geçme oranları ......................... 49
Çizelge 4.9. Cümle şeklinde girilen test verisinde bulunan kelime ve kelime
gruplarının kategorilerdeki geçme toplamları ...................................... 50
Çizelge 4.10. Cümle şeklinde girilen test verisinde bulunan kelime ve kelime
gruplarının toplam geçme toplamları .................................................. 50
Çizelge 4.11. Cümle şeklinde girilen test verisinde bulunan kelime ve kelime
gruplarının kategorilerdeki oranları...................................................... 51
Çizelge 4.12. Rastgele seçilen içerikler üzerinde uygulanan test işlemi sonucunda
çıkan oranlar ........................................................................................ 52
Çizelge 4.13. Sağlık kategorisi için yapılan cümle bazlı test sonuçları ..................... 56
Çizelge 4.14. Ekonomi kategorisi için yapılan cümle bazlı test sonuçları................. 56
Çizelge 4.15. Seyahat kategorisi için yapılan cümle bazlı test sonuçları................... 57
Çizelge 4.16. Eğitim kategorisi için yapılan cümle bazlı test sonuçları .................... 58
Çizelge 4.17. Moda kategorisi için yapılan cümle bazlı test sonuçları ...................... 58
Çizelge 4.18. Yemek kategorisi için yapılan cümle bazlı test sonuçları .................... 59
Çizelge 4.19. Spor kategorisi için yapılan cümle bazlı test sonuçları ........................ 60
Çizelge 4.20. Teknoloji kategorisi için yapılan cümle bazlı test sonuçları ................ 60
x
ŞEKİLLERİN LİSTESİ
Şekil
Sayfa
Şekil 4.1. Blog tablosunun yapısı .............................................................................. 31
Şekil 4.2. Category tablosunun yapısı ....................................................................... 31
Şekil 4.3. Post tablosunun yapısı .............................................................................. 32
Şekil 4.4. Keyword tablosunun yapısı ...................................................................... 33
Şekil 4.5. Blog_category tablosunun yapısı .............................................................. 33
Şekil 4.6. Blog_keyword tablosunun yapısı .............................................................. 34
Şekil 4.7. Category_keyword tablosunun yapısı ....................................................... 34
Şekil 4.8. Post_test tablosunun yapısı ....................................................................... 35
Şekil 4.9. Post_test_puan tablosunun yapısı ............................................................. 35
Şekil 4.10. Test_content tablosunun yapısı ............................................................... 36
Şekil 4.11. “İnternet” kelimesine ait blog_keyword tablosu kayıtları ...................... 42
Şekil 4.12. “İnternet” kelimesine ait category_keyword tablosu kayıtları ............... 43
Şekil 4.13. Algoritma uygulama anasayfası .............................................................. 62
Şekil 4.14. Rastgele içerik getirme sekmesi .............................................................. 63
Şekil 4.15. Test içerik getirme sekmesi ..................................................................... 63
Şekil 4.16. Kayıtlı url'den içerik getirme sekmesi .................................................... 63
Şekil 4.17. Harici url'den içerik getirme sekmesi ..................................................... 64
Şekil 4.18. İçerik alanında bulunan test verisinin gösterimi ...................................... 64
Şekil 4.19. Sonuçlar listesi ........................................................................................ 64
Şekil 4.20. Sonuçları değerlendir paneli .................................................................... 65
Şekil 4.21. Kelime ve kelime gruplarının kategorilere göre oranları paneli .............. 65
Şekil 4.22. Eğitim kümesi içerisinde geçmeyen kelime ve kelime grupları .............. 66
Şekil 4.23. İstatistik sayfası ....................................................................................... 67
Şekil 4.24. Test içerik listeleme sayfası .................................................................... 68
Şekil 4.25. Test içerik oluşturma sayfası .................................................................. 69
xi
SİMGELER
Bu çalışmada kullanılmış bazı simgeler açıklamaları ile birlikte aşağıda sunulmuştur.
Simgeler
Açıklama
c
Toplam kategori sayısı
C
Kategori
f
0 değer problemini çözmek için kullanılan katsayı
F
Herbir kelimenin kategoride geçme toplamlarının toplamı
fr
f*r değeri
i
Algoritmaya girecek toplam kelime ve kelime grubu sayısı
K
Kategorinin toplam içerik içerisindeki ağırlığı
k
Kelime veya kelime grubunun kategoride geçme toplamı
n
Kelime veya kelime grubunun kategorideki ağırlığı
P
Girilen içeriğin kategorideki ağırlığı
r
f/i değeri
t
Kelime veya kelime grubunun ilgili kategoride toplam geçme sayısı
T
Kategorilerde geçen kelime ve kelime gruplarının geçme toplamları
X
Örnek veri seti
NULL
Veri tabanında bir veri alanında verinin bulunmaması
1
1. GİRİŞ
İnternet teknolojilerinin hızlı bir şekilde gelişmesi, kullanıcıların bilgiye ulaşımı
hızını ve ulaşılan bilgilerin miktarını artan bir ivmeyle çoğaltmaktadır. Daha önce
web sayfalarından kullanıcıya doğru olan bilgi akışı, Web2.0 kavramı ile birlikte
çift yönlü hale gelmiş ve kullanıcılar da içerik oluşturmaya başlamıştır. Kullanıcılar
kendi özgün içeriklerini oluşturarak, kayıtlı olan içeriği kopyalayarak veya üzerinde
değişiklik yaparak veri miktarındaki artışa katkıda bulunmaktadırlar.
Dinamik web siteleri, haber siteleri, çeşitli konularda bilgiler içeren portallar, eticaret siteleri, vikiler, bloglar ve sosyal medya siteleri gibi kaynaklar vasıtasıyla
kullanıcılar yeni içerikler oluşturmaktadır. Özellikle bloglar ve sosyal medya siteleri
bu veri artışının en temel kaynaklarıdır. Katlanarak artan bu veriler, blog ve sosyal
medya ortamları üzerinden çok hızlı bir şekilde yayılmaktadır. Bu yüzden üretilen
verinin güncelliği kısa süre içinde kaybolmaktadır.
Verinin hızlı artışı ve tüketimi beraberinde bir takım problemleri de getirmiştir.
Kullanıcıların aradıklarını doğru ve hızlı bir şekilde bulmaları zorlaşmış, büyük veri
yığınları içinde kaliteli veriye ulaşmak internet çağının en önemli problemlerinden
biri haline gelmiştir.
Web 2.0 ile ortaya çıkan büyük ve kalitesiz veri yığınlarının, anlamlı ve nitelikli
bilgiye dönüştürülebilmesi için veri madenciliği teknolojisi yaygın olarak
kullanılmaya başlanmıştır. Veri madenciliği yüksek miktardaki içeriğin bilgisayar
yazılımları ile temizlenmesi, ayrıştırılması, tanımlanması ve anlamlandırılması
konusunda sürekli ilerlemekte olan bir disiplindir. Veri madenciliği ile elde edilen
verilerin anlamlı veri yapılarına dönüşmesi de yine Web 2.0 döneminden sonra önem
kazanmaya başlayan semantik web teknolojileriyle gerçekleştirilebilmektedir.
Semantik web ile sadece metin tabanlı arama ve bulma işlevlerinden çok daha
fazlasını yapabilmek mümkün olmaktadır. Kullanıcılar anlam bilgisini de içeren
2
semantik içerik üretebildiği gibi, var olan içeriği analiz ederek semantik ilişkileri ve
anlamları tespit eden yazılımlar da geliştirilebilmektedir.
Bu çalışmanın temeli, büyük veri yığınlarının tasnif edilip anlamlandırılması üzerine
kurulmuştur. Sınıflandırılabilir özelliklerinden dolayı ve oldukça büyük veri
kaynakları olması sebebi ile veri kaynağı olarak bloglar kullanılmış; kategoriler ile
ilişkilendirilmiş blogların içerikleri alınıp, ayrıştırılarak oluşturulacak eğitim
kümeleri ile veri madenciliği algoritmaları kullanılarak sonradan gelecek herhangi
bir içeriğin hangi kategoriye ait olacağı bulunmaya çalışılmıştır. Böylece, bu çalışma
ile büyük veri yığınlarından anlamlı veri kümeleri elde edilmesi ve bu verileri
semantik web uygulamalarında kullanılmasına yardımcı olması amaçlanmıştır.
Çalışmanın veri kümeleri için teknoloji, ekonomi, moda, seyahat, yemek, spor,
sağlık, eğitim kategorileri seçilmiş, bu kategorilere uygun olarak bulunan blog
siteleri web-crawler teknolojisi ile içerikleri alınarak veritabanına kaydedilmiştir.
Her bir blogun içerisinde oluşturulmuş, sayfa ve blog yazarı tarafından oluşturulan
içerik, bağlı olduğu blogun kategorisi ile ilişkilendirilecek şekilde tekrar
kaydedilmiştir. Bu işlem algoritma uygulama aşamasında sistemin daha hızlı ve
performanslı çalışmasını sağlamaktadır.
Türkçe'nin dil yapısının diğer dillere göre farklılık göstermesi de Türkçe ile yapılan
veri madenciliği çalışmalarını zorlaştırmaktadır. Türkçe sondan eklemeli bir dil
olduğu için kelimenin kökünü bulmak bir çok diğer dile göre daha zordur. Bu
problemi aşmak ve kelimeleri köklerine ayırarak eğitim kümesini oluşturmak için
Türkçe'nin dil yapısına uygun olarak hazırlanan Zemberek isimli doğal dil işleme
yazılımı kullanılmıştır.
Veritabanına kaydedilen tüm içerikler, 1 kelime, 2 kelime ve 3 kelimelik kelime
grupları halinde ayrıştırılıp ilgili kategoriler ile ilişkilendirilerek eğitim kümesi
oluşturulmuştur.
3
Kelime ve kelime grupları kategoriler ile ilişkilendirilirken, ilgili kategoride kaç defa
yer aldığı bilgisi kaydedilmektedir. Bu bilgi kullanılan algoritmanın temel yapısını
oluşturmaktadır. Yeni gelen içeriğin hangi kategoriye ait olacağı hesaplanırken bu
veriden yararlanılmaktadır.
Sınıflandırma algoritması olarak veri madenciliği tekniklerinden Naive Bayes
algoritması kullanılmıştır. Naive Bayes, değişkenler arasındaki ilişkiyi analiz eden
tahminci ve tanımlayıcı bir sınıflama algoritmasıdır ve verinin öğrenilmesi esasına
dayanmaktadır. Eğitimde kullanılan veriler, modelin öğrenilmesi için her çıktının
kaç kere meydana geldiğini hesaplar. Kelime ve kelime gruplarının köklerine göre
ayrıldıktan ve her bir kategoride kaç kere geçtiğini hesapladıktan sonra ilgili kategori
ile ilişkilendirilip kaydedilmesinin nedeni budur. Bu değer öncelikli olasılık olarak
adlandırılır.
Kategoriler içerisinde geçen kelimelerin meydana gelme toplamlarının birleşimi
bağımlı değişken olarak adlandırılır. Bu değişken, veri kümesinden yapılacak tahmin
için kullanılır. Girilen test kümesi, eğitim kümesi oluşturulurken yapıldığı gibi
kelime köklerine ayrılır ve her bir kategorideki meydana gelme adetleri bulunur.
Bulunan bu sayılar bağımlı değişkenlere bölünüp birbirleri ile çarpılarak kategori
olasılıkları hesaplanır.
Bu çalışma beş bölümden oluşturulmuştur. Çalışmanın ikinci bölümünde bloglar ve
bloglar konusunda yapılan veri madenciliği çalışmalarından bahsedilmiştir. Üçüncü
bölümde
veri
madenciliğinin
genel
açıklamaları
verilmiş,
süreçler
ve
algoritmalardan bahsedilmiştir. Dördüncü bölümde veri madenciliği ile blog
içeriklerinin sınıflandırılması konusunda yapılan çalışma detaylı bir şekilde
anlatılmıştır. Beşinci bölüm sonuç ve öneriler bölümü olup, yapılan çalışmanın genel
sonuçlarından bahsedilmiş ve önerilerde bulunulmuştur.
4
2. BLOGLAR VE VERİ MADENCİLİĞİ ÇALIŞMALARI
Bloglar, girilen yazıların sondan başa doğru kronolojik olarak listelendiği, sık sık
güncellenen web sayfalarıdır. İnternet kullanıcıları duygu ve düşüncelerini özgürce
ifade edebilmek için blogları çok yaygın olarak kullanmaktadırlar.
Bloglar bir çok yararlı bilgi içerse de yapılandırılmamış konular ve daha geniş
konuları içerebileceği için çok fazla gürültülü veri olabilir. Bu içerikleri anlamak için
doğru araçlar kullanılmalıdır. Blog madenciliği ile yazılmış yazıları analiz edilmesi,
firmaları müşterilerine daha yakınlaştıracağı gibi onların markaları, firmaları ve
politik görüşleri hakkında da fikir elde edilmesini sağlamaktadır. Fakat bu analiz
işlemi yoğun çaba ve zaman gerektiren bir iştir. Sezgisel olarak düşünüldüğünde,
mevcut metinlere web madenciliği teknikleri uygulanabilir. Fakat birçok zorluktan
dolayı bu teknikler doğrudan uygulanamaz. Bunun ilk nedeni blogların her gün hatta
daha sık güncellenebilir olmasıdır. İkinci olarak ise yazarlar çok çeşitli konuları
kapsayan, blogun genel konu bütünlüğü dışında yazılar yazabilir. Ayrıca, blog arama
teknolojileri, genel amaçlı web aramaları kadar etkin değildir. Bundan dolayı,
bloglar ve web sayfaları farklı madencilik teknikleri gerektiren özelliklere sahiptirler
[1].
Technorati.com istatistiklerine göre 112.8 milyon blog bulunmakta ve her gün
yaklaşık 1.6 milyon blog yazısı yayınlanmaktadır. Bloglar bazı durumlarda çevrimiçi
dergi olarak da kullanılmaktadırlar. Bunun yanında eğitim ve öğretimde,
uygulanabilir eğitim kaynakları olarak da eskiye göre daha fazla ve daha sık olarak
kullanılmaktadırlar [2].
Bloglar, internet ekosistemindeki kişilerin birbirleri ile iletişime geçmesinde ve
sosyalleşmesinde açık bir kanal oluştururlar. Aynı zamanda pazarlama konusunda da
etkin bir iletişim kaynağıdırlar. Dahası, blog dünyasında metin tabanlı blog
yazılarını, kişi profillerini, resimlerini ve medya kaynaklarını içeren çok miktarda
veri bulunmaktadır [3].
5
Bloglar temelde yazılma amaçlarına göre sınıflandırılabilirler. Fakat blog yazmaya
devam ettirebilmek için 5 ana motivasyon kaynağı vardır: blog yazarının hayatını
anlatmak, yorum ve görüşlerini sunmak, derin duygularını ifade etmek, yazı yolu ile
fikirlerini belirtmek ve topluluk forumları kurarak onlara bakmak ve idare etmektir.
Günlük olarak kullanılan bloglara kişisel blog denir. Yorum ve görüşlerin sunulduğu
bloglara konu blogları denir. Tartışmanın olduğu ve günlük olayların münazara
edildiği ve fikirlerin yazarak açık bir şekilde ifade edildiği veya topluluk
forumlarının bulunduğu bloglara ise güncel bloglar denmektedir [1].
Blog yazarları diğer bloglara, yorum, hyperlink ve TrackBack kullanarak link
verebilirler. Bu teknolojiler, yazarların okurları ile iletişime geçmesine izin vereceği
gibi blog dünyasındaki iletişimleri de belli bir biçime oturtmakta ve bir kalıba
sokmaktadır [1].
Besleme(Zengin Site Özeti), blog yazarlarının kullandığı diğer önemli özelliklerden
birisidir. Bir internet kullanıcısı beslemeler yardımı ile belli blog ve anahtar
kelimelere abone olurlar ve daha sonra tek bir kaynaktan tüm ilgili içeriklere
ulaşabilirler. Kullanıcılar, sadece beslemeleri kullanarak son blog yazılarına kolayca
ulaşabilir ve paylaşabilirler [1].
Bir çok blog sistemi, yazarlarına, yazılarını sınıflandırmak için birden fazla anahtar
kelime ile etiketlendirme izni verir. Örneğin bir yazı, “web” ve “güvenlik” şeklinde
etiketlenmiş olarak görülebilir. Bu her bir etiket, kendisine etiketlenmiş yazıların
listelendiği bir sayfaya bağlanır. Sitede bulunan bir menü, ilgili blogun tüm
etiketlerini listeler. Eğer bir yazı yanlış sınıflandırıldıysa, yazar etiket listesini tekrar
güncelleyebilir [2].
2.1. Veri Madenciliği Çalışmaları
Tomoyuki Nanno ve çalışma arkadaşları, Japonya için, blog içeriklerini toplama ve
izleme konusunda hazırladıkları bir mimari sunmuşlardır. Diğer bazı araştırmacılar
6
ise web üzerindeki müşteri fikir ve değerlendirmelerini pazarlamacılar için analiz
eden çalışmalar yapmışlardır. Ancak, bu araştırmacılar yaptıkları sistemleri blog
içeriklerini toplama ve web sayfası metin madenciliği için yapmışlardır. Bu nedenle
ilgili çalışmalar blog madenciliği çalışmalarına doğrudan uygulanamaz. Michael
Chau ve arkadaşları yaptıkları çalışma ile blog madenciliği problemi ve bu konu
üzerindeki uygulamaların çeşitli alanlardaki uygulanabilirliğinin tartışılması
üzerinde çalışma yapmışlardır. Yaptıkları çalışma ile ilgili örnekler ile blog
madenciliğinin iş dünyası, yönetim ve sosyal konular üzerinde nasıl yardımcı
olacağını çözümlemeyi amaçlamışlardır [1].
Tsai Chen ve arkadaşlarının çalışmalarında bloglardaki ek değişkenler hesaba
katılmadan var olan veri madenciliği yöntemleri kullanılmıştır. Flora S. Tsai’nin
çalışmasında ise geleneksel web ve metin madenciliğinden farklı olarak blog,
içerisindeki farklı parametreleri de hesaba katarak bir çalışma yapmıştır ve
çalışmasının sonuçlarını geleneksel yöntemler ile kıyaslamıştır [2].
Mita K. Dalal ve Mukesh A. Zaveri spor blogları üzerinde otomatik bir metin
sınıflandırma algoritması üzerinde çalışmışlardır. Yaptıkları çalışma ile çeşitli spor
blogları içerisindeki içeriği sınıflandırmışlardır. Bu sınıflandırma işlemi sırasında
Naive Bayes sınıflandırma algoritmasını kullanmışlardır. Sonuç olarak da test
verileri üzerinde yapılan denemeler ile %87 başarı elde edilmiştir. Yapılan çalışmada
ilk olarak kelime ve kelime grupları spor blogları içerisinden ayrıştırılmıştır. Daha
sonra tabu kelimeler temizlenmiştir. Ardından kelime ve kelime gruplarının
dökümanlar içerisindeki ağırlıkları hesaplanmıştır. Sonraki adımda ise Naive Bayes
kullanılarak veriler eğitilmiştir. Son aşamda da test verisi üzerinde test sınıfları
uygulanarak çalışma sonlandırılmıştır. Kelime ve kelime gruplarının ağırlıklarını
hesaplamada TF-IDF(Term Frequency - Inverse Document Frequency) yöntemi
kullanılmıştır. Bu yöntem, kelime ve kelime gruplarının döküman içerisindeki
ağırlıklarını ve frekanslarını kullanarak herbir kelime ve kelime grubu için bir değer
üretmektedir. TF-IDF yöntemi, genellikle arama motorlarında kullanılmaktadır.
Bunun yanı sıra, metin özetleme ve sınıflandırma problemlerinde tabu kelime
çıkarımında da başarıyla uygulanmaktadır [3].
7
3. VERİ MADENCİLİĞİ
Veri madenciliği, veri analizi, yeni bilginin keşfi ve özelleşmiş karar verme
mekanizmaları gibi yeni teoriler, teknikler ve geniş hacimli veri işleme araçları
sunan, gelişmekte olan bir alandır.
Veri madenciliği ve bilgi keşfi, özellikle elektronik ticaret, bilim, tıp, iş ve eğitim
alanlarındaki uygulamalarda yeni ve temel bir araştırma sahası olarak ortaya
çıkmaya başlamıştır. Veri madenciliği, eldeki yapısız veriden, anlamlı ve kullanışlı
bilgiyi çıkarmaya yarayacak tümevarım işlemlerini formülle analiz etmeye ve
uygulamaya yönelik çalışmaların bütününü içerir. Geniş veri kümelerinden
desenleri, değişiklikleri, düzensizlikleri ve ilişkileri çıkarmakta kullanılır. Bu sayede,
web üzerinde filtrelemeler, DNA sıraları içerisinde genlerin tespiti, ekonomideki
eğilim ve düzensizliklerin tespiti, elektronik alışveriş
yapan müşterilerin
alışkanlıkları gibi karar verme mekanizmaları için önemli bulgular elde edilir [4].
Bir çok şirket, işlerini daha etkili yürütebilmek için bilgi teknolojilerini keşfetmiştir
ve kritik bir çok bilgi veritabanı sistemlerine kaydedilmiştir. Bu verinin yoğunluğu
gün geçtikçe de artış göstermektedir. Bir çok organizasyon ise pazarlama stratejileri,
yatırım ve politikalarında rehberlik etmesi konusunda bu büyük veri yığını
içerisindeki değerli içeriklere henüz ulaşamamaktadır. Bunun en büyük nedeni bu
bilgilerin büyük veri yığınları içerisinde üstü kapalı bir şekilde durmasıdır.
Şirketlerin bu üstü kapalı bilgiye ulaşması adına veri madenciliği rehber rolü
oynamaktadır [5].
Veri madenciliği, karar yapıları, satış stratejileri, finansal tahminler gibi bir çok
alanda uygulanabilirliğinden dolayı son yıllarda veritabanı uygulayıcılarının ve
araştırmacılarının
büyük
ilgisini
çekmektedir.
İstatistik,
makine
öğrenimi,
veritabanları gibi tekniklerin kombinasyonu ile veritabanlarındaki kullanışlı ve
değerli bilginin ortaya çıkmasına yardım etmektedir [6].
8
Ticari veritabanları genellikle geçmişteki bilgilerin tutulduğu kritik iş bilgileri
içermektedir. Bu bilgiler geleceği tahmin etmek için kullanılabilir. Organizasyonlar
yıllarca bir çok geleneksel ve modern istatistiksel modelleri kullanmışlardır. Veri
madenciliği, ticari veritabanlarındaki tahmin sonuçlarını geliştirme potansiyeline
sahip yeni teknolojiler getirmektedir [6].
Veri madenciliği, veri setlerinde bulunan, ilk bakışta görünemeyen, ancak belirli
istatistiksel ve matematiksel algoritmalar kullanılarak ortaya çıkarılan gizli veririnin
belirlenmesi ve sınıflandırılması sürecidir.
Veri madenciliğini istatistiksel yöntemlerin bulunduğu işlemler serisi olarak görülür.
Fakat istatistikten farklı olarak insanın da içinde bulunduğu bir süreç söz konusudur.
Başka bir deyişle, veri madenciliği, verilerin içerisindeki desenlerin, ilişkilerin,
değişimlerin, düzensizliklerin, kuralların ve istatistiksel olarak önemli olan yapıların
yarı otomatik olarak keşfedilmesidir [7].
3.1. Veri Madenciliği Süreçleri
Veri madenciliği işlemlerinde kullanılacak veri her zaman ilk alındığı hali ile
kullanılmayabilir veya istenilen özelliklerde olmayabilir. Verinin ilk hali gürültülü,
yanlış veya eksik halde olabilir. Bunun önüne geçmek ve algoritmaların veriyi daha
net anlamalarını sağlamak için bir dizi işlem uygulanır.
Veri madenciliği süreçleri 6 adımdan oluşmaktadır. Bunlar [8]:
1.
Veri temizleme
2.
Veri bütünleştirme
3.
Veri indirgeme
4.
Veri dönüştürme
5.
Veri madenciliği algoritması uygulama
9
6.
Sonuçları sunma ve değerlendirme.
3.1.1. Veri temizleme
Seçilen veri kümesinde tutarsız, hatalı ve eksik veriler bulunur. Bu tarz veriler
gürültü olarak adlandırılır. Bu gürültülü veriler uygulanacak olan algoritmanın
tutarsız ve istenmeyen sonuçlar vermesine neden olur.
Bu durumu engellemek için birkaç farklı işlem uygulanır.

Eksik değerlerin içeren kayıtlar veri setinden silinir.

Kayıp değerler için sabit bir değer kullanılarak diğer gruplardan farkı
gözlenir. Örneğin NULL, geçersiz gibi değerler verilir.

Eksik değerler elle doldurulabilir. Fakat bu işlem uzun ve zaman alıcıdır.

Eksik
değerler
içeren
tamamlanabilir. Genelde,
niteliğin
ortalama
değeri
ortalama değer kullanmak
ile
veriyi
doğru
veri
sonuçlar
verebilir.

En olası değer ile eksik veri tamamlanabilir. Bu metod için regresyon,
Bayesian ya da karar ağaçları kullanılabilir.
3.1.2. Veri bütünleştirme
Bazı durumlarda veri tek bir kaynakta bulunmayabilir. Örneğin veri 2 ayrı
veritabanında olacağı gibi farklı veritabanı sistemlerinde de bulunabilir. Hatta bir
kısmı veritabanında bulunurken diğer kısmı metin bazlı tutulmuş olabilir.
Veri bütünleştirme süreci ile farklı kaynaklardaki veriler birleştirilerek uygulamanın
tek bir veri kaynağını kullanıyor olması sağlanır. Aksi durumda, uygulama farklı
kaynakları kullanarak gereksiz zaman ve işgücü kullanımına neden olacaktır [8].
10
3.1.3. Veri indirgeme
Veri madenciliği uygulamalarında bazen çözümleme işlemi uzun sürebilir. Bu
durumda elde bulunan veriler içerisinde tekrarlı, niteliksiz, ilgisiz veriler çıkarılır.
Bunun yanında çözümlemeden elde edilen sonucun değişmeyeceği düşünülüyorsa
veri sayısı veya değişkenlerin sayısı da azaltılabilir. Böylece hem çözümleme işlemi
kısa sürer hem de daha net ve doğru sonuçlar elde edilir [8].
3.1.4. Veri dönüştürme
Bazı durumlarda veriyi uygulamaya aynen katmak uygun olmayabilir. Veri setindeki
en alt ve en üst değerlerin çok yüksek olması diğer değerlerin sonucunu etkileyeceği
ve değişkenlere olan baskıları daha fazla olacağı için bu veriler normalize edilirler.
Böylece değerler arasındaki uçurum azaltılarak algoritmanın daha doğru sonuç
vermesi sağlanmış olur. Veri dönüştürme süreçlerinde Min-Max Normalleştirme ve
Z-score Standartlaştırma gibi algoritmalar kullanılır [8].
3.1.5. Veri madenciliği algoritmasının uygulanması
Yukarıda anlatılan süreçlerden veri kümesine uygun olanlar yapıldıktan sonra aynı
veri kümesine uygun algoritma seçilerek veri madenciliği algoritması uygulama
sürecine geçilir. Bu algoritmalar ve uygulama süreci daha sonraki kısımlarda
anlatılacaktır.
3.1.6. Sonuçları sunma ve değerlendirme
Veri madenciliği algoritması uygulandıktan sonra sonuçlar alınır ve bu sonuçlar
açıklayıcı bir şekilde, grafiklerle desteklenerek sunulur.
11
3.2. Veri Madenciliği Teknikleri
Veri Madenciliği teknikleri denetimli ve denetimsiz olmak üzere ikiye ayrılmaktır.
Denetimli öğrenmede eğitim verileri vasıtasıyla bir öğrenme işleminin yapılması
gerekmektedir. Yani kullanılan eğitim verilerinden bazı kurallar ve etiketler
çıkarılarak daha sonraki test sürecinde bu kurallar ve etiketler doğrultusunda
sonuçlara gidilir. Veri tabanlarındaki gizli örüntüleri ortaya çıkarmakta kullanılır.
Var olan veritabanının bir kısmı eğitim için kullanılır ve böylece sınıflandırma
kuralları belirlenir. Bu kurallar yardımıyla yeni bir durum ortaya çıktığında nasıl
karar verileceği belirlenir.
Denetimsiz öğrenmede ise denetimli öğrenmedeki eğitim ve etiketlem durumu
geçerli değildir. Kesinlik içermez. Veriler, kendi aralarındaki benzerlikler göz önüne
alınarak
gruplandırılırlar.
Pazarlama
araştırmalarında
yaygın
olarak
kullanılmaktadırlar. Bunun yanı sıra desen tanımlama, resim işleme ve uzaysal harita
verilerinin analizinde kullnılmaktadırlar.
Çeşitli veri madenciliği yöntem ve teknikleri mevcuttur. Bazı temel yöntem ve
teknikler aşağıdaki gibi listelenmiştir.
1. Karar ağaçları
2. Yapay sinir ağları
3. Genetik algoritma
4. K-en yakın komşu algoritması
5. Birliktelik kuralı
6. Naive Bayes
12
3.2.1. Karar ağaçları
Karar ağaçları en yaygın sınıflandırma algoritmalarından birisidir. Diğer
algoritmalardan farklı olarak ortaya kurallar çıkartıp bu kurallara bağlı olarak
sonradan kullanılan veriyi sınıflandırabilmektedir.
Karar ağaçları, makine öğrenme ve veri madenciliği genel sınıflandırma
mimarilerinden birisi olarak kabul edilmektedir. Bu kavramın oluşturulmasından
sonra, önemli sayıda karar ağacı analiz ve sentez çalışmaları yapılmıştır. Bu
çalışmalar daha gelişmiş karar ağaçlarının inşası ve yorumlanması için, bulanık
mantık da dahil olmak üzere farklı teknikler içermektedir [9].
Diğer yandan, karar ağaçları kural kümesine kolayca oturtulabilen algoritmalardır.
Anlaşılması kolay bir algoritmadır. Buna rağmen, bazı karışık uygulamalarda tipik
bir karar ağacının çok fazla alt dalı ve bu dalların çok fazla düğümü olabilir [10].
Karar ağacı sınıflandırıcıları, örüntü tanıma, kavram öğrenme ve diğer makine
öğrenimi
alanlarında
popüler
olmuştur.
Bu
sınıflandırıcı,
sınıflandırma
problemlerinin uygulanabilirliği konusunda parçalamalı ve kazanımlı bir stratejiye
olanak vermiştir [11].
Karar ağacı, bir örneği, kökten yaprağa kadar inceleyerek sınıflandırır. Karar
ağaçlarının öğrenme algoritmaları, bir hipotezi sunmak için bir küme karar ağacı
kullanırlar. Öğrenme kümesinde, ham veri incelenerek mümkün olan en iyi şekilde
sınıflandırılır. Algoritma bu işlemi özyinelemeli olarak tekrar eder ve en son
ortaya çıkardığı karar ağacı en son hipotezi oluşturur. İdeal olan karar ağacı,
öğrenme kümesi dışındaki verilerde de aynı kuralları oluşturur ya da az hata
payıyla aynı hipotez sonuçlarını ortaya çıkartır [12].
Küçüksille şöyle demektedir [13]:
13
“Karar ağaçları kurulumlarının ucuz olması, kolay yorumlanabilmeleri, veri tabanı
sistemleri ile kolayca entegre edilebilmeleri nedenleri ile veri madenciliği
sınıflama modelleri içerisinde en yaygın kullanılan tekniktir. Karar ağaçları
tahmin etmede kullanılan bir tekniktir. Karar ağaçları aynı zamanda kural çıkarma
algoritmalarıdır. Bu algoritmalar bir veri kümesinden kullanıcıların çok kolay
anlayabileceği “eğer-doğruysa” (IF-THEN) türündeki kuralları bir ağaç yapısında
türetebilirler”.
3.2.2. Yapay sinir ağları
Yapay sinir ağları, temel olarak beynin çalışmasını taklit ederek bir öğrenme
gerçekleştirir. Basit bir biyolojik sinir sisteminin çalışma şeklinden esinlenilmiştir.
Bu sinir hücreleri nöron denilen yapıları içerirler ve bu nöronlar birbirlerine
bağlanarak ağı oluştururlar.
Giriş değerlerinden çeşitli kuralları öğrenirler ve bilinmeyen örüntüleri ortaya
çıkararak parametreleri bir sonraki veriye aktarırlar.
Yapay sinir ağları 3 kısımdan oluşmaktadır. Bunlar:

Dış dünyadan gelen girdilerin alındığı ve aldığı bu verileri alt katmanlara
ileten giriş katmanı,

Giriş katmanından gelen verileri alan çıkış katmanına ileten ara katmanı,

Ara katmandan gelen verileri alıp işleyerek çıktıları üreten ve bu verileri dış
dünyaya gönderen çıkış katmanıdır.
Bazı yapay sinir ağlarında ara katman bulunmayabileceği gibi bazılarında birden
fazla da olabilir. Ara katmandaki nöron sayıları giriş ve çıkış sayısından bağımsızdır.
Nöron sayısının fazlalığı, hesaplama karmaşası ve sürenin uzamasına neden
olabileceği gibi yapay sinir ağlarının daha karmaşık problemleri çözmesini de
sağlamaktadır.
14
Yapay sinir ağları, çağrışımlı bellek, desen sınıflandırması, ve optimizasyon
problemleri gibi çeşitli alanlarda başarılı örnekleri bulunmaktadır. Bu uygulamalar,
yapay sinir ağlarının dinamik yapısına yoğun bir şekilde bağlıdırlar [14].
3.2.3. Genetik algoritma
Genetik algoritma, John Holland tarafından 1975 yılında geliştirilen özyinelemeli bir
arama tekniğidir. Doğal seçilim mekanizmasının bilgisayar bilimlerine uyarlanmış
halidir. Optimizasyon ve arama problemleri gibi zaman alıcı konularda yaklaşık bir
çözüm sunar. Genetik algoritmanın ana amacı, her bir nesildeki sonuçlardan kötü
olanları kaldırıp iyi olanlara devam edilmesi böylece ekosistemin sürekli olarak
iyileştirilmesini temel almaktadır [15].
Genetik algoritmada olası çözümler kromozom tarafından sunulur ve genellikle ilk
çözüm rastgele üretilir. Kromozomlar yani bireyler birlikte bir dizi çözüm
ekosistemini oluştururlar. Uygunluk işlemi ise başta düzgün bir şekilde tanımlanır.
Bu uygunluk fonksiyonu bireylerin kalitesini taşıyan bir çözüm barındırır [15].
Yeni ve iyi çözümler oluşturmak için, genetik algoritma seleksiyon, çaprazlama ve
mutasyon operatörlerini kullanır. Yeni nesil üretmek için kullanılan çaprazlama ve
mutasyon operatörleri, birey seçim mekanizması tarafından ekosistemden seçilen 2
bireye uygulanır [15].
Küçüksille şöyle demektedir [13]:
“Genetik algoritmalar çözüme ulaşmak için rassal arama tekniklerini kullanır ve
değişken kodlama esasına dayalı bir tekniktir. Genetik algoritmalar, farklı
poblemlere göre doğru parametreler ile çalışıldığı takdirde ideale yakın çözümler
verir. Bu noktada amaç, doğal sistemlerin uyum sağlama özelliğini dikkate
alarak yapay sistemlerini oluşturmaktır”.
“Bilinen optimizasyon yöntemleri ile çözülemeyen ya da çözümü çok zaman
gerektiren problemler için kullanılan genetik algoritma optimal ya da optimale yakın
15
çözüm vermektedir. Başlangıçta doğrusal olmayan optimizasyon problemlerine
uygulanan genetik algoritma sonraları gezgin satıcı, karesel atama, yerleşim,
çizelgeleme, tasarım gibi optimizasyon problemlerinde başarıyla uygulanmıştır”.
Genetik algoritmalar optimizasyon problemlerinde kullanıldığı gibi, sınıflandırma ve
veri madenciliğinde kullanılan diğer algoritmaların uygunluğunu test etmek ve
değerlendirmek için de kullanılabilirler [16].
Genetik algoritmalar aynı zamanda yönlendirme problemleri, Çinli postacı problemi,
zamanlama problemleri, gezgin satıcı problemleri gibi zor ve çözümü uzun süren
problemlerde ideale yakın sonuçlar vermektedir [17].
3.2.4. K-en yakın komşu algoritması
K-en yakın komşu algoritması, veri bölümlendirilmesine ve gruplandırılmasına
dayalı bilinen bir algoritmadır. Buna rağmen, kullanıcının küme sayısını başlangıçta
belirtmesi gerekliliği, başlangıç koşullarındaki hassasiyeti gibi bazı eksiklikleri
mevcuttur. Hiyerarşik değildir. Veri seti ne kadar geniş olursa sonuç bulması için
geçen süre de o kadar artmaktadır. K-en yakın komşu algoritmasının performansını
artırmak için, çok geniş bir yelpazede farklı metotlar uygulanmaktadır [18].
K-en yakın komşu algoritmasının geniş bir kullanım alanı mevcuttur. Temel olarak
amaç, sınıfı belli olan bir veri setinden yararlanarak, daha sonra gelecek olan verinin
hangi sınıfa dahil olacağını bulan temel bir sınıflandırma algoritmasıdır.
Sınıflandırmada verilerin birbirlerine olan ağırlıklarının uzaklıkları dikkate
alınmaktadır.
Algoritmadaki k değeri, belirlenen noktaya komşu olan kayıtların sayısını gösterir.
Verilen N adet eğitim setinin doğru sınıflandırılmasına göre, algoritma yeni gelen
test verisini en yakın komşu gruba yerleştirir. Sınıflandırmanın doğruluğu k
değerinin artmasına ve azalmasına bağlı olarak değişir. Arttığı taktirde doğruluk
oranı da artar. Algoritmanın olumsuz yanlarından birisi de gürültülü veriye neden
olması ve geçmişe yönelik veriye ihtiyaç duyulmasıdır [12].
16
3.2.5. Birliktelik kuralı
Birliktelik kuralı ile büyük veri kümeleri arasındaki birliktelik ilişkileri bulunur.
Depolanan verilerin gün geçtikçe artması, büyük şirket ve kurumların, bu veriler
arasındaki ilişkileri bulması gerekliliğini ortaya çıkarmıştır. Bu belirlenen
birliktelikler,
şirketlerin
ve
kurumların
karar
alma
süreçlerini
doğrudan
etkilemektedir.
Birliktelik kuralı, kullanılması ve anlaşılması en kolay algoritmalardan birisidir. Bu
nedenle finans sektöründen telekomünikasyon sektörüne, pazarlama, perakendecilik,
elektronik ticaret gibi farklı sektörlerde aktif olarak kullanılmaktadır [18].
Birliktelik kuralına verilebilecek en güzel örnek market sepet analizi uygulamasıdır.
Birliktelik kuralı ile müşterilerin satın alma alışkanlıkları analiz edilir. Örneğin süt
alan müşterilerin daha sonra ne aldıkları belirlenirse, market içerisindeki değişim,
kampanyalar gibi müşterileri satın almaya yöneltecek uygulamalar ona göre
değişiklik arz eder [19].
Birliktelik kuralı, tıp alanında hastalık tahminlerinin gelişimi üzerinde büyük
potansiyeli olan bir veri madenciliği tekniğidir [20].
Birliktelik kuralı, market sepet analizi gibi büyük veri setlerindeki yer alan ilişkileri
ortaya çıkarmada kullanılan bir uygulamadır. Bu durum birliktelik kuralının resim
üzerindeki sık dokuların ortaya çıkarılmasında da kullanılacağını göstermiştir [21].
3.2.6. Naive Bayes
Naive Bayes, değişkenler arasındaki ilişkiyi analiz eden tahminci ve tanımlayıcı bir
sınıflandırma algoritmasıdır.
Naive Bayes, verinin öğrenilmesi esasına dayanmaktadır. Yani eğitimde kullanılan
veriler, modelin öğrenilmesi için her çıktının kaç kere meydana geldiğini hesaplar.
17
Bu değer öncelikli olasılık olarak adlandırılır. Hesaplamalar sırasında her bir
bağımsız değişkenin bağımlı değişkenlere bölümünün kombinasyonu olayın
meydana gelme sıklığını bulur. Bu da veri kümesinden yapılacak tahmin için
kullanılır [22].
Naive Bayes, metin kategorilendirmesi konusunda bilinen ve sıklıkla kullanılan bir
algoritmadır. Hedef fonksiyon için bir eğitim veri seti belirlenir, nitelik değerleri
tarafından tanımlanan yeni örneklemler sunulur ve öğrenici sınıf hedef değeri veya
sınıfı tahmin eder [23].
Sınıflandırma önemli bir veri madenciliği problemidir. Girdiler, eğitim setinin bir
veri kümesidir. Bu veri kümesindeki her bir verinin bir çok özniteliği vardır. Sayı
alanı içeren özniteliklere sayısal öznitelik, sayı içermeyen özniteliklere sahip
alanlara ise kategorik öznitelik denmektedir. Ayrıca sınıf etiketi isimli fark edilebilir
bir öznitelik daha vardır. Bu sınıflandırma, etiketsiz kayıtlar içerisinde, sınıf etiketini
tahmin etmekte kullanılabilecek kısa bir model oluşturmayı hedefler. Naive Bayes,
K-en yakın komşu algoritması, karar ağaçları ve yapay sinir ağları gibi bir çok
sınıflandırma modelleri bu yapıyı amaç edinmiştir [6].
Naive Bayes sınıflandırıcısı, kategorik verileri sınıflandırma konusunda basit ve hızlı
bir tekniktir. Bayes sınıflandırıcıları klasik değişkene bağlı sınıflandırıcılardır.
Eğitim verileri için belirli bir olasılık dağılımı uygun kabul edilir. Naive Bayes
sınıflandırıcısı, ilgili eğitim setinde bulunan her bir bağımsız öznitelik arasındaki
ilişkiyi ve her bir ilişki içerisindeki şartlı olasılığı çıkarmak için analiz eder. Tahmin
işlemi, bağımsız değişkenlerin, bağımlı değişkenler üzerindeki etkilerini bir araya
getirerek yeni bir durumu sınıflandırmak için yapılır [6].
Naive Bayes tekniğinin kullanıldığı sınıflandırma adımları şu şekildedir: Eğitim
süreci sırasında, her bir sonucun önceki olasılığı eğitim seti içerisinde ilgili
kategoride kaç kere geçtiğinin sayısı olarak belirlenir. Örneğin, 5 şartın olduğu bir
durumda, ilk sonuç 2 kere geçmiş ise ilgili sonucun olasılığı 0.4’dür. Önceki
olasılıklara ek olarak, her bir bağımsız özniteliğin her bir bağımlı öznitelik içersinde
18
kaç kez geçtiğini de hesaplamaktadır. Bu frekans değeri, hesaplanan olasılık
değerlerinin her birinin çarpımı birleşimi ile çarpılarak oluşturulan şartlı olasılık
değerlerini hesaplamak için kullanılır [6].
Naive Bayes algoritması en bilindik sınıflandırma algoritmalarından birisidir. Birçok
araştırmacı bu yaklaşımın kuramsal ve deneyimsel sonuçları üzerinde çalışmışlardır.
Veri madenciliği uygulamalarında geniş ölçüde kullanılmaktadır ve birçok
uygulamada sürpriz bir şekilde iyi sonuçlar vermiştir. Buna rağmen, Naive Bayes
öğreniminde bütün özelliklerin eşit sayılması varsayımı nedeniyle, yapılan tahminler
yetersiz kalmaktadır. Örneğin, bir kişinin diyabet hastası olup olmadığının tahmini
problemi konusunda, kişinin kan basıncı, kişinin boyundan daha önemlidir. Bu
nedenle, Naive Bayes algoritmasının performansı hafifletici varsayımlar ile
iyileştirilir [24].
Bayes sınıflandırıcısı şu şekilde ifade edilir:
X örnek veri seti olsun. Bu X değerlerinin sınıfı bilinmemektedir. X test veri seti X =
{X1, X2, X3, …, Xn} değerlerinden oluşsun.
Sınıf değerleri ise C1, C2, C3, …, Xn şeklinde olduğu kabul edilsin. Sınıfı
belirlenecek test verisinin olasılığı şu şekilde hesaplanır:
(3.1)
Çıkan sonuçlardan ise en büyük değere ait olan sınıf test verisinin ait olduğu sınıfı
verir.
arg maxci {P(X | Ci) P(Ci)}
19
Çalışma için yapılan uygulamanın temelinde de Naive Bayes algoritması kullanıldığı
için ilgili algoritma ile ilgili detaylı bir örnek verilmiştir. Örnek uygulamada
kullanılan değerler çizelge 3.1'deki gibidir.
Çizelge 3.1. Örnek veri kümesi
Başvuru
Eğitim
Yaş
Cinsiyet
Kabul
1
Orta
Yaşlı
Erkek
Evet
2
İlk
Genç
Erkek
Hayır
3
Yüksek
Orta
Kadın
Hayır
4
Orta
Orta
Erkek
Evet
5
İlk
Orta
Erkek
Evet
6
Yüksek
Yaşlı
Kadın
Evet
7
İlk
Genç
Kadın
Hayır
8
Orta
Orta
Kadın
Evet
Yukarıdaki eğitim verisi ele alınarak aşağıdaki şartın hangi sınıfa ait olduğu
bulunmaktadır.
X1 : Eğitim = Yüksek
X2 : Yaş = Orta
X3 : Cinsiyet = Kadın
Bayes olasılıklarını hesaplamak amacıyla çizelge tekrar düzenlenir. Düzenlenen
çizelge Çizelge 3.2'de verilmektedir.
20
Çizelge 3.2. Örnek veri kümesinin olasılık tablosu
Nitelikler
Nitelik değeri
Evet sayısı
Evet olasılığı
Hayır sayısı
Hayır olasılığı
Eğitim
İlk
1
1/5
2
2/3
Orta
3
3/5
0
0
Yüksek
1
1/5
1
1/3
Genç
0
0
2
2/3
Orta
3
3/5
1
1/3
Yaşlı
2
2/5
0
0
Erkek
3
3/5
1
1/3
Kadın
2
2/5
2
2/3
Yaş
Cinsiyet
Her bir girdi için Bayes olasılıkları tek tek hesaplanır.
C1 : Kabul = Evet
C2 : Kabul = Hayır
Yukarıdaki değerler hesaplandığında sonucu büyük olan değer örneğin ait olduğu
sınıfı verecektir.
P(X | C1) P(C1) Değerinin Hesaplanması
Burada P(X | Kabul = Evet) koşulunun olasılığı hesaplanmalıdır. Bunun için de X =
{x1, x2, x3, …, xn} değerlerinin olasılıkları ayrı ayrı bulunmalıdır.
(3.2)
(3.3)
(3.4)
21
O halde;
(3.5)
olarak bulunur.
P(Kabul = Evet) olasılığı ise;
(3.6)
Sonuç olarak ise;
(3.7)
şeklinde hesaplanır.
P(X | C2) P(C2) Değerinin Hesaplanması
Burada P(X | Kabul = Hayır) koşulunun olasılığı hesaplanmalıdır. Bunun için de X =
{x1, x2, x3, …, xn} değerlerinin olasılıkları ayrı ayrı bulunmalıdır.
(3.8)
(3.9)
(3.10)
O halde;
22
(3.11)
olarak bulunur.
P(Kabul = Hayır) olasılığı ise;
(3.12)
Sonuç olarak ise;
(3.13)
şeklinde hesaplanır.
arg maxci {P(X | Ci) P(Ci)} = max{(0,03), (0.0275)} = 0,03
Bu durumda örnek verinin ait olduğu sınıf 0.03 değerinin sınıfı yani Evet sınıfına ait
olduğu anlaşılır.
X1 : Eğitim = Yüksek
X2 : Yaş = Orta
X3 : Cinsiyet = Kadın
şeklinde bir şart geldiğinde bunun sınıfı Evet olacaktır.
3.3. Veri Madenciliği Kullanım Alanları
Veri madenciliği özellikle son yıllarda pazarlamadan, bankacılığa, müşteri
ilişkilerinden e-ticarete, sosyal ağ analizinden satış kampanyalarına kadar çok farklı
sektörlerde aktif bir şekilde kullanılmaktadır. Pazarlama, satış konularında müşteri
segmentasyonu sağlanarak, kişiye uygun pazarlama kampanya ve aktiviteleri yapılır.
Bu sayede satışların artırılması, müşteri sadakati gibi yararlı geri dönüşler sağlanır.
23
Bankacılık alanında ise kredi geri ödemesi yapmamaya yatkın müşterileri belirleme,
risk derecelendirme gibi konular için önem arz etmektedir. Bahsedilen bu alanların
dışında veri madenciliği, astronomi, biyoloji, finans, sigorta, tıp, internet gibi birçok
alanda da uygulanmaktadır [25].
Veri
madenciliği
farklı
alanların
farklı
alt
dallarında
ve
konularında
kullanılmaktadır.
Pazarlama alanı ile iligli aşağıdaki konularda ve problemlerde kullanılmaktadır:

Müşterilerin satın alma örüntülerinin belirlenmesi

Müşterilerin demografik özellikleri arasındaki bağlantıların bulunması

Mevcut müşterilerin elde tutulması, yeni müşterilerin kazanılması

Market sepeti analizi

Çapraz satış analizi

Müşteri ilişkileri yönetimi

Müşteri değerlendirme

Satış tahmini
Bankacılık alanı ile iligli aşağıdaki konularda ve problemlerde kullanılmaktadır:

Farklı finansal göstergeler arasında gizli korelasyonların bulunması

Kredi kartı dolandırıcılıklarının tespiti

Kredi kartı harcamalarına göre müşteri gruplarının belirlenmesi

Kredi taleplerinin değerlendirilmesi

Usulsüzlük tespiti

Risk analizleri ve yönetimi
Sigortacılık alanı ile iligli aşağıdaki konularda ve problemlerde kullanılmaktadır:

Yeni poliçe talep edecek müşterilerin tahmin edilmesi
24

Sigorta dolandırıcılıklarının tespiti

Riskli müşteri örüntülerinin belirlenmesi
Perakendecilik alanı ile iligli aşağıdaki konularda ve problemlerde kullanılmaktadır:

Satış noktası veri analizleri

Alışveriş sepeti analizleri

Tedarik ve mağaza yerleşim optimizasyonu
Borsa alanı ile iligli aşağıdaki konularda ve problemlerde kullanılmaktadır:

Hisse senedi fiyat tahmini

Genel piyasa analizleri

Alım-satım stratejilerinin optimizasyonu
Telekomünikasyon
alanı
ile
iligli
aşağıdaki
konularda
ve
problemlerde
kullanılmaktadır:

Kalite ve iyileştirme analizi

Hisse tespiti

Hatların yoğunluk tahmini
Sağlık ve ilaç alanı ile iligli aşağıdaki konularda ve problemlerde kullanılmaktadır:

Test sonuçlarının tahmini

Ürün geliştirme

Tıbbi teşhis

Tedavi sürecinin belirlenmesi
Endüstri alanı ile iligli aşağıdaki konularda ve problemlerde kullanılmaktadır:
25

Kalite kontrol analizi

Lojistik

Üretim süreçlerinin optimizasyonu
Bilim ve mühendislik alanı ile iligli deneyimsel veriler üzerinde modeller kurarak
bilimsel ve teknik problemlerin çözümlenmesi probleminde kullanılabilmektedir.
Eğitim alanı ile iligli aşağıdaki konularda ve problemlerde kullanılmaktadır:

Öğrenci davranışlarının öngörülmesi

Öğrencilerin ders seçme eğilimlerinin belirlenmesi [20].
26
4. BLOG İÇERİKLERİNİN SINIFLANDIRILMASI
Blog içeriklerinin sınıflandırılması uygulaması temelde 8 bölümden oluşmaktadır.
Bunlar:
1. Üzerinde çalışılacak kategorilerin belirlenmesi
2. Eğitim kümesinin oluşturulacağı blog listelerinin kategorilere göre oluşturulması
3. Veritabanı yapısının oluşturulması
4. Belirlenen blogların içeriklerinin çekilerek veritabanına kaydedilmesi
5. Eğitim verisinin oluşturulması
6. Naive Bayes algoritmasının uygulanması
7. Test verileri ile uygulamanın sınanması
8. Test sonuçlarının yayınlanması
4.1. Kategorilerin Belirlenmesi
Kategori, birbirleri ile ilgili ve ilişkili blogların bulunduğu sınıflara verilen isimdir.
Blog yazarları kendi ilgi alanlarına göre farklı kategorilerde blog içerikleri
yazabilmektedirler.
Bu çalışmada kategoriler, oluşturulacak eğitim kümesinin sınıflarını belirlerken,
çalışmanın uygulama aşamasında kullanılacak olan test verisinin de hangi sınıfa ait
olacağını belirlemektedirler.
Bu çalışma içerisinde 8 adet kategori kullanılmıştır:
1.
Moda
2.
Ekonomi
3.
Seyahat
4.
Yemek
5.
Teknoloji
27
6.
Eğitim
7.
Sağlık
8.
Spor
Kategori seçiminde, kullanılacak eğitim kümesinin olabildiğince net bir şekilde
birbirlerinden ayrılmasına önem verilmiştir. Aynı zamanda güncel ve popüler
kategorilerin seçilmesine de önem verilmiştir.
4.2. Kategorilere Göre Blog Listelerinin Oluşturulması
Uygulamada kullanılan veri kaynakları tamamen kullanıcı kontrolünde belirlenen 8
adet kategoriye göre rastgele seçilen blog listelerinden oluşmaktadır.
Blog seçiminde, blogun kategorinin içeriğine uygunluğu ve ilgili kategoriye
olabildiğince çok kelime ve kelime grubu çıkarabilecek olmasına dikkat edilmiştir.
Aynı zamanda seçilen blogun başka bir kategorinin altında olmaması da önemlidir.
Kategorilere göre seçilen blogların, her bir kategorideki sayısının herhangi bir önemi
yoktur. Sadece eğitim verisine yeterli dağılımda kelime ve kelime grubu oluşturmak
amacıyla seçilmiştirlerdir.
Toplamda 86 adet blog sayfası seçilmiştir. Bu blog sayfalarının kategorilere göre
dağılımı Çizelge 4.1'de verilmiştir.
28
Çizelge 4.1. Kategorilere göre blog sayısı
Kategori
Blog sayısı
Moda
1
Ekonomi
16
Seyahat
6
Teknoloji
3
Yemek
2
Sağlık
6
Spor
45
Eğitim
7
86 blog sayfasının alt sayfalarının toplamı ise 4119'dur. Blog alt sayfalarının
kategorilere göre dağılımı Çizelge 4.2'de verilmiştir.
Çizelge 4.2. Kategorilere göre blog yazısı sayısı
Kategori
Blog yazısı sayısı
Moda
600
Ekonomi
953
Seyahat
459
Teknoloji
444
Yemek
199
Sağlık
485
Spor
427
Eğitim
552
Kategorilere göre farklı blog ve blog alt sayfa sayısının farklı olması, kategorilere ait
olan kelime ve kelime grubu sayılarının dağılımının farklı olmamasının
sağlanmasından kaynaklanmaktadır. Herhangi bir kategoriye ait bir blog sayfasından
elde edilen kelime grubu sayısı kategorilere göre farklılık göstermektedir. Blog sayfa
sayısının eşit olmasına çalışılması kategorilere atanacak kelime grubu sayısında
farklılığa neden olmaktadır. Bu da uygulanan algoritmanın istenilen sonucu
vermemesine neden olmaktadır.
29
4.3. Veritabanı Yapısının Oluşturulması
Uygulamanın oluşturulmasında kullanılan yazılımlar aşağıdaki gibi listelenmektedir.

İşletim sistemi: Windows ve Linux işletim sistemleri

Veritabanı: MySQL

Programlama dili: Java

Kullanıcı arayüzü dili: JavaServer Pages(JSP)

Sunucu: Apache Tomcat

Programlama dili geliştirme yazılımı: Eclipse
Veritabanı yönetim sistemi olarak MySQL üzerinde ilişkisel veritabanı yönetim
sistemi kullanılmıştır. Bu sistem üzerinde veriler tablolarda satır ve sütunlar halinde
tutulur ve yüksek bir veri tutarlılığına sahiptir.
İlişkisel veritabanı sisteminde farklı tablolar üzerinde bulunan veriler, çeşitli
anahtarlar vasıtası ile birbrilerine bağlanırlar. Bu anahtarlara yabancı anahtar denir.
İlgili tablolarda, sütunlar arasında bir anahtar sütun yer alır. Bu anahtar sütun
aracılığı ile birden çok tabloda bulunan veriler, birbirleri ile bağlantı sağlayabilir ve
herhangi bir sorgulamada birlikte görüntülenebilir. Bu sistemi kullanan veritabanları
arasında PostgreSQL, MySQL, Oracle vardır.
İlişkisel veritabanı sistemleri, tekrarlı verilerin azaltılması, veritabanı hakimiyetinin
yükseltilmesi, iş yükünü azaltması ve esneklik sağlaması gibi özellikleri de
bulunmaktadır.
İlişkisel veritabanlarında olabilecek 3 adet ilişki türü bulunmaktadır.
1.
Bire bir(1:1) ilişki türü
2.
Birden çoğa(1:n) ilişki türü
3.
Çoktan çoğa(n:m) ilişki türü
30
Bire bir(1:1) ilişki türü
Tablodaki yabancı anahtar, ilişki tablosundaki sadece 1 satıra denk gelmektedir.
Birden çoka(1:n) ilişki türü
Tablodaki yabancı anahtar, ilişki tablosundaki satırlarda birden çok satırda
bulunmaktadır.
Çoktan çoka(n:m) ilişki türü
Tablodaki yabancı anahtar, kendi tablosunda birden çok kez bulunurken, ilişki
tablosundaki satırlarda da birden çok satırda bulunmaktadır. Bu durum karmaşıklığıa
neden olmaktadır. Bu nedenle bu iki tablo arasındaki ilişki kayıtları harici bir ilişki
tablosunda tutulmaktadır. Bu tabloya bu iki tablonun kesişim kümesi de
denebilmektedir. Bu tablo sayesinde karmaşıklığı giderilmiş olur
Veritabanı tabloları arasındaki ilişkiler aşağıdaki gibidir:

Blog tablosu ile category tablosu arasından birden çoka

Blog tablosu ile keyword tablosu arasında çoktan çoka

Category tablosu ile keyword tablosu arasında çoktan çoka

Blog tablosu ile post tablosu arasında çoktan çoka
Bütün tablolarda id alanları bulunmaktadır. Bu alan, bulunduğu tablonun kayıt
numarasını tutmaktadır. Herbir içerik kaydedildiğinde otomatik olarak artmaktadır.
integer veri tipindedir. Herbir tabloda bulunmaktadır. Bu nedenle herbiri için tek tek
anlatılmamaktadır.
Blog tablosu, editör tarafından seçilen blog bilgilerinin tutulduğu tablodur. Tablonun
yapısı Şekil 4.1'de verilmektedir.
31
Şekil 4.1. Blog tablosunun yapısı
Blog tablosunda bulunan link alanı, tabloya kaydedilen test verisinin web sayfası
linkini tutmaktadır. Veri tipi varchar'dır. Uzunluğu 255 karakterdir. Status alanı,
girilen blog verisinin aktif olup olmadığı bilgisini tutmaktadır. Enum veri tipindedir.
Bu alana ait veriler ya active ya da passive olarak kaydedilmektedir.
Category tablosu seçilen kategorilerin tutulduğu tablodur. Tablonun yapısı Şekil
4.2'de verilmektedir.
Şekil 4.2. Category tablosunun yapısı
Category tablosunda bulunan title alanı, kategorinin adını tutmaktadır. Varchar veri
tiğindedir. Uzunluğu 32 karakterdir. Num alanı ise ilgili kategoride geçen kelime ve
kelime gruplarının kategorilerde geçme toplamlarının tutmaktadır. Integer veri
tipindedir. Uzunluğu 11 karakterdir. Uygulanacak algoritmada T değerine karşılık
gelmektedir.
Post tablosu bloglara ait olan yazıların linklerinin tutulduğu tablodur. Tablonun
yapısı Şekil 4.3'de verilmektedir:
32
Şekil 4.3. Post tablosunun yapısı
Blog_id alanı, blog tablosundaki id alanı ile ilişkilidir ve ilgili post'un hangi blog ile
ilişkli olduğunu göstermektedir. Integer veri tipindedir. Uzunluğu 11 karakterdir.
Varsayılan olarak 0 belirlenmiştir. Yani herhangi bir blog_id verisi gelmediğinde
veritabanı otomatik olarak 0 kaydetmektedir. Link alanı, post verisinin url bilgisini
tutmaktadır.
Content
alanı
ise
post
içeriğinin
kendisini
kaydetmektedir.
Oluşturulacak eğitim kümesi için kullanılmaktadır. Title alanı, ilgili içeriğin başlık
bilgisini tutmaktadır ve content alanında olduğu gibi eğitim verisinin oluşturmak için
kullanılmaktadır. Link, content ve title alanları text veri türüne sahiptir. 65 535 adet
karakter uzunluğundadır. Status alanı enum tipindedir ve dört farklı durum söz
konusudur. Eğer post bilgisinin status alanı active ise, kullanılan web-crawler link
alanında bulunan post linkini kullanarak web sayfası içeriğini alıp content ve title
alanına kaydetmek için hazır durumda olduğunu göstermektedir. Parsed durumunda
ise ilgili content ve title bilgisi alınıp kaydedilmiş demektir. Status alanının fetched
olarak bulunması durumunda, content ve title alanları kelime ve kelime gruplarına
ayrıştırılarak keyword tablosuna kaydedilmiş durumdadır. Passive durumunda ise bu
kayıt ile herhangi bir işlem yapılmayacak anlamına gelmektedir.
Keyword tablosu her bir kelime ve kelime grubunun satırlar halinde tutulduğu
tablodur. Tablonun yapısı Şekil 4.4'de verilmektedir.
33
Şekil 4.4. Keyword tablosunun yapısı
Keyword tablosunda bulunan title alanı, ilgili kelime veya kelime grubunun bilgisini
tutmaktadır. Varchar veri tipine sahiptir ve en fazla 255 karakter uzunluğundadır.
Oluşturulmakta olan eğitim verisinin de kayıtlı olduğu alandır. Length alanı title
alanında bulunan verinin uzunluğunu bulundurmaktadır. Smallint tipindedir ve 4
karakter uzunluğundadır. Word_count alanı ise title verisinin kaç kaç kelimeden
oluştuğu bilgisini tutmaktadır. Tinyint veri tipine sahiptir ve 1 karakter
uzunluğundadır.
Blog_category tablosu, bloglar ile blogların ilişkilendirildikleri kategorilerin kayıt
numaralarının birbirleri ile n:m şekilde ilişkilendirildikleri tablodur. Tablonun yapısı
Şekil 4.5'da verilmektedir.
Şekil 4.5. Blog_category tablosunun yapısı
Category_id, category tablosunda id alanını karşı gelmektedir. Blog_id alanı ise,
blog tablosundaki id alanına karşılır gelmektedir. İki alan da Integer veri tipine
sahiptir ve en fazla 11 karakter uzunluğunda olabilmektedirler. Varsayılan olarak 0
almaktadırlar.
34
Blog_keyword tablosu, seçilen bloglar ile bu bloglardan alınan her bir kelime ve
kelime grubunun ilişkisini tutan tablodur. Tablonun
yapısı Şekil 4.6'da
verilmektedir.
Şekil 4.6. Blog_keyword tablosunun yapısı
Blog_id alanı, blog tablosundaki id alanına, keyword_id alanı ise keyword
tablosundaki id alanına karşılık gelmektedir. İki alan da Integer veri tipine sahiptir
ve en fazla 11 karakter uzunluğunda olabilmektedirler. Varsayılan olarak 0
almaktadırlar. Num alanı ise keyword verisinin ilgili blogda kaç kez geçtiğinin
sayısını tutmaktadır. Integer veri tipindedir ve varsayılan 1'dir.
Category_keyword tablosu, seçilen kategoriler ile bu kategorilere göre alınan her bir
blog içerisinden çıkan kelime ve kelime grubunun ilişkisini tutan tablodur. Category
tablosundaki id alanı ile keyword tablosundaki id alanları ilişkilidir. Tablonun yapısı
Şekil 4.7'de verilmektedir:
Şekil 4.7. Category_keyword tablosunun yapısı
Category_id alanı, category tablosundaki id alanına, keyword_id alanı ise keyword
tablosundaki id alanına karşılık gelmektedir. İki alan da Integer veri tipine sahiptir
ve en fazla 11 karakter uzunluğunda olabilmektedirler. Varsayılan olarak 0
35
almaktadırlar. Num alanı ise keyword verisinin ilgili blogda kaç kez geçtiğinin
sayısını tutmaktadır. Integer veri tipindedir ve varsayılan 1'dir.
Post_test tablosu algoritma uygulandıktan sonra girilen test verilerinin kaydedildiği
tablodur. Tablonun yapısı Şekil 4.8'de verilmektedir.
Şekil 4.8. Post_test tablosunun yapısı
Blog_id alanı, blog tablosundaki id alanı ile ilişkilidir. Integer veri tipindedir ve 11
karakter uzunluğundadır. Eğer girilen içerik herhangi bir blog ile ilişkili ise, ilgili
blogun id'si buraya kaydedilir. Link alanı, tabloya kaydedilen test verisinin link
bilgisini tutmaktadır. Content alanı ise, test edilen verinin kendisini tutmaktadır.
Title alanı, girilen test verisinin başlık kaydını tutmaktadır. Zorunlu değildir. Status
alanı enum tipindedir. Girilen kayıdın aktif olup olmadığı bilgisini tutmaktadır. Link,
content ve title alanları text veri tipindedir. 65 535 karakter uzunluğundadır.
Post_test_puan tablosu, post_test tablosuna kaydedilen test verilerinin birincil
anahtarı ile test yapan kullanıcı tarafından verilen puanın kaydedildiği tablodur.
Tablonun yapısı Şekil 4.9.'da verilmektedir.
Şekil 4.9. Post_test_puan tablosunun yapısı
36
Post_test_id alanı, post_test tablosunun id alanındaki veri ile ilişkilidir. Puan alanı,
test işlemi sonucunda 1 ile 5 arasında verilen puanın tutulduğu alandır. Her iki alan
da integer veri tipindedir ve 11 karakter uzunluğundadır. Varsayılan olarak 0
almaktadırlar.
Test_content tablosu, her bir kategori için belli oranlarda seçilen test verilerinin
kaydedildiği tablodur. Tablonun yapısı 4.10.'da verilmektedir.
Şekil 4.10. Test_content tablosunun yapısı
Url alanı, kaydedilen test içeriğinin kayıtlı web adresine karşılık gelmektedir.
Content alanı web adresinde bulunan içeriğin yani blog yazarının yazmış olduğu
yazının tutulduğu alandır. Sentence_count alanı, alınan içeriğin kaç adet cümleden
oluştuğunu
tutmaktadır.
Puan
alanı,
test
içeriği
algoritma
tarafından
sınıflandırıldıktan sonra sınıflandırmaya verilen puanın kaydedildiği alandır.
Category_id alanı ise kaydedilen web adresi içeriğinin hangi kategoriye ait
olduğunun bilgisini tutmaktadır.
4.4. Blog İçeriklerinin Kaydedilmesi
Editör kontrolünde seçilen blogların içerikleri, Java kodu kullanılarak yazılmış olan
Apache Nutch isimli bir web-crawler ile çekilerek metin formatlarında
depolanmaktadır.
Web-crawling, internet üzerindeki bilgilerin, metodolojik olarak ve otomatik şekilde,
düzenli bir sıra ile toplanmasını sağlayan bilgisayar programlarıdır. Web
37
örümceği(web
spiders),
web
robotu,
otomatik
dizinleyici,
olarak
da
isimlendirilmektedirler. Yahoo, Google, Bing gibi arama motorları benzer
teknolojileri kullanarak çalışmaktadırlar.
Apache Nutch olarak da bilinen Nutch, Java ile yazılmış açık kaynak bir yazılım
projesidir. Nutch'ın çalışması için öncelikle sunucu bilgisayar üzerinde Java'nın
kurulu olması gerekmektedir.
Linux işletim sistemi üzerinde Nutch kurmak ve websitesi içeriklerini çekmek için
sırası ile şu adımlar uygulanır:
1.
Nutch binary kurulum paketi http://www.apache.org/dyn/closer.cgi/nutch/
adresinden indirilir.
2.
$HOME/nutch-1.X/ dizini oluşturulur ve indirilen paket açılarak Nutch
dosyaları bu dizin altına yerleştirilir.
3.
$HOME/nutch-1.X/runtime/local dizini içerisinde program uygulaması
çalıştırılımalıdır. Bu dizin içerisinde bulunan bin/nutch dosyasına chmod +x
bin/nutch komutu ile execute yetkisi verilir.
4.
Conf/nutch-site.xml konfigürasyon dosyası açılarak kullanılacak webcrawler'ın user-agent değeri verilir. Bu değer crawl edilecek websitesinin l
oglarında hangi user-agent tarafından ziyaret edildiğini gösteren isimdir.
Google, Yahoo gibi arama motorlarının web-crawler'ları da benzer isimler
kullanmaktadırlar. Projeye uygun olarak "Blog Miner" ismi verilmiştir.
5.
$HOME/nutch-1.X/runtime/local dizini içerisinde urls isimli bir dizin
oluşturulur. Bu dizin içerisine web-crawler'ın crawl edeceği websayfalarının
listesi oluşturulmaktadır. Herbir websitesi alt alta gelecek şekilde listelenir.
6.
Eğer herhangi bir websayfasının crawl edilmesi istenmiyorsa conf/regexurlfilter.txt dosyası açılarak # accept anything else satırının hemen altındaki
satıra
+.
yerine
+^http://([a-z0-9]*\.)*nutch.apache.org/
yazılır.
Nutch.apache.org websayfası yerine içeriğinin alınması istenmeyen herhangi
bir web sayfası adı yazılabilir.
38
7.
Bin/nutch crawl urls -dir crawl -depth 3 komutu ile urls dizini altındaki
websayfaları crawl edilerek binary halinde crawl dizini içerisine kaydedilir.
-dir
parametresi
crawl
listesinin
crawl
edildikten
sonra
verilerin
kaydedileceği dizini gösterir. Burada crawl dizini gösterilmiştir. -depth
parametresi ise crawl edilen websitesi içerisinde kaçıncı derinliğe kadar
gidileceği verilir.
8.
Binary formatında crawl dizini içerisine kaydedilen verilerin kullanılabilmesi
için bu halde bulunması yeterli değildir. Veriler metin formatına çevrilerek
kullanılabilir hale getirilmesi gerekmektedir. Bu işlem için bin/nutch readseg
-dump crawl/segments/*/ dump/ -nocontent -nofetch -nogenerate -noparse
koutu kullanılmaktadır. Bu komut crawl/segments/ dizini altında bulunan tüm
dizinleri ayrıştırarak metin formatına çevirmektedir.
Uygulamada kullanılan kategorilerin herbirinin blog listeleri urls dizini altına
kaydedilmiş ve içerikler yukarıdaki yöntemler ile metin formatı haline getirilmiştir.
Yazılan Java kodu ile bu içerikler ayrıştırılarak title ve content bilgileri post
tablosuna kaydedilmiştir.
4.5. Eğitim Verisinin Oluşturulması
Her bir blogun içeriği alındıktan sonra, bu içerikler bir kelime, iki kelime ve üç
kelime olacak şekilde parçalara ayrılmıştır. Parçalara ayırma işlemi sırasında bazı
kurallara dikkat edilmiştir. Bu kurallar şu şekilde sıralanabilir:

“.”, “,”, “-”, ”;” gibi tüm noktalama işaretleri içeriklerden temizlenmiştir.

İki harfli kelimeler ve ekler gürültülü veriye neden olacağı için eğitim
kümesine dahil edilmemiştir.

Kelime seçimi yapılırken fiil, isim, sıfat, ünlem, zarf türlerine ait olan
kelimeler kullanılmış; edat, bağlaç, zamir kelime türüne ait olan kelimeler
kullanılmamıştır.
Kullanılmayan
kelime
türleri
eğitim
kümesinde
kullanılması durumunda algoritmayı beklenmeyen sonuçlar verebileceği gibi
39
veritabanında fazladan yer kullanılmasına neden olacağı için maliyet ve
zaman artışına neden olmaktadır.

Herhangi bir sınıfa girmeyen ve gürültülü veriye neden olacak olan bağlaç ve
edatlar eğitim kümesine eklenmemiştir. "Ve", "ile", "için", "çünkü", "veya",
"da", "de", "kez", "ama", "ya", "dahi", "mi", "mı", "hiç", "in", "her", "şey",
"bu", "kaç", "nın", "nin", "nun", "nün", "vs", "vb", "aynı",
"ilk", "son", "aha", "ahacık",
"dek", "denli",
"nasıl",
"lere",
"başka", "beli", "beri", "bilfarz", "değin",
"derece", "doğru", "evet", "gibi", "ha", "hayır", "he",
"ila", "işte", "kadar", "kelli", "mesela", "oldu", "olur", "örneğin", "gelimi",
"gelişi", "temsili", "tamam", "temsil", "üzere", "üzre",
"yok", "mısın",
"misin", "musun", "müsün", "mi", "mu", "mü", "amma",
"velakin",
"ancak", "belki", "bile", "bre", "eğer", "fakat", "gelgelelim", "hâlbuki",
"hatta", "hele", "hem", "kim", "lakin", "madem", "mademki", "meğer",
"meğerki",
"meğerse",
"neyse",
"oysa",
"oysaki",
"şayet",
"velev",
"veyahut", "yahut", "yalnız", "yani", "yoksa", "zira", "acaba", "bana", "bazı",
"ben", "benden", "beni", "benim", "biri", "birşey", "birşeyi", "biz", "bizden",
"bizi", "bizim", "buna", "bunda", "bundan", "bunu", "bunun", "daha", "defa",
"diye", "ler", "lar", "çok", "iyi", "kötü", "siz", "onlar", "bizler", "sizin",
"sizinkiler", "bizimkiler", "onlarınkiler", "sitemap", "ki", "da", "da", "na",
"ya", "he", "in", "de", "gerek", "var", "ileri", "hergün", "kendi", "önce",
"içeri", "dışarı", "artık", "tüm", "fazla", "eski", "yeni", "pek", "ara", "belli",
"sürekli", "uzun", "hakkımızda", "iletişim", "üzeri", "hakkında", "gore",
"göre", "değil" kelimeleri eğitim kümesine dahil edilmemiştir.

Kelimelerin köklerine göre ayrıştırılması işlemi gerçekleştirilmiştir.
Post tablosuna kaydedilen blog içerikleri 1, 2 ve 3 kelimelik kelime gruplarına
ayrılarak keyword tablosuna kaydedilmektedir. Fakat bu işlem için öncelikle
kelimelerin köklerinin bulunması gerekmektedir. Kelimeler yapım ve çekim ekleri
ile kaydedildiği taktirde gürültülü veriye neden olmaktadır. Kelimeleri köklerine
ayırmak için de Zemberek isimli Türkçe'nin dil yapısına uygun olarak hazırlanmış
doğal dil işleme kütüphanesi kullanılmıştır.
40
Bilgi teknolojileri alanındaki bir çok doğal dil işleme uygulaması Hint-Avrupa dilleri
temel almaktadır. Eklemeli dillerin genel sorunlarından dolayı ve halihazırda Türkçe
kökenli dillere yönelik herhangi bir doğal dil işleme çalışması olmamasından dolayı
bu yönde bir çalışma gereksinimi hissedilmiştir. Çalışmaya Türkçe dili ile
başlanmasına rağmen, Zemberek, Türkçe ve Türkçe kökenli dillere uygun
genişletilebilir bir açık kaynak kodlu proje boşluğunu kapatmayı amaçlamaktadır
[26].
Zemberek projesinin eski adı Tspell 1999 yılında basit bir prototip olarak C++ dili
altında geliştirilmeye başlanmıştır. Projeye verilen uzunca bir aradan sonra 2004
yılında tekrar yazılarak, bu defa Java ile hayata geçirilmiştir. Projenin adı 2004
sonbaharinda Zemberek olarak değiştirilmiştir.
Zemberek’in, aynı zaman Open Office isimli kelime işlemcisi içerisine yerleştirilmiş
bir versiyonu da bulunmaktadır. Bu versiyon orijinal Zemberek’e göre biraz daha
kısıtlanmıştır.
Zemberek, yapım ve çekim ekine sahip bir kelimenin eklerini ayırarak kelimenin
kökünü bulmaktadır. Aynı zamanda yapım eki ile türetilmiş kelimeleri de
vermektedir.
Örneğin “konuştuklarımız” kelimesi ele alınırsa aşağıdaki gibi bir sonuç
çıkmaktadır.
[ Kok: konuş, FIIL ]
Ekler: FIIL_BELIRTME_DIK + ISIM_COGUL_LER +
ISIM_SAHIPLIK_BIZ_IMIZ
[ Kok: kon, FIIL ] Ekler: FIIL_BERABERLIK_IS + FIIL_BELIRTME_DIK +
ISIM_COGUL_LER + ISIM_SAHIPLIK_BIZ_IMIZ
Sonuçlarda da görüldüğü üzere “konuştuklarımız” kelimesinin kökleri olan “konuşmak” ve “kon-mak” fiilleri Zemberek yardımıyla bulunmuştur.
41
Köklerine ayrılan kelimler 3 farklı şekilde ele alınarak veri tabanındaki keyword
tablosuna eklenmiştir.
1.
Tek kelime
2.
İki kelimeden oluşan tamlamalar
3.
Üç kelimeden oluşan tamlamalar
Kelime ve kelime grupları ayrıştırma işlemi sırasında uzunlukları ve kelime sayıları
da hesaplanarak ilgili satırdaki length ve word_count alanlarına kaydedilmiştir.
Keyword tablosuna eklenen kelime ve kelime grupları aynı zamanda post tablosunda
kayıtlı olan blog_id ile birlikte ve o blog_id'de kaç kere geçtiğinin bilgisi de
tutularak blog_keyword tablosuna kaydedilmektedir. Bu sayede bir sonraki aşamada
oluşturulacak olan kategorik verilerin de temeli bu kısımda atılmış olmaktadır.
Eğer bir kelime ilgili bloga ilk kez ilişkilendirilecekse num alanına 1 olarak
kaydedilmektedir. İlgili bloga o kelime veya kelime grubu için bir kere daha ekleme
yapıldığında num içerisindeki değer bir artırılmaktadır. Bu değer ne kadar çoksa o
kelimenin ilgili blogun ilişkili olduğu kategorideki geçme sayısı da o kadar fazla
ollur. Böylece kategori için ayırt edici kelime grupları da belirlenmiş olur.
Algoritmanın
çalıştırılabilmesi
için
eğitim
kümesi
kategorilere
bölünerek
oluşturulmak zorundadır. Bunun için de kategorilere bağlanmış olan blogların ilgili
kelimelerin geçme adetlerinin toplamları ile birlikte category_keyword tablosuna
kaydedilmesi gerekmektedir.
Blog_keyword
tablosunda
veriler
blog_id,
keyword_id
ve
num
alanları
tutulmaktadır. Num alanı ilgili keyword_id'nin herhangi bir blog içerisinde geçme
sayısını tutmaktadır.
42
Yazılan Java kodu ile kategorilere göre bölümlendirilmiş blogların herbirinde geçen
kelimelerin toplamları alınarak category_keyword tablosuna kaydedilmektedir.
Herhangi
bir
kelime
blog_keyword'de
birden
fazla
kere
bulunabilirken
category_keyword tablosunda o kelime ilgili kategoride bir kez geçmektedir. Bu
satır o kelime veya kelime grubunun kategorideki geçme adedini göstermektedir. Bu
veri bir sonraki aşamada uygulanacak olan algoritmanın da temelini oluşturmaktadır.
Örneğin “internet” kelimesini ele alacak olursak, keyword tablosundaki id'si 10
363'dür. blog_keyword tablosunda keyword_id = 10363 şeklinde bir sorgu
gönderdiğimizde 40 sonuç alınmaktadır. "internet" kelimesine göre blog_keyword
tablosunun sonuçları Şekil 4.11'da verilmektedir.
Şekil 4.11. “İnternet” kelimesine ait blog_keyword tablosu kayıtları
Category_keyword tablosunda “internet” kelimesi ile ilgili bir sorgu yaptığımızda
seçmiş olduğumuz 8 adet kategori ile ilişkili sonuçlarını görmekteyiz. Bu sonuçlar
içerisinde ilgili kategorilerin id'leri, internet kelimesinin id'si ve ilgili kategori
içerisindeki geçme sayıları vardır. "internet" kelimesine göre blog_keyword
tablosunun sonuçları Şekil 4.12'de verilmektedir.
43
Şekil 4.12. “İnternet” kelimesine ait category_keyword tablosu kayıtları
Sonuçlara göre “internet” kelimesi teknoloji kategorisinde 1360 defa geçmektedir.
Sırası ile ekonomi kategorisinde 338, seyahat kategorisinde 148, eğitim
kategorisinde 115, spor kategorisinde ise 46, sağlık kategorisinde 44, yemek
kategorisinde 18 ve son olarak da moda kategorisinde 16 defa geçmektedir.
“İnternet” kelimesinin teknoloji kategorisinde en çok bulunduğu görülmüştür.
Veri ayrıştırma işleminin sonucunda kelimeler tek, iki kelime ve üç kelimelik kelime
grupları halinde ayrıştırılmıştır. Toplamda 5 902 347 adet eğitim verisi
bulunmaktadır. Ayrıştırılan kelime ve kelime gruplarının sayısı Çizelge 4.3.'de
verilmiştir.
Çizelge 4.3. Kelime grubu türlerine göre kayıt sayısı
Kelime grubu
Adet
Bir kelime
236 651
İki kelime
2 239 586
Üç kelime
3 426 110
Toplam
5 902 347
Ayrıştırılan kelimelerin bloglarının kategorileri belli olduğu için bu kelimeler
otomatik olarak blogun ait olduğu kategorinin de örnek veri kümesini
oluşturmaktadırlar.
Buna
göre
kategorilere
göre
kelime
sayısı
kolayca
44
hesaplanabilmektedir. Kelime ve kelime gruplarının kategorilere göre dağılımı
Çizelge 4.4'de verilmiştir.
Çizelge 4.4. Kategorilere göre kelime sayısı
Kategori
Bir kelime
İki kelime
Üç kelime
Moda
4 902
16 794
18 429
Ekonomi
17 988
81 019
81 383
Seyahat
11 838
54 675
55 569
Teknoloji
17 580
99 405
111 030
Yemek
19 333
89 219
105 300
Sağlık
11 116
56 290
57 817
Spor
15 247
68 036
66 430
Eğitim
16 888
73 009
73 406
Eğitim verileri hazırlandıktan sonra kullanıma hazır hale getirilmiştir. Bu aşamada
Naive
Bayes
sınıflandırma
algoritmasının
uygulanmasına
geçilmiştir.
Bu
uygulamada Naive Bayes sınıflandırma algoritması Java programlama dili ile
programlanarak uygulamaya konulmuştur.
4.6. Naive Bayes Algoritmasının Uygulanması
Algoritma temel olarak kullanıcıdan aldığı içeriği, önce kelimelerine, daha sonra her
bir kelimeyi köküne kadar alarak kategoriler içerisinde geçme oranlarını Naive
Bayes yöntemi ile bulmaktadır.
Girilen test verisi, eğitim verisini oluştururken kurulan mantık ile aynı şekilde
çalışmaktadır. Test verisi 1, 2 ve 3 kelimelik kelime grupları halinde
ayrıştırılmaktadır.
Girilen test verisinin içerisinde 3 kelimelik kelime grubunun olması ve sınıflandırma
için kullanılmaması durumunda algoritma 1 ve 2 kelimelik kelime gruplarının
ağırlıklarına göre algoritmayı uygular. Bu durum algoritmanın istenmeyen bir sonuç
vermesine neden olmaktadır.
45
Algoritmanın uygulanma süresi boyunca kullanılacak eşitliklerde aşağıdaki sabitler
kullanılmaktadır:
C: Kategori
T: Herbir kategoride geçen kelime ve kelime gruplarının geçme toplamları
K: Kategorinin toplam içerik içerisindeki ağırlığı
P: Girilen içeriğin kategorideki ağırlığı
k: Kelime veya kelime grubunun kategoride geçme toplamı
F: Kelime veya kelime gruplarının kategoride geçme toplamlarının toplamı
n: Kelime veya kelime grubunun kategorideki ağırlığı
i: Algoritmaya girecek toplam kelime ve kelime grubu sayısı
c: Toplam kategori sayısı
f: 0 değer problemini çözmek için kullanılan katsayı, buradaki değeri 1
r: f/i değeri
fr: f * r
Test işlemi süresince kategorilerin toplam kelime toplamları aynı olmaktadır. Test
verisinin her çalışmasında bu veri tekrar hesaplanmamakta, daha önceden
hesaplanarak veritabanında category tablosunun num alanına kaydedilmektedir.
Çizelge 4.5'de bahsedilen verilerin listesi verilmektedir.
46
Çizelge 4.5. Kelimelerin kategorilerde geçme toplamlarının her bir kategorideki
toplam sayısı
Kategori
Toplam
Moda
1 006 720
Ekonomi
1 040 463
Seyahat
1 004 312
Teknoloji
1 243 514
Yemek
1 040 885
Sağlık
1 127 614
Spor
857 338
Eğitim
1 036 718
Genel Toplam
8 357 564
Tabloya göre T değeri de hesaplanarak bir değişkene atanmaktadır. Buna göre T
değeri aşağıdaki şekilde hesaplanmaktadır:
(4.1)
Eş. 4.1'e göre T değeri aşağıdaki gibidir:
Herbir kategorinin K yani kategori ağırlık değeri, kendi T değerlerinin toplamdaki T
değerine bölünmesi ile elde edilmektedir. Bu ifade Eş. 4.2'de gösterilmiştir.
(4.2)
Herbir kategori için Eş. 4.2 tek tek uygulandığında ağırlıklar bulunmaktadır. Çizelge
4.6'da kategorilerin ağırlıkları verilmektedir.
47
Çizelge 4.6. Kategorilerin ağırlıkları
Kategori
Ağırlık (K)
Moda
0.1204561520557904
Ekonomi
0.1244935725290288
Seyahat
0.1201680298230441
Teknoloji
0.1487890490578355
Yemek
0.1245440657110134
Sağlık
0.1349213718255702
Spor
0.1025822835457796
Eğitim
0.1240454754519379
Tek kelimelik bir test verisi olarak "internet" kelimesi kullanılmaktadır. Girilen test
verisi bir tabu kelime olmadığı için olduğu gibi kullanılacaktır. Herhangi bir
noktalama işareti de bulunmamaktadır. Yapım ya da çekim ekine sahip olmadığı için
Zemberek kütüphanesi içerisinden herhangi bir kelime üretilmeyecektir.
Sonraki adımda "internet" kelimesinin kategoriler içerisinde toplam geçme adetleri
hesaplanmaktadır. Çizelge 4.7'da internet kelimesinin kategorilerde geçme oranları
verilmektedir.
Çizelge 4.7. "İnternet" kelimesinin kategorilerdeki geçme toplamları
internet
Moda
Ekonomi Seyahat
Teknoloji
Yemek
Sağlık
Eğitim
Spor
16
338
1360
18
44
115
46
148
F değeri ise Eş. 4.3'de hesaplanmaktadır.
(4.3)
Algoritmaya göre herbir içeriğin, kategorilere göre tek tek ağırlıkları bulunacak ve
kategorinin toplamdaki ağırlığı ile çarpılıp girilen içeriğin kategoriye göre ağırlığı
hesaplanacaktır.
Fakat
bulunmaktadır.
0
Naive
değerleri
Bayes
çarpımı
uygulamalarında
etkileyeceği
için
0
değer
istenilen
problemi
sonuca
48
ulaşılamamaktadır. 0 değeri olasılıkların etkisini yok etmekte ve sonucu anlamsız
kılmaktadır. Bu durumu önlemek için f gibi bir değer her bir orana eklenmektedir.
Burada f, 0 ile 1 arasında bir sayıdır. Genellikle 1 tercih edilmektedir. Ayrıca f
değeri, r değeri ile çarpılması gerekmektedir. r değeri muhtemel değerlerin
toplamının 1'e bölümüne eşittir. Yani girilen test içeriğinde bulunan 1 adet kelimeye
bölünmektedir [27].
Bu açıklama aşağıdaki şekilde formülize edilmektedir:
f =1
i=1
(4.3)
(4.4)
(4.5)
Herbir kategori için test içeriğinin n değerinin yani kategorilerdeki ağırlığının
bulunması gerekmektedir. Toplam kategori sayısı c = 8 olduğu için döngü 8 kere
çalışmakta ve test içeriğinin kategori ağırlıklarını hesaplamaktadır. Fakat bu süreç
sadece teknoloji kategorisi için anlatılmaktadır.
(4.6)
Eş. 4.6'da test verisinin teknoloji kategorisinde nasıl hesaplandığı gösterilmektedir.
Bu eşitlikten çıkılarak "internet" kelimesinin n değeri teknoloji kategorisi için
aşağıdaki şekilde hesaplanmaktadır.
49
(4.7)
Eş. 4.6'ya göre değerler yerlerine konulduğunda teknoloji kategorisinin P değeri
aşağıdaki gibi hesaplanmaktadır.
(4.8)
Herbir kategori için aynı işlem uygulanır. Bu işlemler sonucunda hesaplanan
kategori oranları Çizelge 4.8'de verilmektedir.
Çizelge 4.8. "İnternet" kelimesinin kategorilerdeki geçme oranları
internet
Moda
Ekonomi Seyahat
Teknoloji
Yemek
Sağlık
Eğitim
0
0.02023 0.00858
0.09707
0
0.00291 0.00689 0.00231
Spor
Hesaplanan oranlara göre teknoloji kategorisinin toplam yüzdesi %69, ardından
gelen ekonomi kategorisinin oranı ise %14 olarak hesaplanmaktadır. Diğer
kategorilerin oranları ise seyahat %6, eğitim %4, sağlık %2 ve spor %1'dir. Girilen
test içeriğinin teknoloji kategorisine ait olduğu görülmektedir.
Cümle örneği olarak "Turizm firmalarının indirimleri yazın gelmesi ile başladı."
şeklindeki bir test verisi kullanılmaktadır. Bu içerik öncelikle noktalama
işaretlerinden arındırılmaktadır. Buna göre cümlenin sonundaki "." işareti
kaldırılmakta ve içeriğin son hali "Turizm firmalarının indirimleri yazın gelmesi ile
başladı" şeklinde olmaktadır. Cümle içerisindeki gürültülü verinin temizlenmesi ile
birlikte "ile" bağlacı çıkarılmaktadır. İçerik " "(boşluk) karakterine göre kelime
kelime ayrılmaktadır. Herbir kelime Zemberek kütüphanesi yardımı ile köklerine
kadar bulunmaktadır. Bu uygulamanın ardından içeriğin son hali aşağıdaki gibi
olmaktadır:
[turizm, turizm firma, indir, yazın, başla, gel, firma]
50
Yukarıda da görüldüğü üzere içerik 1 ve 2 kelimelik kelime gruplarına ayrılmakta,
yapım ve çekim eklerinden temizlenerek en sadece haline getirilmektedir.
Kategorilerin ağırlıkları Çizelge 4.6'da hesaplanmaktadır. Bu nedenle tekrar
anlatılmasına gerek yoktur. T değeri de Eş. 4.1'de hesaplanmaktadır.
Bu adımda ise test verisinde bulunan kelime gruplarının kategorilerde geçme
toplamları
hesaplanmaktadır.
Bu
bilgiler
category_keyword
tablosundan
alınmaktadır. 8 kategori için döngü oluşturulmaktadır. category_id ve keyword_id'
alanlarına göre test verilerinin kategorilerde geçme toplamları hesaplanmaktadır.
Çizelge 4.9'da test verilerinin kategorilerde geçme toplamları verilmektedir.
Çizelge 4.9. Cümle şeklinde girilen test verisinde bulunan kelime ve kelime
gruplarının kategorilerdeki geçme toplamları
turizm
turizm firma
indir
yazın
başla
gel
firma
Moda
2
30
648
34
105
341
22
Ekonomi
386
4
395
248
267
552
462
Seyahat
10 209
26
121
30
193
471
685
Teknoloji
0
0
340
171
509
1 261
371
Yemek
5
0
25
206
195
701
12
Sağlık
0
0
38
32
800
716
4
Eğitim
21
0
373
34
372
450
18
Spor
3
0
36
26
422
672
20
Sonraki adımda ise herbir kelime ve kelime grubunun F değerinin hesaplanması
gerekmektedir. F değeri Eş. 4.3'de olduğu gibi hesaplanmaktadır. Kelime ve kelime
gruplarının F değerleri Çizelge 4.10'da verilmektedir.
Çizelge 4.10. Cümle şeklinde girilen test verisinde bulunan kelime ve kelime
gruplarının toplam geçme toplamları
k
turizm
turizm firma
indir
yazın
başla
gel
firma
F
10 626
30
1 976
781
2 863
5 164
1 594
51
Çizelge 4.9'a bakıldığında 0 değer probleminin girilen test verisi için yaşanacağı
görülmektedir. Bu nedenle f, r ve fr değerleri hesaplanmaktadır.
f=1
i=7
(4.9)
(4.10)
Son adımda ise tüm kelime ve kelime grupları herbir kategori için Eş. 4.6 ve 4.7'deki
işlemler tek tek uygulanır. Bu işlem sırasında kategoriler için döngü 8 kere
çalışmaktadır. Test verisi için ise 7 kere çalışmakta ve kategorilerin olasılık
değerlerini hesaplamaktadır. Kelime ve kelime gruplarının kategorilerde geçme
olasılıkları Çizelge 4.11'de gösterilmektedir.
Çizelge 4.11. Cümle şeklinde girilen test verisinde bulunan kelime ve kelime
gruplarının kategorilerdeki oranları
turizm
turizm firma
indir
yazın
başla
gel
firma
Moda
Ekonomi
Seyahat
Teknoloji
Yemek
Sağlık
Eğitim
Spor
0.0002
0.0046
0.3278
0.0436
0.0367
0.0660
0.0138
0.036336
0.133641
0.19987
0.317318
0.093276
0.106901
0.289745
0.9606
0.8433
0.0612
0.0385
0.0674
0.0912
0.4295
0.000013
0.004608
0.17205
0.218853
0.177773
0.244171
0.232691
0.0004
0.0046
0.0127
0.2636
0.0681
0.1357
0.0076
0.0000
0.0046
0.0192
0.0411
0.2793
0.1386
0.0025
0.0019
0.0046
0.1887
0.0436
0.1299
0.0871
0.0113
0.0002
0.0046
0.0182
0.0334
0.1473
0.1301
0.0126
Eş. 4.8'e göre herbir kategorinin K değeri ile kelime ve kelime gruplarının
kategorilere göre hesaplanan n değerleri çarpılır ve kategorilerin P değerleri
hesaplanır. Bulunan P değeri yüzdesel olarak da hesaplanmakta ve en yakın
kategoriden en uzak kategoriye göre sonuçlar listelenmektedir. Bu işlem sonucunda
test verisi olarak girilen "Turizm firmalarının indirimleri yazın gelmesi ile başladı."
içeriğinin en ilişkili olduğu kategori %84 oranı ile seyahat ve %15 oranıyla ekonomi
takip etmektedir. Diğer 6 kategori ise sadece %1'lik bir oran almaktadır.
52
4.7. Kullanılan Test Yöntemleri ve Test Sonuçlarının Değerlendirilmesi
Uygulamanın doğruluğunun test verileri ile sınanması için 2 farklı yöntem
kullanılmaktadır. İlk yöntemde internet üzerinde bulunan bloglar içerisinden blog
adresleri
ve
içerikleri
rastgele
olarak
seçilip
uygulama
tarafından
sınıflandırılmaktadır. Diğer yöntemde ise gene rastgele olarak alınan blog içerikleri
paragraflarına göre ayrılmakta, bu ayrılan paragrafların her biri artan cümleler
şeklinde veritabanına kaydedilerek test işlemi için kullanılmaktadır.
Her iki yöntemin test edilmesi sonucunda ortaya çıkan sonuçlara kullanıcı tarafından
puan verilmektedir. Bu puana göre de uygulamanın başarısı yüzdesel ifade ile
belirtilmektedir. Değerlendirme işlemi 1 ile 5 arasında verilen puanlar ile
gerçekleşmektedir. 5 puan en yüksek 1 puan ise en düşüktür. Kullanıcının 5 puan
vermesi için çıkan kategori sonuçlarının içeriğe göre en iyi şekilde sıralanmış olması
gerekmektedir. Bu mantık doğrultusunda puanlar 1'e kadar azaltılabilmektedir. Eğer
sonuç içeriğe göre oldukça farklı ise 1 puan verilmektedir.
İlk
yöntemde
rastgele
seçilen
blog
içeriklerinin
doğru
sınıflandırılıp
sınıflandırılmadığı test edilmektedir. Bu test süreci boyunca toplamda 772 Türkçe
test verisi kullanılmıştır. Her test verisinin ait olduğu ihtimal kategoriler, en yakın
olandan en uzak olana doğru sıralanmıştır. Kullanıcı algısına en yakın ve en doğru
sonuca göre 5 puandan başlamak üzere 1 puana kadar puanlandırılmıştır. Toplam
800 test verisi kullanılmıştır. Test işlemi sonucunda çıkan sonuçlar Çizelge 4.12'de
gösterilmektedir.
Çizelge 4.12. Rastgele seçilen içerikler üzerinde uygulanan test işlemi sonucunda
çıkan oranlar
Puan
1 puan
2 puan
3 puan
4 puan
5 puan
Adet
13
1
13
73
700
Oran
1.625
0.125
1.625
9.125
87.5
53
Kullanılan ikinci test yönteminde de ilk yöntemde olduğu gibi blog adresleri internet
üzerinden rastgele olarak seçilmiştir. Fakat ilk yöntemden farklı olarak bu yöntem ile
cümle sayısının artış ve azalışının uygulamanın sınıflandırma sonuçlarını ne gibi
değiştirdiği gözlemlenmiştir.
Seçilen bir blog içeriği ilk olarak paragraflarına ayrılmıştır. Her bir paragraftaki
içerik ise anlam bütünlüğünü korumak amacı ile 1 cümle, 2 cümle, 3 cümle, 4 cümle,
5 cümle, ... n cümle olacak şeklilde ayrıştırılarak veritabanına kaydedilmiştir.
Bir blog adresinden alınan iki örnek paragraf ile kullanılan test yöntemi
detaylandırılmaktadır.
Test içeriğinin ilk paragrafı aşağıdaki gibidir:
"Bu Bodrum yazılarımın ilki değil, sanırım sonuncusu da olmayacak. Sadece
eğlence değil, deniz, güneş ve huzur isteyenler de Bodrum’da harika bir tatil
yapabilir düşüncesindeyim. Tabii sezonda Bodrum demek, yüksek fiyatlı uçak bileti,
istediğin tarihlerde otellerde yer bulma sıkıntısı ve özellikle Cumartesi ve Pazar
günleri plaj ve iskelelerde şezlong kalmaması sorunu olarak seni az da olsa mutsuz
edebilir. Ama tüm bunlarla baş edebilirim dersen Bodrum’da bu yaz yeni yerler
keşfetmene, yeni tatlar denemene vesile olabilirim.".
Test içeriğinin 2. paragrafı aşağıdaki gibidir:
"Ben Bodrum’da en çok Gölköy’ü seviyorum. Sıra sıra dizilmiş 15-20 odalı küçük
otellerin (Beluga, Maritim, Velena, Sultan…) hepsinin önünde kendi iskeleleri var.
Deniz şahane. İskeleler akşam restorana dönüşüyor, şezlonglar kaldırılıyor, yerini
masalar alıyor. Mehtap da varsa değmeyin keyfime.".
Her bir paragraftaki cümleler ilk cümle, ilk 2 cümle, ilk 3 cümle, ..., ilk n cümle
olacak şekilde gruplara ayrılmaktadır. Buna göre ilk paragrafın örnek kümesi
aşağıdaki gibidir.
54
İlk paragrafın 1. test içeriği, ilgili paragrafın ilk cümlesinden oluşmaktadır. "Bu
Bodrum yazılarımın ilki değil, sanırım sonuncusu da olmayacak." şeklindedir.
İlk paragrafın 2. test içeriği, ilgili paragrafın ilk iki cümlesinden oluşmaktadır. "Bu
Bodrum yazılarımın ilki değil, sanırım sonuncusu da olmayacak. Sadece eğlence
değil, deniz, güneş ve huzur isteyenler de Bodrum’da harika bir tatil yapabilir
düşüncesindeyim." şeklindedir.
İlk paragrafın 3. test içeriği, ilgili paragrafın ilk üç cümlesinden oluşmaktadır. "Bu
Bodrum yazılarımın ilki değil, sanırım sonuncusu da olmayacak. Sadece eğlence
değil, deniz, güneş ve huzur isteyenler de Bodrum’da harika bir tatil yapabilir
düşüncesindeyim. Tabii sezonda Bodrum demek, yüksek fiyatlı uçak bileti, istediğin
tarihlerde otellerde yer bulma sıkıntısı ve özellikle Cumartesi ve Pazar günleri plaj
ve iskelelerde şezlong kalmaması sorunu olarak seni az da olsa mutsuz edebilir."
şeklindedir.
İlk paragrafın 4. test içeriği, ilgili paragrafın ilk dört cümlesinden yani paragrafın
tümünden oluşmaktadır. "Bu Bodrum yazılarımın ilki değil, sanırım sonuncusu da
olmayacak. Sadece eğlence değil, deniz, güneş ve huzur isteyenler de Bodrum’da
harika bir tatil yapabilir düşüncesindeyim. Tabii sezonda Bodrum demek, yüksek
fiyatlı uçak bileti, istediğin tarihlerde otellerde yer bulma sıkıntısı ve özellikle
Cumartesi ve Pazar günleri plaj ve iskelelerde şezlong kalmaması sorunu olarak seni
az da olsa mutsuz edebilir. Ama tüm bunlarla baş edebilirim dersen Bodrum’da bu
yaz yeni yerler keşfetmene, yeni tatlar denemene vesile olabilirim." şeklindedir.
Yukarıda belirtilen kurala göre ikinci paragrafın örnek test içerikleri aşağıdaki
şekilde oluşmaktadır.
İkinci paragrafın 1. test içeriği, ilgili paragrafın ilk cümlesinden oluşmaktadır. "Ben
Bodrum’da en çok Gölköy’ü seviyorum." şeklindedir.
55
İkinci paragrafın 2. test içeriği, ilgili paragrafın ilk iki cümlesinden oluşmaktadır.
"Ben Bodrum’da en çok Gölköy’ü seviyorum. Sıra sıra dizilmiş 15-20 odalı küçük
otellerin (Beluga, Maritim, Velena, Sultan…) hepsinin önünde kendi iskeleleri var."
şeklindedir.
İkinci paragrafın 3. test içeriği, ilgili paragrafın ilk üç cümlesinden oluşmaktadır.
"Ben Bodrum’da en çok Gölköy’ü seviyorum. Sıra sıra dizilmiş 15-20 odalı küçük
otellerin (Beluga, Maritim, Velena, Sultan…) hepsinin önünde kendi iskeleleri var.
Deniz şahane." şeklindedir.
İkinci paragrafın 4. test içeriği, ilgili paragrafın ilk dört cümlesinden oluşmaktadır.
"Ben Bodrum’da en çok Gölköy’ü seviyorum. Sıra sıra dizilmiş 15-20 odalı küçük
otellerin (Beluga, Maritim, Velena, Sultan…) hepsinin önünde kendi iskeleleri var.
Deniz şahane. İskeleler akşam restorana dönüşüyor, şezlonglar kaldırılıyor, yerini
masalar alıyor." şeklindedir.
İkinci paragrafın 5. test içeriği, ilgili paragrafın ilk beş cümlesinden yani paragrafın
tümünden oluşmaktadır. "Ben Bodrum’da en çok Gölköy’ü seviyorum. Sıra sıra
dizilmiş 15-20 odalı küçük otellerin (Beluga, Maritim, Velena, Sultan…) hepsinin
önünde kendi iskeleleri var. Deniz şahane. İskeleler akşam restorana dönüşüyor,
şezlonglar kaldırılıyor, yerini masalar alıyor. Mehtap da varsa değmeyin keyfime."
şeklindedir.
Her bir kategori için rastgele olarak seçilen blog içeriklerinden 250'şer adet cümle
oluşturularak kategoriler ile ilişkilendirilmiştir. Oluşturulan bu test verileri
oluşturulan arayüzde bulunan test içerik sekmesinden test edilerek çıkan
sınıflandırma sonuçları puanlandırılmıştır. Bütün kategoriler için bu test işlemi tek
tek yapılarak sonuçları analiz edilmiştir.
Sağlık kategorisine göre yapılan cümle bazlı test işlemi sonuçları Çizelge 4.13'de
gösterilmektedir.
56
Çizelge 4.13. Sağlık kategorisi için yapılan cümle bazlı test sonuçları
Cümle/Puan
1 puan
2 puan
3 puan
4 puan
5 puan
1 cümle
0
0
5
22
135
2 cümle
0
0
0
4
37
3 cümle
0
0
0
2
19
4 cümle
0
0
0
1
13
5 cümle
0
0
0
1
7
6 cümle
0
0
0
0
3
7 cümle
0
0
0
0
1
>7 cümle
0
0
0
0
0
Toplam
0
0
5
30
215
Sağlık kategorisideki sonuçlar analiz edildiğinde, test içeriğinin cümle sayısının
değişkenliğinin sonuçlara çok yüksek düzeyde bir etkisinin olmadığı görülmüştür.
Sağlık kategorisinde algoritmanın yüksek bir yüzde ile doğru bir şekilde çalıştığı
anlaşılmaktadır.
Ekonomi kategorisine göre yapılan cümle bazlı test işlemi sonuçları Çizelge 4.14'de
gösterilmektedir.
Çizelge 4.14. Ekonomi kategorisi için yapılan cümle bazlı test sonuçları
Cümle/Puan
1 puan
2 puan
3 puan
4 puan
5 puan
1 cümle
3
1
3
9
37
2 cümle
0
3
1
1
38
3 cümle
2
1
0
3
29
4 cümle
3
0
0
1
24
5 cümle
1
0
0
2
21
6 cümle
1
0
0
2
16
7 cümle
1
0
0
1
12
>7 cümle
0
0
0
1
33
Toplam
11
5
4
20
210
57
Ekonomi kategorisideki sonuçlar analiz edildiğinde, cümle sayısının sağlık
kategorisine göre ekonomi kategorisinin daha çok etkilediği gözlemlenmiştir. Bu
duruma özelikle 1 ve 4 cümlelik içeriklerde rastlanmıştır.
Seyahat kategorisine göre yapılan cümle bazlı test işlemi sonuçları Çizelge 4.15'de
gösterilmektedir.
Çizelge 4.15. Seyahat kategorisi için yapılan cümle bazlı test sonuçları
Cümle/Puan
1 puan
2 puan
3 puan
4 puan
5 puan
1 cümle
8
1
5
11
53
2 cümle
9
0
2
5
40
3 cümle
5
0
0
6
30
4 cümle
3
0
0
3
23
5 cümle
4
0
0
2
14
6 cümle
1
0
0
1
8
7 cümle
1
0
0
1
6
>7 cümle
0
0
0
0
8
Toplam
31
0
7
29
182
Seyahat kategorisinde özellikle kısa cümlelerde 1 puan sayısının yüksek olduğu
görülmektedir. Bu durum seyahat kategorisi ile ilgili bir içerikde diğer kategorilere
ait
olan
ayırt
edici
kelime
ve
kelime
gruplarının
fazla
olmasından
kaynaklanmaktadır.
Eğitim kategorisine göre yapılan cümle bazlı test işlemi sonuçları Çizelge 4.16'da
gösterilmektedir.
58
Çizelge 4.16. Eğitim kategorisi için yapılan cümle bazlı test sonuçları
Cümle/Puan
1 puan
2 puan
3 puan
4 puan
5 puan
1 cümle
9
5
11
16
62
2 cümle
10
1
4
8
32
3 cümle
2
1
1
3
24
4 cümle
3
0
1
1
15
5 cümle
1
0
0
1
7
6 cümle
1
0
0
0
7
7 cümle
0
0
0
0
3
>7 cümle
0
0
0
0
21
Toplam
26
0
17
29
171
Eğitim kategorisi cümle sayısının artışına göre başarı oranının yükseldiği bir
kategoridir. Özellikle 7 cümleden büyük içerikler için başarı oranı düşmektedir. 1 ve
2 cümlelik içeriklerde ayırt edici kelimelerin azlığı başarı oranını düşürmekte ve
içeriğin diğer kategorilerde çıkmasına neden olmaktadır.
Moda kategorisine göre yapılan cümle bazlı test işlemi sonuçları Çizelge 4.17'de
gösterilmektedir.
Çizelge 4.17. Moda kategorisi için yapılan cümle bazlı test sonuçları
Cümle/Puan
1 puan
2 puan
3 puan
4 puan
5 puan
1 cümle
13
9
7
14
79
2 cümle
21
1
5
7
27
3 cümle
14
0
2
6
14
4 cümle
12
1
0
2
3
5 cümle
3
0
0
0
3
6 cümle
2
0
0
1
1
7 cümle
2
0
0
0
0
>7 cümle
1
0
0
0
0
Toplam
68
11
14
30
127
59
Moda kategorisi sınıflandırmanın en etkisiz olduğu kategoridir. Moda kategorisi
diğer kategorilerle taşığı ortak kelime ve kelime gruplarından dolayı özellikle 1, 2, 3
ve 4 cümlelik içeriklerde oldukça düşük başarı elde etmiştir.
Yemek kategorisine göre yapılan cümle bazlı test işlemi sonuçları Çizelge 4.18'de
gösterilmektedir.
Çizelge 4.18. Yemek kategorisi için yapılan cümle bazlı test sonuçları
Cümle/Puan
1 puan
2 puan
3 puan
4 puan
5 puan
1 cümle
0
0
2
4
142
2 cümle
0
0
0
1
27
3 cümle
0
0
0
1
21
4 cümle
0
0
0
0
13
5 cümle
0
0
0
0
11
6 cümle
0
0
0
0
11
7 cümle
0
0
0
0
8
>7 cümle
0
0
0
0
9
Toplam
0
0
2
6
242
Yemek kategorisi sınıflandırmanın en yüksek başarı ile çalıştığı kategori olduğu
görülmektedir. Cümle sayısından bağımsız olarak, yemek kategorisi için kullanılan
test içerikleri başarılı bir şekilde sınıflandırılmıştır.
Spor kategorisine göre yapılan cümle bazlı test işlemi sonuçları Çizelge 4.19'da
gösterilmektedir.
60
Çizelge 4.19. Spor kategorisi için yapılan cümle bazlı test sonuçları
Cümle/Puan
1 puan
2 puan
3 puan
4 puan
5 puan
1 cümle
0
0
2
1
59
2 cümle
0
0
0
2
41
3 cümle
0
0
0
1
37
4 cümle
0
0
0
0
32
5 cümle
0
0
0
1
25
6 cümle
0
0
0
1
20
7 cümle
0
0
0
0
14
>7 cümle
0
0
0
0
14
Toplam
0
0
2
6
242
Spor kategorisinde de yemek kategorisine benzer olarak sınıflandırma başarısı
oldukça yüksektir. Bu nedenle spor ve yemek kategorilerindeki ayırt edici kelime ve
kelime gruplarının sınıflandırma başarısını yükselttiği görülmektedir.
Teknoloji kategorisine göre yapılan cümle bazlı test işlemi sonuçları Çizelge 4.20'de
gösterilmektedir.
Çizelge 4.20. Teknoloji kategorisi için yapılan cümle bazlı test sonuçları
Cümle/Puan
1 puan
2 puan
3 puan
4 puan
5 puan
1 cümle
2
0
6
17
74
2 cümle
4
0
1
11
56
3 cümle
2
2
0
4
35
4 cümle
1
0
0
3
20
5 cümle
0
0
0
1
6
6 cümle
0
0
0
1
3
7 cümle
0
0
0
0
1
>7 cümle
0
0
0
0
0
Toplam
9
2
7
37
195
61
Teknoloji kategorisinde 1 cümleli içeriklerde puanlamaların 4 ile 5 arasında olduğu
görülmektedir. Bu durumun nedeni teknoloji kategorisinde tek cümleli içeriklerin
diğer kategorilerin ayırt edici kelime ve kelime gruplarını taşıdığı fakat gene de
teknolojiyi de içerdiği sonucuna varılmaktadır. Bu durum cümle sayısındaki artışa
bağlı olarak azalmakta ve sınıflandırma başarısı artmaktadır.
4.8. Uygulama Arayüzü
Çalışmanın uygulama arayüzünün oluşturulması için Java ve JSP(Java Server Pages)
kullanılmaktadır. JSP, Java programlama dili ile birlikte çalışan bir dinamik web
sayfa oluşturma dilidir. HTML, XML gibi farklı döküman türleri üzerine
yapılandırılmıştır. JSP'nin çalıştırılabilmesi için Apache Tomcat veya Jetty gibi
sunucular ile birlikte çalıştırılması gerekmektedir.
Tezin
uygulama
ve
test
sayfası
http://www.karid.es
websitesi
üzerinden
yayınlanmaktadır.
Uygulama içerisinde 4 adet sayfa bulunmaktadır:
1. Anasayfa (Algoritma uygulama sayfası)
2. İstatistik
3. Test içerik listsi
4. Test içerik oluştur
4.8.1. Anasayfa
Anasayfa, test içeriği kullanılarak algoritmanın çalıştırıldığı sayfadır. Sayfanın üst
kısmında uygulama hakkında genel bilgiler verilmekte, kullanıcının test sürecinin
nasıl yapacağını anlatan bir metin bulunmaktadır. Şekil 4.13'de anasayfanın genel bir
görünümü verilmiştir.
62
Şekil 4.13. Algoritma uygulama anasayfası
Anasayfa içerisinde farklı yöntemler vasıtası ile içerik oluşturularak algoritma test
edilebilmektedir.

Elle içerik girilmesi

Rastgele içerik sekmesi

Test içerik sekmesi

Kayıtlı url sekmesi

Harici url sekmesi
Sayfada bulunan "İçerik" alanına kullanıcılar herhangi bir içerik girebilmektedirler.
Bunun yanı sıra "Rastgele içerik" sekmesine tıklandığında görünmekte olan
"Rastgele içerik getir" butonuna basılarak da veritabanına kaydedilmiş herhangi bir
63
test verisi rastgele bir şekilde seçilerek "İçerik" alanına yerleştirilir. Şekil 4.14'de
"Rastgele İçerik" sekmesinin ekran görüntüsü verilmektedir.
Şekil 4.14. Rastgele içerik getirme sekmesi
Test içerik sekmesinden, her bir kategor için kaydedilen ve bu içeriklerin cümle
cümle parçalanarak kaydedilmesi ile oluşturulan test içeriklerinin rastgele olarak
getirilmesi sağlanmaktadır. Şekil 4.15'de "Test İçerik" sekmesinin ekran görüntüsü
verilmektedir.
Şekil 4.15. Test içerik getirme sekmesi
"Kayıtlı url" sekmesinde ise daha önceden veritabanına kaydedilmiş herhangi bir
websayfası linki listeden seçilerek "Gönder" butonun basılır ve ilgili linkin içeriği
"İçerik" alanına yerleştirilir. Şekil 4.16'da "Kayıtlı Url" sekmesinin ekran görüntüsü
verilmektedir.
Şekil 4.16. Kayıtlı url'den içerik getirme sekmesi
Bunların yanı sıra internet ortamından bulunan herhangi bir websayfası linki
kopyalanıp "Harici Url" sekmesinde bulunan "Url" alanına yazılır ve "Gönder"
64
butonuna basılarak ilgili linkin içeriğinin getirilerek "İçerik" alanına yerleştirilmesi
sağlanır. Şekil 4.17'de "Harici Url" sekmesinin ekran görüntüsü verilmektedir.
Şekil 4.17. Harici url'den içerik getirme sekmesi
Bahsedilen bu 4 yöntemin sonucunda içerik alanında bir test verisi bulunur ve
algoritmayı test edilebilmesi için hazır hale getirilir. Şekil 4.18'de bahsedilen 4
yöntemden herhangi biri ile getirilmiş bir test verisinin "İçerik" alanında yerleşimi
gösterilmektedir.
Şekil 4.18. İçerik alanında bulunan test verisinin gösterimi
"Algoritmayı Uygula" butonuna tıklandıktan sonra, "İçerik" alanında bulunan test
verisi algoritma tarafından işlenir. İligili kategoriler en ilgiliden daha az ilgiliye
doğru yüzdelik gösterimleri ile birlikte "Sonuçlar" kısmında listelenmektedir. Şekil
4.19'da "Sonuçlar" listesinin ekran görüntüsü verilmektedir.
Şekil 4.19. Sonuçlar listesi
65
"Sonuçlar"
listesinin
altında,
ilgili
sonuçların
değerlendirildiği
"Sonuçları
Değerlendir" paneli bulunmaktadır. Bu kısımda 1-5 arası radio button'lar
bulunmaktadır. Test içeriğini değerlendiren kullanıcı kendisine en yakın gelen
sonuçlara uygun olarak puan vermektedir. Bu kısım kullanılarak algoritmanın
geçerliliği de test edilmiş olmaktadır. Şekil 4.20'de "Sonuçları Değerlendir"
panelinin ekran görüntüsü verilmektedir.
Şekil 4.20. Sonuçları değerlendir paneli
"Kelime ve Kelime Gruplarının Kategorilere Göre Oranları" kısmında ise herbir
kelime ve kelime grubunun kategorilerde bulunma sayıları ve oranları ayrıntılı
olarak listelenmektedir. Şekil 4.21'de "Kelime ve Kelime Gruplarının Kategorilere
Göre Oranları" panelinin ekran görüntüsü verilmektedir.
Şekil 4.21. Kelime ve kelime gruplarının kategorilere göre oranları paneli
Anasayfanın en altında ise girilen test verisi içerisinde bulunan fakat eğitim kümesi
içerisinde kayıtlı olmayan kelime ve kelime gruplarının listesi " Eğitim Kümesi
66
İçerisinde Geçmeyen Kelime ve Kelime Grupları" başlığı altında verilmektedir.
Şekil 4.22'de bu panelin ekran görüntüsü verilmektedir.
Şekil 4.22. Eğitim kümesi içerisinde geçmeyen kelime ve kelime grupları
4.8.2. İstatistik sayfası
Test sonucunda kullanıcıların sonucun kalitesine göre verdikleri puanların sayısal ve
yüzdesel istatistiği istatistik sayfasında verilmektedir. Kullanıcı her bir sonuca en az
1, en fazla 5 arasında puan vermektedir. Bu puanlama tamamen testi yapanın kişisel
bilgi ve birikimine kalmıştır. Fakat sonuçları doğruluğu için genel kabul edilmiş
bilgilere bağlı kalması önemlidir. Eğer bir içerik “teknoloji” kategorisine ait iken
“yemek” kategorisine ait olduğu kabul edilirse istatistiki sonuçlar da güvenilirliğini
kaybeder. İstatistik sayfasının ekran görüntüsü Şekil 4.23'de verilmektedir.
67
Şekil 4.23. İstatistik sayfası
4.9.3. Test içerik listesi sayfası
Test içerik sayfası içerisinde uygulama içerisinde daha önceden test edilerek
kaydedilen test verilerinin listesi blunmaktadır. Bu sayfa ile hem kayıtlı test verileri
görülebilmekte hem de bu test verilerine verilmiş olan puanlar görülebilmektedir.
Şekil 4.24'de test içerik listeleme sayfasının ekran görüntüsü verilmektedir.
68
Şekil 4.24. Test içerik listeleme sayfası
4.9.4. Test içerik oluşturma sayfası
Her bir kategori için oluşturulan test içeriklerinin kaydedilmesi için kullanılan
sayfadır. Url, içerik, kategori form elemanları bulunmaktadır. Şekil 4.25'de test
içerik oluşturma sayfasının ekran görüntüsü verilmektedir.
69
Şekil 4.25. Test içerik oluşturma sayfası
Kaydedilmek istenilen blog adresi "url" form alanına yazılır. İstenirse "getir"
butonuna basılarak web adresinin içeriği otomatik olarak çekilmektedir. Otomatik
olarak çekilen blog yazısı "içerik" alanına yerleştirilir. Kullanıcı isterse
kopyala/yapıştır yöntemi ile de blog içeriğini "içerik" alanına yerleştirebilmektedir.
Blog içeriğinin ilgili olduğu kategori seçildikten sonra "Ekle" butonuna basılarak
bütün veriler, veritabanında bulunan test_content tablosuna kaydedilmektedir.
70
5. SONUÇ VE ÖNERİLER
Bu çalışma ile Türkçe blog içeriklerinin veri madenciliği algoritmalarından Naive
Bayes ile başarılı bir şekilde sınıflandırılması işlemi yapılmıştır. Naive Bayes
algoritmasının, Türkçe içerikli bloglarda sınıflandırma yapabileceği kanıtlanmıştır ve
hedeflenen amaca ulaşılmıştır.
Hazırlanan eğitim verisinin genişliği ile sunulan kategorilerin sayısı, algoritmanın
test içeriklerini nasıl sınıflandıracağı konusunda önem göstermektedir. Bu nedenle
oluşturulacak eğitim kümesinin ve belirlenecek kategorilerin belirlenen amaç
doğrultusunda, hazırlanacak programın kapsamına göre dikkatlice seçilmesi
gerekmektedir.
Web teknolojileri ve bilişim alanlarında faaliyet gösteren, blog içerikleri, web sitesi
içerikleri gibi metine dayalı içeriklerin sınıflandırılması konusunda yapılacak
çalışmalar için temel teşkil edecek bir uygulama yapılmıştır. Sınıflandırma
algoritması ve eğitim kümesinin hazırlanışı benzer çalışmalar için örnek
oluşturmaktadır.
Moda kategorisinde olduğu gibi, diğer kategoriler ile ortak bir kelime ve kelime
grubu kümesine sahip kategorilerde başarı oranı yüksek değildir. Bu gibi bir
durumda sınıflandırılması istenilen içerik ortak kelime ve kelime grubunun
ağırlığının ait olduğu kategoriye ve kategorinin eğitim kümesi içerisindeki ağırlığına
bağlı olarak istenmeyen şekilde sınıflandırılabilmektedir. Bundan sonraki yapılacak
benzer çalışmalarda bu durum göz önünde bulundurularak farklı yaklaşımların
denenmesinde fayda vardır. Ayırt edici ve ortak kelimelerin farklı yaklaşımlarla
analiz edilmesi tavsiye edilmektedir.
Kullanılan test içeriklerinin farklı cümle sayılarına göre test işlemi uygulandığında
sınıflandırma başarısının kategorilere göre farklılık gösterdiği görülmüştür. Buna
göre moda kategorisi en çok farklılığın görüldüğü kategoridir. Moda kategorisinde
test içeriğinde geçen cümle sayısı ne kadar fazla ise algoritmanın da doğruluk oranı o
71
kadar artmaktadır. Cümle sayısının azlığı ve farklı kategorilere ait kelime ve kelime
gruplarının bulunması moda kategorisinin başarısını düşürmektedir. Bu durum en
büyük başarı yüzdesinin gözlemlendiği yemek ve spor kategorilerinde tam tersidir.
Bu kategorilere ait olan eğitim kümesi içerisindeki kelime ve kelime gruplarının
dağılımı diğer kategorilerde bulunma oranlarından daha yüksektir. Bu nedenle de bir
test içeriğinin sınıflandırılması işleminde, test içeriğinin yemek ve spor kategorisine
ait olması oranı diğer kategorilere göre daha yüksektir.
Bu çalışmada başta belirlenen hedefe ulaşılabilmiş fakat bazı öngörülemeyen
durumlar nedeni ile algoritmanın bazı kategoriler için daha farklı yaklaşımlar
gösterilmesi gerektiği sonucuna varılmıştır. Belirlenen kategorilere göre eğitim
kümesi hazırlanırken seçilecek eğitim kümesi içeriklerinin kategorilere uygun
olmasına dikkat edilmelidir.
Diğer bir önemli nokta ise kelime köklerinin bulunmasında dikkat edilmesi gereken
yaklaşımdır. Türkçe doğal dil işleme alanında yapılan çalışmaların yetersizliğinden
dolayı alternatif çözüm yollarına yönelinmesi ve daha kaliteli sonuçlar yaratılması
gerekmektedir.
Çalışmada Naive Bayes algoritması kullanılmasına rağmen belirtilen problemin
çözümü için alternatif veri madenciliği algoritmaları da kullanılabilmektedir. En
yakın K-komşu algoritması, karar ağaçları, yapay sinir ağları ilgili algoritmalara
örnek olarak gösterilebilmektedir.
72
KAYNAKLAR
1.
Chau, M., Lam, P., Shiu B., Xu, J., Cao, J., “A Blog Mining Framework”, IT
Professional, 11 (1): 36-41 (2009).
2.
Huang, T., Cheng, S., and Huang, Y., “A blog article recommendation
generating mechanism using an SBACPSO algorithm”, Expert Systems with
Applications, 36: 10388–10396 (2009).
3.
Li, Y., Chen, C., “A synthetical approach for blog recommendation:
Combining trust, social relation, and semantic analysis”, Expert Systems with
Applications, 36: 6536–6547 (2009).
4.
Dalal, M.K., "Automatic text classification of sports blog data", Computing,
Communications and Applications Conference (ComComAp), 219-222
(2012)
5.
Rastogi, R., Shim, K., “Mining Optimized Association Rules with
Categorical and Numric Attributes”, IEEE Transactions On Knowledge
And Data Engineering, 14(1): 29-50(2002).
6.
Krishna, P. R., De, K. S., “Naive-Bayes Classification using Fuzzy
Approach”, Intelligent Sensing and Information Processing, 61-64
(2005).
7.
Vahaplar , A., İnceoğlu, M.M.: Veri Madencili ği ve Elektronik Ticaret, VII.
Türkiye’de İnternet Konferans ı, 1–3 Kasım 2001.
8.
Han, J. And Kamber, M. 2001, Data Mining Concepts and Techniques,
Academic Pres, New York.
9.
Pedryez, W., and Sosnowski, Z. A., “Designing Decision Trees with the Use
of Fuzzy Granulation”, IEEE Transactions On Systems, Man, And
Cybernetics, 30(2): 151 – 159 (2000).
10.
Setiono, R., Liu, H., “A Connectionist Approach to Generating Oblique
Decision Trees”, IEEE Transactions On Systems, Man, And Cybernetics,
29(3): 440-444 (1999).
11.
Shah, S., and Sastry, P. S., “New Algorithms for Learning and Pruning
Oblique Decision Trees”, IEEE Transactions On Systems, Man, And
Cybernetics, 29(4): 494-505(1999).
12.
Tosun, T., “Veri Madenciliği Teknikleriyle Kredi Karlarında Müşteri
Kaybetme Analizi”, İstanbul Teknik Üniversitesi Fen Bilimleri Enstitüsü,
Yüksek Lisans Tezi, İstanbul, 2006.
73
13.
Küçüksille, E., “Veri Madenciliği Süreci Kullanılarak Portföy Performansının
Değerlendirilmesi ve İMKB Hisse Senetleri Piyasasında Bir Uygulama”,
Süleyman Demirel Üniversitesi Sosyal Bilimler Enstitüsü İşletme Anabilim
Dalı, Doktora Tezi, Isparta, 2009.
14.
Mou, S., Gao, H., Qiang, W., and Chen, K., “New Delay-Dependent
Exponential Stability for Neural Networks With Time Delay”, IEEE
Transactions On Systems, Man, And Cybernetics, 38(2): 571-576 (2008).
15.
Albayrak, M., Allahverdi, N., “Development a new mutation operator to
solve the Traveling Salesman Problem by aid of Genetic Algorithms”,
Expert Systems with Applications, 38: 1313-1320 (2011).
16.
Kalıkov, A., “Veri Madenciliği ve Bir E-Ticaret Uygulaması”, Gazi
Ünversitesi Fen Bilimleri Enstitüsü Elektronik ve Bilgisayar Eğitimi, Ankara,
2006.
17.
Choi, I., Kim, S., Kim, H., “A genetic algorithm with a mixedregion search
for
the asymmetric traveling salesman problem”, Computers &
Operations Research, 30: 773-786 (2003).
18.
Xie, J., and Jiang, S., “A simple and fast algorithm for global K-means c
lustering”, 2010 Second International Workshop on Education Technology
and Computer Science, 36-40 (2010).
19.
Chen, Y-L., Chen, J-M., Tung, C-W., “A Data Mining Approach For
Retail Knowledge Discovery With Consideration Of The Effect Of
Shelf-Space Adjacency On Sales”, Decisions Support Systems, 3(42):
1503-1520 (2006).
20.
Ordonez, C., “Association Rule Discove ry With the Train and Test
Approach for Heart Disease Prediction”, IEEE Transactions On
Information Technology In Biomedicine, 10(2): 334-343(2006).
21.
Rushing, J. A., Ranganath, H.S., Hinke, T. H., Graves, S. J., “Using
Association Rules as Texture Features”, IEEE Transactions On Pattern
Analysis And Machine Intelligence, 23(8): 845-858 (2001).
22.
Akbulut, S., “Veri Madenciliği Teknikleri İle Bir Kozmetik Markanın
Ayrılan Müşteri Analizi Ve Müşteri Segmentasyonu”, Yüksek Lisans Tezi,
Gazi Üniversitesi Fen Bilimleri Enstitüsü, 2006.
23.
Bidgoli, A. M., Boraghi, M., “A Language Independent Text Segmentation
Technique Based on Naive Bayes Classifier”, International Conference on
Signal and Image Processing, 11-16 (2010).
74
24.
Lee, C-H., Gutierrez, F., Dou, D., “Calculating Feature Weights in Naive
Bayes with Kullback-Leibler Measure”, 11th IEEE International
Conference on Data Mining, 1146-1151 (2011).
25.
Altıntaş, T., “Veri Madenciliği Metotlarından Olan Kümeleme
Algoritmalarını Uygulamalı Etkinlik Analizi”, Sakarya Üniversitesi Fen
Bilimleri Enstitüsü, Sakarya, 2006.
26.
Akın, A. A., Akın, M. D., “Zemberek” http://code.google.com/p/zemberek/
27.
Roiger, R., Geatz, M.W., “Data Mining: A Tutorial-Based Primer”, Addison
Wesley, 2003.
75
ÖZGEÇMİŞ
Kişisel Bilgiler
Soyadı, adı
: DEĞERLİ, Onur
Uyruğu
: T.C.
Doğum tarihi ve yeri
: 21.07.1985 Merzifon, Amasya
Medeni hali
: Bekar
Telefon
: 0 (506) 818 98 16
e-mail
: onurdegerli@gmail.com
Eğitim
DereceEğitim Birimi
Mezuniyet tarihi
Lisans Gazi Üniversitesi/ Bilgisayar Sistemleri Öğrt.
2008
Lise
2003
Merzifon Anadolu Ticaret Meslek Lisesi
İş Deneyimi
Yıl
Yer
Görev
2008
Yön Group
Web Geliştiricisi
2008
BerilTech
Web Geliştiricisi
2009
Derle Danışmanlık Bilişim
Yazılım Uzmanı
2011
Nokta Domains
Web Geliştiricisi
2011
BerilTech
Web Geliştiricisi
Yabancı Dil
İngilizce
Hobiler
İnternet teknolojileri, kitap okumak, dart sporu.
Download