Çarşamba, Şubat 27

Histogram Eşitleme

Histogram eşitleme elimizde bulunan mevcut bir imge için en uygun histogramın çıkarılmasıdır. Elimizde histogram dizisinin olduğunu varsayalım, bu dizi normal bir imge için dağınık bir yapıda değildir. Yani dizi içerisinde resmin koyuluğuna gore belli alanlarda yığılma vs olabilirOrijinal görüntüdeki gri değerler birbirine çok yakındır. Bu görüntünün yoğunluk fonksiyonu uniform değildir. Bunun anlamı gri değerlerin olasılıkları eşit değildir. İdeal bir görüntüdeki yoğunluk fonksiyonu düzgün dağılımlı olmalıdır. Eğer orijinal histogram üniform histograma çevrilirse yeni görüntü ideale çok yakın olur. Bu dönüşüme histogram eşitleme (histogram equilization) denir. Eğer orijinal görüntü histogramı bir başka histograma kendi dağılım fonksiyonunu dönüşüm fonksiyonu olarak dönüştürürse sonuç görüntünün histogramı eşitlenir.
görüntü işlemede eldeki bir resmin histogramında belli bir gri seviyede yoğunlaşmış dağılımı tüm gri seviye aralığına yaymaktır.eğer eldeki resmin gri seviye(bkz: gray level) dağılımı belli değerlerde yoğunlaşmışsa,işlem sonrası görüntüde iyileştirme, daha önce belli olmayan ayrıntıların belirginleşmesi sağlanabilir ama eğer eldeki resimde gri seviyesinin piksel sayısına göre dağılımı zaten geniş bir aralıktaysa bu işlem pek bir işe yaramaz, o durumda eldeki resmin histogramını kendi belirlediğimiz bir histograma eşlemek gerekirHistogram eşitlemede de amacımız bu yığılmaları en uygun şekilde dağıtmaktır.

Histogram Eşitleme Algoritması
• Öncelikle elimizdeki imgenin histogramını çıkarırız.
• Bundan sonra da grilik seviyelerinin imge içerisinde bulunma olasılıklarını tutan bir dizi yapmamız gerekir .Bunun yapılması icin; maximum girilik seviyesine kadar istenilen seviyenin toplam bulunma sayıları histogram dizisinden alınır ve toplanır ... Ornek: 69 grilik seviyesi için 0'dan 69 a kadar olan seviyelerin sayıları histogramdan çekilir ve toplanır. Bu değer olasılık dizisi içerisinde saklanır.
• Bu toplama işlemleri sonucunda oluşan olasılık dizisi imge boyutlarının çarpımına bölünür (bulunma olasılık işlemi)
• Sonucta yeni resim oluşturulurken mevcut imge üzerindeki herhangi bir grilik seviyesi için olasılık dizisinden gerekli değer çekilir ve 255 çarpılıp yeni resimde işlenir. Örnek: eski resimde A(5,5) 'te 69 grilik seviyesi ile karşılaştık , yeni resimde 5,5 konumuna olasılık dizisinden 69 için hesaplanmış değerin 255 ile çarpımını koyacağız










Program Kodu
#include
#include
#include
#include
typedef struct pgm {
char str[3];
int width;
int height;
int max;
int *data[700]; } pgm;

void pgm_read(char* filename, pgm* pgmfile)
{
FILE* fp;
char str[3],comment[100],chr;
long i,k;
int j;

fp=fopen(filename,"r");
if (!fp) {
printf("Cannot open the file..%s...\n",filename);
exit(1);
}

fscanf(fp,"%s",str); //dosyanin türü, P5 (data binary) ya da P2(data ascii)
strcpy(pgmfile->str,str);
printf("%s\n",pgmfile->str);
fscanf(fp,"%s",comment);

if (comment[0] == '#') { //comment var demektir,satir okunur,
fgets(comment,100,fp); //daha sonra width,height ve max okunur.
fscanf(fp,"%d",&pgmfile->width);
fscanf(fp,"%d",&pgmfile->height);
fscanf(fp,"%d",&pgmfile->max);
printf("%s\n",comment);
}
else { // comment olmayabilir o zaman okunan width degeri olur.
sscanf(comment,"%d",&pgmfile->width); //height ve max degerleri okunur.
fscanf(fp,"%d",&pgmfile->height);
fscanf(fp,"%d",&pgmfile->max);
};

printf("%d\n",pgmfile->width);
printf("%d\n",pgmfile->height);
printf("%d\n",pgmfile->max);

for (i=0;iheight;i++)
pgmfile->data[i]=(int*) malloc (sizeof(int) * pgmfile->width);




if (strcmp(str,"P2") == 0) {
for (i=0;iheight; i++)
for (k=0; kwidth;k++) {
fscanf(fp,"%d",&j);
pgmfile->data[i][k]=j;
};
};
if (strcmp(str,"P5") == 0) {
for (i=0;iheight; i++)
for (k=0;kwidth;k++){
chr=fgetc(fp);
pgmfile->data[i][k]=chr;
};
};
fclose(fp);
}


void pgm_write(char* filename,pgm* pgmfile)
{
FILE* fp;
long i,j;
unsigned char chr;

fp=fopen(filename,"w");

fprintf(fp,"%s\n",pgmfile->str);
fprintf(fp,"%d\n",pgmfile->width);
fprintf(fp,"%d\n",pgmfile->height);
fprintf(fp,"%d\n",pgmfile->max); //degerler yazilir

if (strcmp(pgmfile->str,"P2") == 0) {
for (i=0;iheight;i++)
for (j=0;jwidth;j++)
fprintf(fp,"%d ",pgmfile->data[i][j]);
};
if (strcmp(pgmfile->str,"P5") == 0) {
for (i=0;iheight;i++)
for (j=0;jwidth;j++) {
chr=pgmfile->data[i][j];
fprintf(fp,"%c",chr);
};
}; //data yazilir
fclose(fp);
}
int main(int argc,char* argv[])
{
pgm PGM;
pgm_read(argv[1],&PGM);



double s_hist_eq[256]={0.0}, sum_of_hist[256]={0.0};
long i, j, n, histogram[256]={0};
int k,m;

n = PGM.width * PGM.height;

for (i=0;i<256;i++) // pdf of image
{
for (j=0;j<256;j++)
{
m=PGM.data[i][j];
histogram[m]++;
}

}
for (i=0;i<256;i++)
{
s_hist_eq[i] = (double)histogram[i]/(double)n;
}



sum_of_hist[0] = s_hist_eq[0];
for (i=1;i<256;i++) // cdf of image
{
sum_of_hist[i] = sum_of_hist[i-1] + s_hist_eq[i];
}

for(i=0;i {
for(j=0;j {
k = PGM.data[i][j];
PGM.data[i][j] = (int)rint( sum_of_hist[k] * 255.0 );
}
}
pgm_write(argv[2],&PGM);

}

1.Problem tanımı: Bulanık Mantıkla Çalışan Çamaşır Makinası

1)Üyelik fonksiyonlarının geliştirilmesi: Çamaşır makinası kullanıcıdan 1-10 arası değerler alır.Bu da iki linguistik değişkene denk düşer, "kirlilik derecesi" ve "çamaşır ağırlığı". Her birininde 3 linguistic değeri vardır.
Kirlilik derecesi(Dd) = {Az kirli, Orta kirli, Çok kirli}= ve
Aırlık (Dt) = {hafif, Orta, Ağır}= . Çamaşır makinesinden beklenen linguistic değişken ise "yıkama derecesi" 0 ve 60 dakika arasında değişir. Çıkış için ise; Wd = {Çok Kısa, Kısa, orta, uzun, Çok uzun} = .
2.Kural tabanının geliştirilmesi:3’er adet üyelik fonksiyonuna sahip iki girişimiz mevcut bu yüzden 3x3 = 9 kural çıkarabiliriz ;

1-)If degree of dirtiness High and weight is Heavy, then duration of wash cycle is Very long;
2-)If degree of dirtiness Medium and weight is Heavy, then duration of wash cycle is Long;
3-)If degree of dirtiness Low and weight is Heavy, then duration of wash cycle is Long;
4-)If degree of dirtiness High and weight is Medium, then duration of wash cycle is Long;
5-)If degree of dirtiness Medium and weight is Medium, then duration of wash cycle is Medium;
6-)If degree of dirtiness Low and weight is Medium, then duration of wash cycle is Medium;
7-)If degree of dirtiness High and weight is not heavy, then duration of wash cycle is Medium;
8-)If degree of dirtiness Medium and weight is not heavy, then duration of wash cycle is Short;
9-)If degree of dirtiness Low and weight is not heavy, then duration of wash cycle is Very short

Yukarıdaki tanımların hiçbiri bir kuralı tetiklemez, bağımsız çalışır.







3. Uzman Sistem Algoritması
Pseudocode:
1. Kullanıcıdan 1-10 arası bir giriş değeri alınır
2. Girişleri bulanıklaştırarak ,tüm girişler için üyelik fonksiyonuna göre değerler belirlenir.
3. Gerçek değerlerin çıkarımını yapmak için giriş değerlerinin üyelik fonksiyonları uygulanır.
4. Minimum çıkarım yöntemiyle yeni çıkış üyelik fonksiyonları oluşturulur.Yeni üyelik değerleri orijinal üyelik fonksiyonları ile modifiye edilmiş çıkış üyelik fonksiyonlarını elde etmek için kıyaslanır.
5. Maks. kompozisyon metoduyla yeni üyelik fonksiyonları tekil bir üyelik fonksiyonu çıkarmak üzere birleştirilir.Bu yeni oluşturulmuş üyelik fonksiyonları “Bulanık OR” ile birleştirilir.Her çıkış için muhtemel üyelik değeri belirlenir.
6. “Centroid yöntemi” ile skalar bir değer(yıkama süresi) almak üzere durulama işlemi gerçekleştirilir.

1. Üyelik Fonksiyonlarının tanımlanması:
Kirlilik derecesi(Dd) = {Az kirli, Orta kirli, Çok kirli}=
Ağırlık (Dt) = {Hafif, Orta Ağır, Ağır}=
Yıkama süresi (Wd) = {Çok kısa, kısa, orta, uzun, Çok uzun}=






2.Giriş çıkış üyelik fonksiyonları için fonsiyon tanımlamaları[4]








Şekil 1-Giriş ,ağırlık ve kirlilik derecesi

Şekil 2- Çıkış - Yıkama Süresi




3.Rastgele seçilmiş girişler için uzman sistemin çalışması

• Dd = 8 ve Dt = 4.
• Bulanıklaştırma

• 9 kural için doğruluk değerleri çıkartılır,girişler için çıkarımlar;
Kural 1: Eğer kirlilik derecesi: Çok Kirli ve ağırlık: Ağır,o zaman yıkama süresi uzun
Kural 2:
Kural 3:
Kural 4:
Kural 5:
Kural 6:
Kural 7:
Kural 8:
Kural 9:
• Yeni üyelik değerleri orijinal üyelik fonksiyonları ile kıyaslanıp çıkarım yapılır.










• Durulama centroid yöntemi yardımıyla gerçekleştirilmiştir.
Yıkama süresi= = 34 dakika

Kaynak Kod



clear all;
close all;
clc;

% Giriş
Dirtlevel=input(‘kirlilik derecesi=(1-10)');
Weight=input('agirlik=(1-10)');

% ilk deger atama
Dd = round(Dirtlevel)+1;
Td = round(Weight)+1;
rangeout = 0:1:60;
rangein = 0:1:10;

% uyelik fonk. tanimi
% Giris uyelik matrisi
Min = [1 0.8 0.6 0.4 0.2 0 0 0 0 0 0; 0 0.2 0.4 0.6 0.8 1 0.8 0.6 0.4 0.2 0;...
0 0 0 0 0 0 0.2 0.4 0.6 0.8 1];

% Cikis uyelik matrisi
Mout = zeros(5,61);
for i=1:1:16
x = 0:1:15;
Mout(1,i)=(-x(i)/15)+1;
y = 45:1:60;
Mout(5,i+45)=(y(i)/15)-3;
end
Mout(2,1:16)=Mout(5,46:61);
Mout(2,16:31)=Mout(1,1:16);
Mout(3,16:31)=Mout(5,46:61);
Mout(3,31:46)=Mout(1,1:16);
Mout(4,31:46)=Mout(5,46:61);
Mout(4,46:61)=Mout(1,1:16);

hold on;
plot(rangein,Min(1,:)');
plot(rangein,Min(2,:)','r:');
plot(rangein,Min(3,:)','g--');
hold off;
title('giris kirlilik derecesi uyelik fonksiyonlari'
legend('Az kirli','Orta kirli','Çok kirli');
xlabel('kirlilik derecesi');
figure;
hold on;
plot(rangein,Min(1,:)');
plot(rangein,Min(2,:)','r:');
plot(rangein,Min(3,:)','g--');
hold off;
title('giris agirlik uyelik fonksiyonlari');
legend(' Hafif,'Orta','Agır');
xlabel('Agirlik');
figure;
hold on;
plot(rangeout,Mout(1,:)');
plot(rangeout,Mout(2,:)','r:');
plot(rangeout,Mout(3,:)','g--');
plot(rangeout,Mout(4,:)','cd');
plot(rangeout,Mout(5,:)','m.-');
hold off;
title('yikama süresi cikis uyelik fonksiyonlari');
legend('Cok kisa','kisa','Orta ','Uzun','Çok Uzun');
xlabel('Yikama süresi');

% girisin bulaniklastirilmasi
Taz kirli = Min(1,Td);
Tmed = Min(2,Td);
Thi = Min(3,Td);
Daz kirli = Min(1,Dd);
Dmed = Min(2,Dd);
Dhi = Min(3,Dd);

% Kural tabani olusturulmasi

WTvl = min(Thi,Dhi);
WTl = min(Thi,Dmed);
WTl1 = min(Thi,Daz kirli);
WTl2 = min(Tmed,Dhi);
WTm = min(Tmed,Dmed);
WTm1 = min(Tmed,Daz kirli);
WTm2 = min(Taz kirli,Dhi);
WTs = min(Taz kirli,Dmed);
WTvs = min(Taz kirli,Daz kirli);

% MIN cikarim
Mrule(1,:) = min(Mout(1,:), WTvs);
Mrule(2,:) = min(Mout(2,:), WTs);
Mrule(3,:) = min(Mout(3,:), WTm);
Mrule(4,:) = min(Mout(3,:), WTm1);
Mrule(5,:) = min(Mout(3,:), WTm2);
Mrule(6,:) = min(Mout(4,:), WTl);
Mrule(7,:) = min(Mout(4,:), WTl1);
Mrule(8,:) = min(Mout(4,:), WTl2);
Mrule(9,:) = min(Mout(5,:), WTvl);

figure;
hold on;
plot(rangeout,Mrule');
title('Cikarimdan sonar yeni uyelik fonksiyonlari');
xlabel('Yikama süresi');
hold off;

% MAX cikarim
Mmax = max(Mrule);
figure;
plot(rangeout, Mmax)
title('Final cikis uyelik fonksiyonu');
xlabel('Yikama süresi');

% Durulama Agirlik merkezi yontemi
y=sum(Mmax.*rangeout)/sum(Mmax);

disp('Yikama süresi= ');
wash_time = y

Çıkış örnekleri

Kirlilik derecesi ağırlık Yıkama süresi
2 2 19
2 6 34
8 4 34
9 9 45

Referanslar
[1] – Siler, W; Buckley, J. J., Fuzzy expert systems and fuzzy reasoning, John Wiley & Sons, Inc., ISBN 0-471-38859-9, 2005.

[2] - Kantrowitz, M., Horstkotte, E., Joslyn, J.,"FAQ: Fuzzy Logic and Fuzzy Expert Systems 1/1", http://www.faqs.org/faqs/fuzzy-logic/part1, March 1997

[3] - Looney, C. G., "Fuzzy Rules and Approximate Reasoning.", http://ultima.cse.unr.edu/cs791j/unit2791j.htm, January 2004

[4] - Gehrke, M; Walker, Cl; Walker, E., "A mathematical setting for fuzzy logics. ",
Internat. J. Uncertain. Fuzziness Knowledge-Based Systems 5 (1997), no. 3, 223--238.

[5] – Zhang, W (Aptronix Inc.), "Controller for washing machine", http://www.aptronix.com/fuzzynet/fiusource/wash.htm, July 1992

Özet
Aradığımız bir bilgiye ulaşmak için, bilginin bulunabileceği dökumanlar, veri tabanları, tablolar, e-postalar, web sayfaları gibi ortamlari tarayıp aradığımız bilgiyi bu ortamlar dahilinde bulunan verilerden bilgi çıkarımıyla süzmemiz gerekir.
Yıllar geçtikçe bilgi çıkarımına olan ihtiyaç fazlasıyla artmıştır. Bunun bir sebebi ilişkili veya yakın bilgilere, bunların araştırılması ve çıkarılması zaman aldığından dolayı önem verilmemesidir. Kütüphaneler veri depolama ve bilgi çıkarma işlemlerine ihtiyaç duyar, yıllar boyu kataloglama ve veri yönetimi gibi günlük işler bilgisayarlar tarafından gerçekleştirilmiştir. Fakat etkili veri çıkarma sorunu hicbir zaman cozulmemistir.İnsanlığın yazılı kaynaklarının internet ortamına aktarılmasının tamamlanmasından sonra bu ihtiyaç daha da belirginleşecektir.
Internet’in gelişmesi ,modern grafik arayüzlerinin ilerlemesi ve yüksek kapasiteli bilgi depolama cihazlarının geliştirilmesi ve ucuzlaması sonucu, Internet’i tek bir veritabanı olarak görüp, içindeki bilgiyi yapılandırılmış olarak elde etmeyi amaçlayan çalışmalar gün geçtikçe artmaktadır. Bu raporda bu tür çalışmalardan bazıları ve kullandıkları metotlar anlatılmıştır.
1.Giriş
En büyük bilgi kaynağı olarak görülen Internet’teki bilgiye ulaşmanın önündeki en büyük engel içindeki bilgilerin %90’ının doğal dillerden meydana getirilmiş olmasıdır.Bilgisayarların doğal dili henüz yeterli bir şekilde anlayamıyor olmalarından dolayı sayfalardaki bilgileri bulup çıkarmak yine insanlara düşmektedir. Ancak incelenecek belgelerin çok fazla olması durumunda bu işlemin çok zaman alacağı da bir gerçektir. İşte bilgi çıkarım sistemleri bizim yerimize bu incelemeyi yapmakta ve bize sadece istediğimiz sonuçları döndürmektedirler.
Bilgi miktarı ve bilgi miktarının artış hızının sürekli artması nedeniyle bu kadar çok bilgiyi bulmak, işlemek, kullanmak için insanın çok fazla çaba sarf etmesi gerekir. İnsanın ihtiyacı olan bilgiyi büyük bilgi yığınlarının içinden bulup çıkarmak işlemini bilgisayarlara yaptırabilmek her geçen gün daha fazla istenmektedir. Bu sayede hesap makinelerinin insanın işlem gücüne yaptığı katkıyı, bu tür sistemlerde insanın bilgiye erişimine yapacaktır.
Bilgi çıkarma işlemi bilgisayarlar tarafindan gerçeklestirileceği icin otomatik bilgi çıkarma terimi kullanılmaktadır. Otomatik bilgi çıkarma işleminin stratejisi bütün ilgili dökümanlari ayni zamanda mümkün olduğunca alakasız dökümanlarla beraber çıkarmaktır. bir dökümanın karakteristiği üzerinde çalışıldığında, bir döküman bir sorgu ile alakalı ise döküman sorgu verildiğinde cevap verebilecek şekilde olmalıdır. bunu gerçekleştirebilmek için dökümanların karakteristiklerini belirlemede, dökümanlara anahtar kelimeler atama yolu seçilir.
Raporun bir sonraki bölümünde bilgi çıkarım sistemlerinin tanımı, kullanım alanları anlatılmış. Üçüncü bölümde bu tür sistemlerde kullanılan metotlardan ve doğal dil işleme araçlarının bu alanda nasıl kullanıldığından kısaca bahsedilmiştir. Dördüncü bölümde bu tür sistemlere çeşitli örnekler verilmiştir ve bilgi çıkarımını kullanarak geliştirilmiş güncel “AJAX “ teknolojisi tanıtılmıştır. Verilen örnek sistemlerde şablon eşleme, tekrar eden HTML tag’leri kullanılmıştır.
Son bölümde ise bilgi çıkarımının gelecekte ve günümüzde insanlığa faydası,katkısı ve açılımları irdelenmiştir.
2. Bilgi Çıkarımı Tanımı

Önceden belirlenmiş bir formata uygun bilgilerin büyük metin dosyaları arasından bulunup çıkartılmasıdır. Örneğin “iş ilanları içeren bir gazete sayfasında mühendis arayanların telefon numaralarını listelemek” gibi bir görevi insanların yerine makinelere yaptırmak çok daha mantıklıdır. Aşağıda verilmiş olan metinden verilmiş olan bilgilerin çıkarılması işlemi de yine bu tür sistemlere örmektir.

Subject:Application for Test Enginnering position
Date: 17 Nov 2005 17:37:29 GMT
Organization:Kariyer.Com Posting Service
Message-ID: <56nigp$mrs@bilbo.reference.com>
TEST ENGINEER
Dear Hiring Manager
I am a new graduate from Electronics and Communication Engineering at I.T.U. and just started Telecommunication Engineering master program. My goal is to work at telecommunication industry using my technical communication background, and improve my knowledge and skills on Telecommunication.
My internship at HSBC Telecommunication group, developed my interest in data networks, and I attended CCNA Course. While working at I.T.U. Distance Learning Center, I was involved IP Telephony system installation and studying my graduation project, I examined some VoIP protocols like H.323 and SIP, and developed XML based Cisco IP Telephony applications, which are being used in I.T.U. campus VoIP network.
I have a special interest in software, and have written many applications, some of them are for school projects and some of them are just for fun. During my internship in Turkcell, besides examining GSM Network, I developed a Web based reporting tool in ASP.NET, which reports maintenance and usage of Marmara region GSM Switching System.
Thank you for your consideration.
Sincerely,
Please reply to:
Saygın Topatan
(533)242 3406
saygin.topatan@gmail.com

id: 56nigp$mrs@bilbo.reference.com
title: TEST ENGINEER
education :I.T.U. Electronics and Communication Engineering, Telecommunication Engineering master
city:İstanbul
language: C,ASP.NET,XML
platform:
Fields of Knowledge: H.323,SIP,VoIP,XML,IP Telephony,GSM
Job Experience:Turkcell,Dıstance Learning Center
Post date: 17 Nov 2005
Bilgi çıkarımında doğal dil işlemleri yöntemleri kullanılır. Bu konuda birçok arama robotu ve ticari site de mevcuttur.
Bilgi Çıkarım Sistemlerinin arkasındaki temel fikir tüm Internet’i tek bir veritabanı olarak görüp ona sorgular gönderip, ondan istediğimiz yapıdaki bilgilerin çekilebilir olmasıdır. Örneğin gen bilimi ve aile ağaçları konusunda birbirleriyle iletişim kurabilen ve soyadı,doğum yeri,ırk,zaman dilimi gibi konularda çıkarımlar yapabilen bir bilgi sistemi secere ve soyağaçlarının kesişmesi ve birleştirilmesi konusunda soybilimcilere faydalı olacaktır.Alışveriş yapmamıza yardımcı olan birçok siteden topladığı bilgileri bize sunan alışveriş robotlar,sigorta bilgilerini toplayarak bize en uygun poliçe koşullarını döndüren robotlar şu an kullanımdadır.

Temel olarak bilgi saklama ve çıkarma cok basittir. Dökümanlardan oluşan bir depo olduğu düşünülürse, bir insan bir soruyu, isteklerini karşılayacak dökümanlar kümesini cevap olarak verecek sorguya dönüstürür.Elde ettiği dökümanları teker teker okur, ihtiyaçlarını karşılayan- aradığı bilgileri veren – dökümanları bir kenara ayırır. Diğerlerini hesaba katmaz ve dökümanlar deposuna geri koyar. mantık olarak yapilan bu işlem mükemmel bilgi çıkarımıdır. Fakat bu yöntem pratik olarak mümkün olmamaktadır. Aranan bilginin elde edilmesi için okunulmasi gereken döküman sayısı çok fazla olabilir. Kullanıcının bu kadar zamanı olmayabilir. Ayrıca kullanıcınin bu dökümanlara fiziksel olarak erişmeside mümkün olmayabilir. İndeksleme işlemini gerçekleştirenler, kullanıcının aradığı dökümana ulaşabilmesi için anahtar kelimelerin dökümanlarin içeriklerini temsil edecek şekilde seçerler. Bu şekilde dökümanın yakın olabileceği sorgular oluşturulmaktadır. Anahtarlama işlemi gerçekleştirildiğinde aynı şekilde bir dökümanın metni veya sorgu girildiğinde, çıkış, içeriğin sunumu olmaktadır.Mantıksal olarak bir insanin bir sorguda olan ilişkileri atamasi mümkündur. Bilgisayar icin ise ilişkisellik kararının verilmesi için bir model geliştirilmesi gerekmektedir. Bilgi çıkarma alanındaki birçok araştırma, farklı modellerin başka bakiş açısıyla arastırılması- düşünülmesi ile ortaya çıkmıstır. Bilgi çıkarımının başarısını ölçen iki terim bulunmaktadır. Bunlar verimlilik ve etkinliktir. Verimlilik, genellikle bilgisayarın harcadığı çekirdek, yardımcı bellek ve cpu zamanı gibi bilgisayar kaynaklariyla ölçülür. Makine bağımsız bir yolla verimliliğin ölçülmesi zordur. Aksi taktirde etkili olma durumuyla beraber ölçülmelidir. Etkililik ise doğruluk ve geri çağırım degerleri ile ölçülür. Doğruluk, çıkarılan ilgili dökümanlarin çıkarılan bütün dökümanlara oranı, geri çağırım ise çıkarılan ilgili dökümanlarin bütün ilgili dökümanlara (çıkarılan ve çıkarılamayan) oranıdır.
Bilgi çıkarımı yaparken nelere dikkat etmemiz gerekenler;
· Kalite:”En iyi” sayfaları en öncelikli olarak getirmaliyiz.
· Verimllilik:Tekrar ve Benzerliklerden uzak durmalıyız
· Etik:Robots.txt,Sunucu yük kıstlamalarına saygılı olmalıyız.

3. Bilgi Çıkarım Yöntemleri
Bilgi çıkarımı yapılış ana yöntemi;
· Bilinen “çekirdek” sayfalarla başlanılır.
· Veri çekilir ve aşağıda anlatılan yöntemlerle yorumlanır.
· İşaret ettikleri URL’ler açılır ve kuyruğa sokulur.Bu URL’ler tek tek çekilir ve böyle tekrar edilir.
· Bu işlemler sırasında 1994 yılında kabul edilen robotların erişim anlaşma protokolüne uyarınca davranılır.(Http://www.robotstxt.org/wc/norobots.html )Bir Web Sitesi sunucusunda oluşturduğu bir URL/robots.txt metninde belirttiği kısıtlamalar dahilinde nelerin sorgulanamayacağı ve ulaşım kısıtlamalarını belirtmiştir.


Bilgi çıkarım yöntemlerinde temel amaç, sayfanın HTML kodunun şekline en uygun yöntemi kullanmaktır.
1.Yazım dilindeki şablonları kullanan yöntem: dilin kendi kelime kalıplarıyla anlamları arasındaki ilişkileri keşfedip bunların kullanılmasına dayanan bir yöntemdir. “X’ler Y’dir” ilişkisini ifade eden bir şablon olan “X ve diğer Y” ifadesi aranmış ve sonuçlar getirilmiştir.
2. Öğelerine ayrılmış metinleri kullanan yöntem: Cümleleri öğelerine ayırdıktan sonra özne-fiil, nesne-fiil gibi ilişkileri bulabiliriz.
3. Sayfalardaki tekrarlanan HTML kodlarınıkullanan yöntem: Bu yöntem sadece veritabanlarından üretilen sayfalardan bilgi edinilmesinde kullanılabilir. Örneğin bir alışveriş sitesinde ürünlerin resimleri, fiyatları, özellikleri her aynı formatta alt alta yer alır. Bu sayfalar veritabanından gelen sonuçların HTML formatına sokulmasıyla üretildiği için tekrarlanan HTML kodları içereceklerdir. Bu metodu kullanan alışveriş robotlarıyla ilgili bilgiler raporun devamında verilecektir.
4. Bilgi Çıkarım Uygulamaları

Bu bölümde farklı yöntemler izleyen 4 farklı uygulama anlatılacaktır.
4.1. QXtract Sistemi
Şekil 1’te şablon eşleme ile çalışan sistemlerin ana yapısı verilmiştir[2]. Örnek olarak “firma adı, merkezi” tarzındaki bilgileri çıkarmak istediğimizi düşünürsek, elimizdeki şablonlara uyan ifadeleri buluruz. Bu sistemde web sayfalarındaki cümlelerin kelime grupları da tanımlanmakta ve ona göre bilgi çıkarımı yapılmaktadır. Bu tür sistemlerde temel sorun elde edilen bilgilerin doğruluğudur. Sadece güvenilir web sayfalarını işlemenin bir yolu var mıdır? İşte QXtract bu soruya cevap vermektedir.
Giriş: Web sayfaları
Kelime Grupları Tanıma
Şablon Eşleme
Çıkış: İkililer
Şekil 1. Şablon Eşleme Sistemlerinin Genel Yapısı
Sadece güvenilir sayfalarda inceleme yapmanın adımları:
Ü Doğruluğu bilinen örnekler arama motoruna gönderilir.
Ü Sonuçlardan şablonlar çıkarılır.
Ü Bu şablonlar arama motoruna gönderilir, uyan sayfalardan bilgiler çıkarılır.
Ü Çıkarılan bilgilerin doğruluğu bir veritabanından kontrol edilir.
Ü Doğru ve yanlış bilgi çıkarılan web sayfaları işaretlenir.
Ü Bu sayfaların özellikleri çıkarılır.
Ü Bundan sonra şablonlarla birlikte doğru sayfaların özellikleri de aratılır.
Ü Bu sayede sadece güvenilir sayfalarda arama yapılmış olunur.
Ü ÖZETLE: Bulunan şablonlara ek olarak, güvenilir sayfaların özellikleri de bulunarak sorguya eklenir.
Yukarıda söz edilen sayfa özellikleri sayfaların içinde geçen kelimelerdir. Sistemin çalışması Şekil 5’te verilmiştir.

Şekil 2. QXtruct Yapısı

4.2. Open Domain Yaklaşımı
Her bir konunun kendine ait bir jargonu olabilir. İşte bu varsayımdan hareketle, benzer sayfalar içinden elde edilen fiil şablonlarıyla bilgi çıkarımı yapılmaktadır[3]. Aşağıda ilk önce ekonomi haberlerinden elde edilen controls, earns gibi fiillerin şablonlarını, daha sonrada tıp makalelerinden elde edilmiş olan induce ve bind fiillerinin şablonları görülmektedir.

{ Company Person } controls Company
{ Company Person } earns Money { for from } Goods-or-Services
{ Company Country } exports Goods to Country
Coperorg invests Money in { Financial-Instrument Market Country Company }

noun BE INDUCED BY noun
activation of these PROTEIN was induced by PROTEIN
noun INDUCE noun
PROTEIN induced the tyrosine phosphorylation
noun BIND TO noun
the drugs bind to two different PROTEIN
noun BIND noun
motifs previously found to bind the cellular factors
noun BINDING noun
the TATA-box binding protein
the BINDING of noun
the binding of PROTEIN

4.3. HTML kodları analizi
Veritabanına bağlı olan ve bir şeyle listeleyen tüm web sitelerinde birbirini tekrar eden HTML kodalrının bulunması kaçınılmazdır. İşte bu özellik sayesinde tekrar eden kodlar arasındaki bilgiler bulunup çıkarılmaktadır. Şekil 3’da HTML kodu ve ondan çıkarılabilecek bilgiler görülmektedir.


The Age of Spiritual Machines : When Computers Exceed Human Intelligence


by
Ray Kurzweil






height=140 align=left border=0 />




List Price: $14.95

Our Price: $11.96

You Save: $2.99
(20%)






Title: The Age of Spiritual Machines :
When Computers Exceed Human Intelligence
Author: Ray Kurzweil
List-Price: $14.95
Price: $11.96
Şekil 3. Dinamik Sitelerden Bilgi Çıkarımı

Bu bilgileri bulabilmek için dolduracağımız tablodaki satırların sınırlarını bulmamız gerekir[4]. Satırlar başlayıp biten HTML tag’lerinden oluşur. Hangi tag’le satırın başlayıp bittiğini bulmak önemli.
Çalışmada Kullanılan 2 temel kural:
Kural 1:Her satırdaki HTML tag sayısı birbirine yakındır.
Kural 2:En fazla tag içeren tekrarlı çevrim satırı gösterir.
Şekil 4’de bu iki kuralın nasıl uygulandığı görülmektedir.

Şekil 4. Satır sınırlarının bulunması
Ü Olası tüm satırlar daireler olarak çizilmiş.
Ü Her satırda yakın sayıda tag olması şartından dolayı T’lerin satırları oluşturmadığı görülür.
Ü En fazla sayıda tag içeren satır seçileceğinden yeşil ile gösterilen kısımlar satırlar olarak belirlenecektir.

Tekrarlı HTML taglerinin kullanılarak bilgi çıkarılan sistemlere örnek olarak çeşitli web sitelerinde satılan ürünlerin bilgilerini tek bir sayfada toplayan sistemler verilebilir[5].
Ticari Siteler:
MySimon
Cnet
BookFinder
Dom Ağaç yapısı kullanılarak bilgi çıkarımı;
Bilgi Çıkarımına öncelikle web sayfalarını “Dom Ağaç Yapısı”’na aktararak başlanır.Çıkarım desenleri ağacın kökünden dallarına metne ulaşıncaya kadar uygulanır.


HTML
BODY
FONT
B
Age of Spiritual
Machines
Ray
Kurzweil
Element
Character-Data
HEADER
by
A

Şekil -5.Dom Ağaç Yapısı
Title: HTMLàBODYàBàKarakter Data
Author: HTMLà BODYàFONTàAà Karakter Data

Alışveriş robotlarının çalışma mantığı:
1- Her satıcı site bilgi çıkarım mekanizmasını kur.
2- Kullanıcıdan sorgusunu al. (tür, fiyat vs.)
3- Her site için:
Kullanıcı sorgusunu siteye gönder
Sonuç sayfasını al.
Sonuç sayfasını o sayfanın bilgi çıkarım mekanizmasıyla işle. Sonuçlarını kendi veritabanına kaydet.
4- Sonuçları fiyatlara göre sırala.
5- Sonuçları HTML formatına çevir. Kullanıcıya döndür.

Bu tür bir çalışma mantığı sadece alışveriş robotları için geçerli değildir. Örneğin haber toplama robotları da Haber sitelerinde de tekrarlı HTML tag’leri olduğundan dolayı bu şekilde çalışabilirler.


4.4Sınıflandırma Teorisi:
Sınıflandırma teorisine biraz daha yakından bakarsak Şekil.8’deki mavi ve siyah noktalar farklı sınıflanmış(etiketlenmiş) eğitim verilerini göstermektedir. Her bir örneğin ikişer özelliği (X1,X2) vardır. Örneklerimiz kişilerden alınan ateş ve tansiyon değerleri olsun. Örneğin X1 özelliği ateş değerini, X2 ise tansiyon değerini göstersin. Maviler hasta kişileri, siyahlar ise normal kişileri göstersin. Sınıflandırma teknikleri yeni gelen bir kişinin özellik değerlerine bakarak onun hangi sınıftan(hasta mı, sağlıklı mı) olduğunu doğru bir şekilde tahmin etmeye çalışırlar.
Şekil 6. Kırmızı hangi sınıftan?

Sınıflandırma metotları yaptıkları tahminlerin doğruluklarına göre değerlendirilirler. Mükemmel diğer bir ifadeyle her türde veride çok iyi çalışan bir metot bulunmamaktadır. Bu sebeple birçok sınıflandırma metodu geliştirilmiştir.
Aşağıdaki tabloda ise farklı sınıflandırıcılarla elde edilen sonuçlar verilmiştir.
Şekil 7. Sınıflandırma Sonuçları


Yukarıda tabloda en yüksek sınıflandırma başarısına bir çeşit karar ağacı olan CART metodu ulaşmıştır. Hata oranı sadece %15’tir.
Bu rakamın anlamı aralarında belirlediğimiz bir şablon olan iki kelimenin aralarında istediğimiz ilişkinin olup olmadığının tahmininin %85 doğrulukla otomatik olarak yapılabildiğidir.


Frekansların Kullanımı:
Sınıflandırma başarısı %100 olmadığından eğer sistem bu haliyle kullanılırsa sistemdeki verilerin %15’i yanlış olacaktır. Bu nedenle daha doğru bir veritabanı için bulunan ikililerin frekanslarının kullanımı önerilmektedir. Bulunan ikililerden sınıflandırıcının doğru olarak etiketlediği her birinin kaçar kere kullanıldığı sayılarak frekansları bulunur ve Türkçe Wordnet veritabanına sadece belirli bir frekanstan yüksek olan ikililer aktarılır.
Ancak bunun yapılabilmesi için çok büyük metin arşivleri işlenmek zorundadır. Ancak bu sayede doğru frekanslar ve dolayısıyla doğru bir veritabanı elde edilebilir.
5.Veri Çıkarımında Güncel Uygulamalar
AJAX
AJAX İngilizce'si Asynchronious JavaScript and XML olan bir web geliştirme yöntemidir.
Geleneksel web geliştirme tekniğinde tarayıcı linkler veya formlar aracılığıyla sunucuya istek ve veri gönderir. Sunucudan gönderdiği istek ve verilere göre sonuç dönmesini bekler. Sunucunun gönderdiği veriyi gösterir. Bu çoğunlukla HTML veya resimdir. Şimdi söyle bir senaryo çizelim. Bir sayfa düşünelim. Üç sutundan oluşsun. Sayfanın üstünde banner ve üst menü, solunda site menüsü ve reklamlar, sağında kullanıcı giriş formu ve haberlerin gösterildiği bir tablo ve ortada da ana içerik olsun. Ana içerik ise site içinde arama yapmanızı sağlayan bir form olsun. Bu sayfa geleneksel web tekniği ile yapıldığında arama kelimeleri girilir ve form gönderilir. Form gönderildiğinde çıkan sonuçlar gösterilirken sayfanın sağındaki solundaki ve üstündeki resimler,menüler ve linkler tekrar getirilir. Burada yeterli olan sadece arama sonuçlarıydı. Sadece arama sonuçlarının getirilmesini sağlama şansımız yoktur. Bu çerçeve (frame) kullanarak veya arama sonuçlarını ayrı pencerede göstererek yapılabilir. Bilgi çıkarımında bize yardımcı olması açısından bu teknolojinin geleceği parlak görünüyor.3 temel yaklaşımla bu teknolojiyi bilgi çıkarımında kullanılabilir;
Hafif Siklet İndeksleme:siteye hiç bir yapısal değişiklik yapılmadığı gibi sadece meta,title,h1 gibi etiketler kullanılıyor.
Ekstra Linkler sayesinde arama motorları bunu takip ederek tüm siteyi indeksleyebilir.
İkincil site stratejisi;arama moturuna tam erişimli bir ikinci site yaratılır.
AJAX ile geliştirilmiş sitelere örnek olarak “Google Suggest” ve “Google Maps” verilebilir.Bu sitelerde bizim karakteri girmemizin hemen ardından olası sonuçlar,aranma oranları ve olasılıklar muazzam bir hızla önümüze çıkarılmaktadır.
6. Sonuç ve Yorumlar
İnsanlığın yüzyıllar boyu edindiği bilgi birikiminin paylaşılmaya ve bir ekran kadar yakın olması çağımızın bilgi çağı olarak değerlendirmesinin nedenidir.İnsanların çoğu internet üzerinde bilgi aramayı bilmedikleri için sonuçların alakasız olması sonucu arayışlarından vazgeçip tam aradıklarına ulaşamıyorlar.Bu yüzden son gerek son kullanızı gerek deneyimli insanlara yardımcı olabilecek akıllı sistemlerin ve algoritmaların geliştirilmesi günden güne katlanarak artan bu bilgi denizinde boğulmadan yüzebilmemizi sağlayacaktır ve geleceğin en temel bilim alanlarından biri olacaktır.


7. Kaynaklar

[1]www.cs.columbia.edu/~eugene/talks/icde2003.ppt
[2]www.isi.edu/natural-language/ teaching/cs544/cs544-9-apr04.ppt
[3]http://www.dcs.gla.ac.uk/Keith/Chapter.1/Ch.1.html
[4]http://www2.dcc.ufmg.br/livros/irbook/
[5]http://www.dcs.gla.ac.uk/Keith/Chapter.1/Ch.1.html