Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
İsmail  Pilavcılar
İsmail Pilavcılar
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
3 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: egitim ekleri farkli isleme istedigimiz istenen kategoriler kategorizasyon kelime kelimeler kelimeleri kelimelerin kelimenin kelimesi noktalama Yazılım Müh. İsmail Pilavcılar
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : İleri
Kategori : Yazılım Müh.
Yayınlanma Tarihi : 8.9.2007
Okunma Sayısı : 37668
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 23.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 23.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 23.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 23.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Metin Madenciliği ile Metin Sınıflandırma - 2
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Geçtiğimiz makalemde Metin Madenciliğine kısa bir giriş yapmıştım. Bu makale ile de Metin Madenciliğinin ilk aşamaları üzerinde durup sözlük ve döküman vektörleri kavramlarını, ağırlıklandırma yöntemlerinin neler olduğunu, ön işleme aşaması gibi konulardan bahsedeceğim. Bilindiği gibi bilgisayarlar her geçen gün hayatımıza daha çok girmekte ve elimizdeki verileri saklayabileceğimiz, istediğimizde bu verilere ulaşabileceğimiz, arama yapabileceğimiz birer araç olmuşlardır. Bununla birlikte, son yıllarda; veritabanlarında saklanan verinin oldukça büyümüş ve buna bağlı olarak da, verinin çeşitli yöntemlerle organize edilme ihtiyacı doğmuştur. Tüm durumlarda amaç hep aynıdır. Böylesine büyük boyutta, biçimsiz ve karmaşık veriler arasından istenen veriyi bulup çıkarmak.

Metin halindeki verilerde ise bunu kolaylaştıran yöntem: Metin Kategorizasyonu’dur.

Son zamanlarda Metin Kategorizasyonu, çok çeşitli uygulama alanları bulmuştur. Bu uygulama alanları;

  • Metin bulup getirme ve kütüphane organizasyonu gibi alanlarda destek sağlayan, “dokümanlara kategori ataması yapmak”,
  • Bu kategorileri insanların atadığı uygulamalarda “kategori atamasında yardımcı rol oynamak”,
  • Mesajları, haberleri ve diğer “metin akımı (stream) halindeki bilgileri alıcılara ulaştırmak”,
  • Doğal dil işleme sistemlerinin bir parçası olarak; “ilgisiz metinleri ve metin parçalarını filtrelemek”, “metinleri, kategori bazlı işleme mekanizmalarına yönlendirmek” veya “sınırlı şekillerde bilgi edinimini sağlamak”, “sözcük analizi işlerinde yardımcı olmak (sözcük belirsizliğini giderme gibi)” vb.
Metin kategorizasyonu yaparken iki temel adım vardır. İlki, performansın değerlendirileceği kategorizasyon algoritmasını seçmek; ikincisi ise, algoritmanın üzerinde uygulanacağı örnek veri kümesini seçmek.

Otomatik kategorizasyon yapabilmek için öncelikle sistemimizi eğitmemiz gerekmektedir. Bunun için sistemimize kategorisi belli olan dökümanlar eklemeliyiz.(Eğitim Dökümanları) Sistemimiz bu eklediğimiz dökümanlardan eğitilecek ve daha sonra sınıflandırması gereken bir döküman geldiğinde eğitim dökümanları ile kıyaslamalar yaparak kategoriye karar verecektir.

Araştırmacılar, eğitim dokümanları kümesinin yeterince bilgi içermesi gerektiğini, ancak bunun yanında zaman performansını sağlamak adına büyük miktarda veri içermemesi gerektiğini ortaya koymuşlardır. Zaman performansını sağlayıcı nitelikte eğitim dokümanı bulundurmak, büyük veriler için kategorizasyon problemlerini çözmede önemli olmaktadır.

Türkçe gibi bitişken (bükümlü) dillerde ise kelimeler, en küçük anlamlı parçasının sınırlarına dair bir belirti göstermez, üstelik bu parçalar, morfolojik ve fonolojik şartlara bağlı olarak şekil alırlar. Türkçe’de bir kelimenin son ekine bir tane daha ekleyerek, nispeten uzun kelimeler elde edilebilir, üstelik, sadece bir tek Türkçe kelimeden çok miktarda değişik anlamlı kelimeler oluşturulabilir. Bu karmaşık morfolojik yapı yüzünden, Türkçe; İngilizce’den ve benzeri dillerden daha farklı metin işleme teknikleri gerektirir. Bu nedenle, bütün kelimelerin küçük harfe çevrilmesi ve noktalama işaretlerinin kaldırılması dışında; joker kelimeler ile anahtar kelimelerin oluşturulması gibi bazı ön hazırlıklar yapılması gerekmektedir.

Metin sınıflandırma işlemi için ilk yapılması gereken sınıflandırmak istediğimiz dokümanı ve eğitim dokümanlarımızı vektörel olarak uzayda ifade edebilmektir. Uzayımızın eksenlerini aslında bizim kategori belirttiğini düşündüğümüz kelimeler oluşturacaktır. Dokümanlarımızı vektör olarak temsil edebilmek için metnin içerisinde geçen kelimelerin bir takım ön işlemlere sokulması gereklidir. Bu dökümanlar ile arka planda sözlüğümüzün boyutu ile sınırlandırılmış vektörler oluşturulup, kategorisi bulunması istenen dokümanın vektörü ile çeşitli algoritmalarla (K-NN, Naive Bayes) karşılaştırılarak sınıflandırılmak istenen doküman ilgili kategoriye atanır.

Ön İşleme Genel Adımları
Metinler doğal yazılışları ile bir kelime vektörü olarak ifade edilmemişlerdir. Bu bakımdan bir çok zorluk bulunmaktadır. Örneğin dokümanlarda bir çok kelime bulunmakta; bir çok doküman bulunmakta; dokümanlarda çok çeşitlilikte bilgi yer almakta; insanlar tarafından yazıldığı için bir çok hata içermekte; noktalama işaretleri, kısaltmalar bulunmaktadır. Bu yüzden ön işleme adımı etkili bir sınıflandırma için kaçınılmaz bir adımdır. Genel adımlar aşağıdaki gibidir:

1- Kategoriler belirlenir. Bu kategoriler ile ilişkilendirilebilecek olan kelimeler sözlüğe eklenir (Örneğin Spor, Ekonomi, Politika ve Sağlık kategorilerini kullanacağız).

Aklımıza gelen yukarıdaki kategoriler ile ilişkili olan tüm kelimeleri Sql’de kelimeler tablosunda tutabiliriz. Örneğin Spor kategorisi için “futbol”, “gol”, “hakem”, “maç” vb.

2- Sözlükteki her kelime teker teker incelenir. Joker olarak kullanılabilecek olan kelimeler bulunup sözlük güncellenir. (“Joker yöntemine aşağıda ayrıntılı olarak değineceğiz”)

Örnek:

Gözlükler
Gözlükte
Gözlüğü
Gözlü* (“Gözlü” ifadesinden sonra ne gelirse gelsin kabul et, “Gözlük” kelimesi olarak değerlendir).

3- Her bir doküman, sözlükte oluşan tüm bu kelimelerin, (joker kelimeler de dahil) boyutundaki vektörün ağırlıklandırılması ile gösterilir.

Joker Yöntemi

Sistemde metinlerdeki kelimelerin kendileri yerine gövdelerinin kullanıldığı daha önceden belirtilmişti. Bunun sebebi Türkçe gibi eklemeli dillerde bir gövdenin sonuna birçok farklı ek alarak farklı biçimlerde karşımıza çıkabilmesidir. Örneğin “araba” kelimesi ile “arabadan”, “arabayı”, “arabada”, ve “arabanın” kelimeleri eğer ayrıştırıcı olmasa ayrı ayrı kelimeler olarak görüleceklerdi. Bunun sonucu olarak hem oluşturulan sözlük boyutu çok artacak hemde sınıflandırma başarısı düşecekti.

Joker kelime, aynı söz dizimi ile başlayan ve çeşitli ekler almış ancak yakın anlamda olan sözcükleri tek bir gösterimle grup altında toplayan kelimelerdir. Joker kelime gövdeleme yöntemine benzemektedir. Gövdelemede çekim ve yapım eklerinden ayrıştırılan kelimeler, ortak bir köke indirgenir. Ancak burada köke indirgeme şartı yoktur. Kökün yanında ek de kalabilir. Joker kelimeler kategoriyi belirlememize yardımcı anahtar kelimelerden veya sık kullanılan kelimelerden seçilir.

Joker yöntemi kelimlerin ilişkili terimlerinin anlamlarını kapsaması açısından değiştirilmesidir. Örneğin jokerli bir kelime olarak “deprem*” ile (Joker olduğunu * işaretinden anlıyoruz), “deprem” kelimesinden sonra nasıl bir ek gelirse gelsin deprem kelimesi vurgulanmış olacaktır.

Örnek: simitçi ve simitçiler

Dokümanımızda “simitçi” ve “simitçiler” kelimelerinin geçtiğini düşünürsek her iki kelimeyi ayrı ayrı sözlükte tanımlamak sözlük boyutunu arttırarak performansımızı düşürecektir. Bu yüzden bu kelimeler anlamı karşılayacak bir gövdeye indirgenebilir. Yani sözlüğümüzde “simitçi*” kullanıp doküman içerisinde başı “simit” ile başlayan tüm kelimeleri “simitçi*” olarak değerlendirebiliriz.

Türkçe kelimeler genellikle sert sessiz harf ile biter. Sert sessizlerin yumuşaması olabileceğinden, bu tür kelimelerde hem kelimenin sert sessizli hem de yumuşak sessizli hali joker olarak seçilir (ilaç*,ilac*). Böyle bir durumda “ila*” joker olarak seçilmemeli (“ilahiyat” gibi ilgisiz kelimeleri de içerebilir diye), ancak böyle ilgisiz kelime oluşma olasılığı yoksa o zaman her iki kelimeyi de (sert, yumuşak) içeren joker seçilebilir.

(Ör:kitap* ve kitab* yerine kita*)

Not: Sert sessizler: Ç,F,T,H,S,K,P,Ş

Son hecesinde “ı” veya “i” içeren kelimelere, sesli ile başlayan bir ek geldiğinde bu “ı” ve “i” düşer. Bu durumdaki kelimeler için ya kelimenin her iki hali de, ya da en çok görülen hali joker olarak seçilir.

Yapım ekleri kelimenin anlamını değiştiren ve çekim ekleri değiştirmeyen ekler olduğundan; joker seçiminde yapım ekleri bize zorluk çıkarır. Gövdelemede ise işlem basittir, sadece köke indirgeme yapılır. Ancak joker yönteminde, yapım eki eklenerek anlamı değiştirilmiş kelimeler, farklı kategorilerde olabileceğinden bunları ayrı ayrı göstermek gerekir.

Evlen*, evcil*

“Ev*” seçemeyiz. Çünkü “evren”, “evrim” gibi alakasız kelimeleri içerebilir.

Çekim ekleri olan sözcükler bizim için kolaydır. Çünkü bu ekler, eklendikleri kelimenin anlamını değiştirmezler (borsada,borsalar,... -> borsa* seçilebilir).

Ancak bazen, jokerlerin alakasız kelimeleri içerebileceği durumlarda, çekim eki hallerini tek tek alamayız (kampı,kampında,....->kamp* yapamayız. Çünkü “kampanya” kelimesini içerebilir).

Zaman ekleri de bir çeşit çekim ekidir. Bu nedenle yalnızca kelimenin kökünü joker almak bazı durumlarda yeterli olmuyorken; bazen de –yor ekinde olduğu gibi (Örnek:isti-yor) kelimenin kökü deforme olabilir (iste* seçilemez).

Bu zaman kadar anlatılanları özetlemek gerekirse;

1- Hangi kategorileri kullanacağımıza karar veriyoruz.

2- Bu kategoriler ile ilişkili olabilecek kelimeleri tablomuza ekliyoruz.


3- Tüm kelimeleri teker teker inceleyip jokerleri varsa ayrı bir tabloda her kelimenin jokerlerini tutuyoruz.



4- Her bir döküman (Eğitim dökümanlarını ve sınıflandırmak istediğimiz dökümanı) vektörlerini ağırlıklandırıyoruz.

Vektörün Ağırlıklandırılması

Bu aşamada artık sınıflandırmak istediğimiz dökümanımızı vektör formuna sokmalıyız. Bunun için aşağıdaki adımlar uygulanmalıdır:

1- Etkili bir ön işleme yapabilmek için haber metinlerinden noktalama işaretlerini çıkarmak önemli bir ihtiyaçtır. Ayrıca aşağıdaki gibi tüm büyük harfler küçük harfe çevirilir.

Taraftarlar İstanbul’da bırakıldı.
Sonuç: taraftarlar istanbul bırakıldı

Örnek: trafik kazası: 1 ölü...

Sonuç: trafik kazası 1 ölü



2- Noktalama işaretleri çıkarılmış dokümanda geçen tüm kelimeler bir diziye atılır.

Dizi: (Taraftarlar,İstanbul,bırakıldı)

3- Dizideki elemanlar sözlükteki elemanlar ile ve jokerleri ile karşılaştırılır. Bu şekilde vektörün elemanlarının ağırlıkları belirlenir. Örneğin sözlüğümüzün aşağıdaki kelimelerden oluştuğunu var sayarsak;

taraftar*
İstanbul*
Gol*
Futbolcu*

Vektörümüz: (1,1,0,0) şeklinde oluşur. Gerek eğitim dokümanlarının ağırlıklandırılmasında gerekse sınıflandırılacak dokümanlarım ağırlıklandırılmasında, vektörlerinin oluşturulmasında bu yöntem uygulanır. Ancak ağırlıklandırma yöntemi değişebilir. Bu makale dizisinde 3 farklı ağırlıklandırma yöntemine değineceğiz. (bit, frekans, tf-idf).

Bit yönteminde kelimenin sözlükte olup olmaması dikkate alınır. Frekans yönteminde ise kelimenin döküman içerisinde kaç kere tekrar ettiği bilgisi de önem kazanır. Tf-idf yöntemine ise daha sonraki makalelerde ayrıntılı olarak değineceğiz.

Örnek:

Programlama mantığının anlaşılması bakımından küçük bir sözlük kullanarak bir örnek verelim. Normal bir uygulamada sözlük boyutunun küçük olması başarısız sonuçlara neden olacaktır.

Kelimeler(Sözlük) Jokerleri

enflasyon*
grip* ---------------------> grib*,
hakem*
İlaç* ----------------------> ilac*,
taraftar*
tarım*

Örnek eğitim dokümanları aşağıdaki gibi olduğunu var sayalım;

  1. Gribe yakalanan hasta grip olduğunu anlamamıştı. İlacını almamıştı. (Sağlık)
  2. İlacını aksatanlar hastalığa davetiye çıkarırlar. (Sağlık)
  3. Yıllık enflasyon oranı bu senede yükselişte. (Ekonomi)
  4. Tarımla uğraşanlar bu yıl tarımdan zarar edecekler. (Ekonomi)
  5. Hakemin gözü önünde olmasına rağmen hakem penaltı çalmadı. (Spor)
  6. Taraftarlara erken gelen gol ilaç gibi geldi ve taraftarlar golden sonra hiç susmadı. (Spor)
Vektörler oluşturulurken sözlükteki kelimeler sırası ile dokümanlarda aranacak, aynı zamanda kelimenin jokeri de varsa jokeri de aranacaktır. Yani “grip*” kelimesi ile birlikte “grib*” kelimesi de dokümanda aranmalıdır. Bulunan kelime sayısı boyuta eklenmelidir.

Kategorisini bulmak istediğimiz metin aşağıdaki gibi olursa:

SORGU-Taraftarlar hakeme tepki gösterdiler. Hakem sahayı terk etti.

Sözlük={ enflasyon*, grip* , hakem*,İlaç*, taraftar*,tarım*}

Eğer vektörlerimizi kelime frekansına göre ifade edecek olursak;



D1=(0,2,0,1,0,0)

D2=(0,0,0,1,0,0)

D3=(1,0,0,0,0,0)

D4=(0,0,0,0,0,2)

D5=(0,0,2,0,0,0)

D6=(0,0,0,1,2,0)

DQ=(0,0,2,0,1,0)

Eğer vektörlerimizi bitsel olarak ifade etmek istersek;

D1=(0,1,0,1,0,0)

D2=(0,0,0,1,0,0)

D3=(1,0,0,0,0,0)

D4=(0,0,0,0,0,1)

D5=(0,0,1,0,0,0)

D6=(0,0,0,1,1,0)

DQ=(0,0,1,0,1,0)

Bu şekilde dökümanlarımızı vektör olarak ifade etmiş olduk. Bu aşamadan sonra artık algortimalardan faydalanarak otomatik kategorizasyon işlemini gerçekleştirebiliriz.

Umarım açıklayıcı olabilmişimdir. Bir sonraki makalemde KNN ve Naive Bayes algoritmalarına giriş yapacağız. Herkese iyi çalışmalar dilerim.

Faydalanılan Kaynaklar:

1- İlhan, U., (2001), “Application Of KNN and FPTC Based Text Categorization Algorithms to Turkish News Reports”, “Bilkent University”.

2- Amasyalı, F., Yıldırım, T., (2004), “Otomatik Haber Metinleri Sınıflandırma”, Yıldız Teknik Üniversitesi.

Makale:
Metin Madenciliği ile Metin Sınıflandırma - 2 Yazılım Mühendisliği İsmail Pilavcılar
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor