Web’den Bilgi Çıkarımı İle Emlak Arama

Web’den Bilgi Çıkarımı ile Emlak Arama: Emlak Defteri

İçeriğe özel bir arama motoru olarak değerlendirebileceğimiz Emlak Defteri, temelde emlak ilanlarının açık olarak yayınlandığı sitelerin indekslenip yapısal bir formatta listelenmesi ve eldeki veri üzerinde doğal dil ile arama yapılabilmesi mantığı ile çalışmaktadır. Projenin sunum raporunun içeriğini yazının devamında inceleyebilirsiniz.

Işıkdoğan, Furkan, ve Emrah Mete. Web’den Bilgi Çıkarımı İle Emlak Arama: Emlak Defteri. Bilgisayar Projesi, Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü, İstanbul, 2010.

ÖZET

Günümüzde, fiziksel ortamda gerçekleşen her işlemin internet dünyasına taşınması ile internet oldukça önemli bir yapı olarak karşımıza çıkmıştır. Artık insanlar her işlerini internet üzerinden yapabilir, yönetebilir hale gelmiştir.

Hızla büyüyen internet ağı dünyanın en büyük veritabanı olarak düşünülebilir. İnternetin bir bilgi okyanusu haline gelmesi insanlara birçok alanda kolaylık sağlamaktadır. Ancak bu durum insanların istediği bilgiye kısa sürede ulaşmasını zorlaştırmakta ve istenmeyen bilginin ayıklanması kullanıcı için problem oluşturmaktadır. İnternette bilgiye ulaşma aşamasında insanların zamanının büyük bir bölümü istenilen bilginin aranması ve gereksiz bilginin ayıklanmasıyla geçmektedir. Bu çalışmada bilgi çıkarımı ve doğal dil işleme yöntemlerinden faydalanılarak insanların istenilen bilgiye erişme sürelerinin kısaltılması hedeflenmiş ve bilgi çıkarımının kaynağı olarak internet seçilmiştir.

Emlak aramanın gerek yatırımcılar gerek bireysel müşteriler için genellikle oldukça vakit alan bir iş olması genel amaçlı arama motorlarının yanı sıra emlak aramaya özel geliştirilmiş bir arama motoru ihtiyacını doğurmaktadır. İnsanların üzerindeki bu yükü hafifletmek, istenilen sonuca ulaşmak için harcanan zamanı kısaltmak için internette emlak aramanın tek çatı altında toplanması bu çalışmanın temelini oluşturmaktadır.

1. GİRİŞ

Bilgi çağında teknolojinin gelişmesi ve dünyanın küreselleşmesi ile birlikte bilginin artış hızı üstel olarak artmaktadır. Artan bilgi ile birlikte bilginin seçilmesi, ayıklanması ve sınıflandırılmasına olan ihtiyaç artmıştır. Bilgi çıkarımı teknikleri bu noktada yapısal olmayan verileri işleyip belirli yapılara oturtarak insan müdahalesini en aza indirmeyi amaçlar.

Bu çalışmada bilginin kaynağı olarak emlak ilan siteleri seçilmiş ve insanların emlak ararken harcadıkları süreyi en aza indirmek hedeflenmiştir. Sitelerin yarı yapısal veya yapısal olmayan HTML kodlarından bilgi çıkarımı ile yapısal ilanlar elde edilmiştir. Bilgi çıkarımı süreci gelişme bölümünde detaylı olarak incelenmiştir.

Elde edilen yapısal veri üzerinde arama söz konusu olduğunda doğal dil ile yazılmış metinler bilgi çıkarımının kaynağı haline gelmektedir. Doğal dil ile yazılmış arama metinlerinin yapısal bir arama sorgusuna dönüştürülme süreci gelişme bölümünde detaylı olarak incelenmiştir.

1.1 Mevcut Sistemler

Mevcut emlak arama sistemlerini incelediğimizde bu sistemlerin üyelik sistemiyle çalıştığını ve aramanın üyelerin eklediği ilanlar üzerinde yapıldığını görüyoruz. Özellikle yeni geliştirilen sitelerde bu yöntem tercih edildiğinde veritabanının arama yapılabilecek büyüklüğe ulaşması oldukça zaman almaktadır. Mevcut sistemlerin aksine Emlak Defteri ilan ekleme odaklı olmayıp bilgi çıkarımı ve doğal dil işleme teknikleri kullanılarak oluşturulan emlak dizini üzerinde arama yapma üzerine yoğunlaşmış bir sistemdir.

1.2 Literatür Taraması

Bu bölümde doğal dil işleme uygulamalarından biri olan bilgi çıkarımı ve genel anlamda doğal dil işleme hakkında literatür taramasına yer verilmiştir.

1.2.1 Doğal Dil İşleme

Doğal dil işleme, ana işlevi doğal bir dili çözümleme, anlama ve yorumlama olan bilgisayar sistemlerinin tasarımını ve gerçekleştirilmesini konu alan bir bilim ve mühendislik alanıdır[1]. Günümüzde doğal dil işleme uygulamaları çeşitli amaçlarla kullanılmaktadır. Metinlerin otomatik olarak özetlenmesi, başka bir dile çevrilmesi, doğal dil ile yazılan komutların yapısal bir dile çevrilmesi ve yazılı kaynaklardan ön tanımlı şablonlara uygun veri çıkarımı doğal dil işleme uygulamalarına örnek olarak verilebilir. Bu çalışmada ağırlıklı olarak yapısal şablonlara uygun veri bulma ve doğal dil ile yazılan metnin yapısal sorgu diline dönüştürülmesi üzerinde durulmuştur.

1.2.2 Bilgi Çıkarımı

Bilgi çıkarımı genel anlamda önceden belirlenmiş bir formata uygun bilgilerin büyük metin dosyaları arasından bulunup çıkartılmasıdır[2]. Bilgi çıkarımı ile yapısal olmayan herhangi bir veri kaynağından istenilen şablona uyan veri elde edilmesi ile bu veri kaynağının bir veritabanı gibi kullanılabilmesi mümkün olmaktadır. Bu çalışmada emlak ilan sitelerinin HTML kaynak kodları veri kaynağı olarak kullanılmıştır.

Bilgi çıkarım sistemlerinde temel olarak 3 tür metot kullanılmaktadır. İçinden bilgi çıkarılacak sayfanın HTML kodunun üretiliş şekline göre kullanılacak metot değiştirilir[2]. Bu metotlar yazım dilindeki şablonları kullanmak, öğelerine ayrılmış metinleri kullanmak ve sayfalardaki tekrarlanan HTML kodlarını kullanmak şeklinde sıralanabilir. Bu çalışmada dinamik içerikli web sayfaları bilgi çıkarımının kaynağı olarak kullanıldığından sayfalardaki tekrarlanan HTML kodlarından faydalanılmıştır.

2. GELİŞİM SÜREÇLERİ

Emlak sitelerinden bilgi çıkarımı kapsamındaki “Emlak Defteri” adını verdiğimiz projemiz kapsamında öncelikle sistemin genel işleyişi, oluşturulacak metotlar, sınıflar ve veritabanının tasarımı gibi konularda bir yol haritası çıkarılmıştır. Veritabanı tasarım sürecinde ileride hangi veri alanları üzerinden arama veya sıralama gibi işlemler yapılabileceği de göz önünde bulundurulmuştur.

2.1 Bilgi Çıkarımı Süreci

Bağlantı URL’lerinin elde edilmesi, bağlanılan sayfaların kaynak kodlarının ayrıştırılması ve çıkarılan verinin uygun biçimde veritabanına kaydedilmesi bu çalışmanın temel basamağını oluşturmaktadır. Bu bölümde bilgi çıkarımı sürecinde karşılaşılan sorunlar ve sunulan çözümler ele alınmıştır.

Sayfalardan bilgi çıkarılması aşamasında karşılaşılan başlıca sorunlardan biri sitelerin yapılarının çok farklı olmasıyla birlikte sitelerin kendi içinde de tam anlamıyla bir yapı bütünlüğü olmaması olmuştur. Sitelerin HTML kodlarında farklı çeşit ilanlar için (örneğin paralı/parasız/vitrin ilan) farklı etiketler kullanılması ve her ilanın bütün bilgilerinin tam olmaması (örn resim yüklenmemiş) çıkarılan ilanlarda verilerin kaymasına, ilanların bilgilerinin birbirine karışmasına yol açabilmektedir. Site içindeki bu farklılık sorununa, string biçiminde alınan HTML kaynak kodunun sitenin yapısına göre satırlara bölünmesi ile çözüm getirilmiştir. Bu şekilde ilanların birbirinden bağımsız olarak işlenmesi ve eksik verilerin yalnızca o ilanda boş kalması sağlanabilmektedir. Sayfa kaynağından satır bazında bilgi çıkarımı, genelleştirilmiş bir örnek ile Şekil 2.3 te gösterilmiştir.

İlk satırın işlenmesi sonunda genelleştirilmiş ilan nesnesinin üye alanları:

Resim Kaynağı: “resim1.jpg”,

URL: “#”,

Başlık: “Deneme İlan 1”,

Durum ID: 1 (Kiralık),

Fiyat: 1500Para Birimi ID: 1 (TL),

Alan: 140,

Emlak Tipi: “Daire”,

Şehir: “İstanbul”,

Semt: “Beşiktaş”

Siteler arasındaki yapı farklılık sorununun çözümü ise ayrıştırma metotlarının mümkün olduğunca modüler yazılması ile mümkün olmuştur. Her sitede farklılık gösteren etiketleri girdi olarak alan, bir sonraki satırı ve bir sonraki veriyi getirmek için tasarlanan metotlar bütün siteler için ortak kullanılmaktadır. Ayrıştırma metotlarının geri döndürdüğü değerler ortak kullanılan bir nesnenin üye alanlarına yazılmakta ve uygun bir biçimde veritabanına yeni satır olarak eklenmektedir. Bu şekilde sisteme yeni bir site eklemek istenildiğinde sitenin HTML kaynak kodundaki siteye özel etiketleri girdi olarak alan bir metot yazılması ve gerekli ise veri tipi dönüşüm metotlarında ufak düzenlemeler yapılması yeterli olacaktır. Bu yapı başlıca sorunlardan biri olan kullanılan kaynak sitelerin yapısının değişmesi durumunda da kolay çözüm üretebilmemizi sağlamaktadır. Bilgi çıkarımı ve verilerin ayrıştırılma sürecinin genel akış diyagramı Şekil 2.4 deki gibidir.

Sayfaların kaynak kodlarının ayrıştırılabilmesi için öncelikle bağlanılacak URL’lerin bilinmesi gerekmektedir. Kaynak sitelerde tüm ilanları listeleme gibi bir seçenek olmaması ve bir arama sonucunda genellikle en fazla 1000 ilan döndürülmesi sitelerin bütün emlak ilan kategorilerini gezecek bir robot koda olan ihtiyacı doğurmaktadır. Ayrıştırılacak sayfaların URL’lerini üreten bu kodların yazılması arama detaylarının kodlanmamış bir biçimde URL’de yer aldığı siteler için birkaç basit döngü ile gerçeklenebilmektedir. Bununla birlikte kodlanmış URL içeren sitelerde arama özelliklerinin bağlantı adresinden anlaşılması göreceli olarak daha karmaşık bir yapıya sahiptir. Bu sitelerde de otomatik arama yapılabilmesi için arama özellikleri ile kullanılan ID numaralarını eşleştiren diziler kullanılarak bu problem büyük ölçüde çözülmüştür.

Bir başka problem ise veritabanını güncellemek istediğimizde bütün veritabanının silinip tekrar oluşturulmasının hem performans açısından maliyetli olması, hem de hem de kaynak sitelere çok fazla sorgu gönderdiğimizden ip adresimizin engellenme olasılığını artırması olmuştur. Bu sorunu çözülmesi için veritabanının her seferinde yeniden oluşturması yerine yeni eklenen ilanların veritabanına eklenmesi düşünülmüştür. Gayrimenkuller araç, cep telefonu gibi çok hızlı alınıp satılan değerler olmadıkları için silinen ilanların veritabanından çıkarılması probleminin kullanıcılara kırık link bildirme seçeneği sunularak çözülmesi öngörülmüştür. Ancak kullanıcının ilan silme yetkisine sahip olmasının istismar edilebilecek bir özellik olması sistemde bir güvenlik açığı oluşturduğundan ilanların silinmeden önce otomatik kontrolünün yapılması gerekmektedir. Bununla birlikte saldırıya yönelik yapılan çok sayıda kırık link bildirme talebinin işlenmesinin sisteme yükleyeceği işlem yükü sistemin hizmet dışı kalmasına yol açabilmektedir. Sonuç olarak kullanıcıya bu seçeneği sunmak yerine yeni eklenen ilanları günlük olarak veritabanına eklenmesine ve silinen ilanların birikmemesi için belirli zaman aralıkları ile veritabanını yeniden oluşturulmasına karar verilmiştir.

Veritabanımızı çok sayıda siteden ayrıştırdığımız verilerden oluşturmamız kullanıcının bir arama ile ulaşabileceği veriyi zenginleştirmektedir. Ancak kaynak site sayısı arttıkça farklı sitelere verilmiş aynı veya çok benzer ilanların da artması kullanıcının istediği ilana ulaşma süresini uzatabilmektedir. Aynı veya çok benzer ilanların saptanmasında kaynak adres ve resim kaynağı dışındaki özelliklerden faydalanılmıştır. Seçilen özellikleri aynı olan ilanlardan birinin silinmesi hem veritabanının gereksiz büyümesini engellemesi hem de kullanıcının bilgiye ulaşma hızını artırması açısından başarımda artış sağlamıştır. Bununla birlikte yönetim panelinden ayarlanabilen belli bir tarihten önceki ilanların silinmesi, benzer ilanların bir tanesi dışındakilerin silinmesi gibi özellikler de başarımı artıran etkenler arasındadır.

2.2 Doğal Dil İşleme Süreci

Bilgi çıkarımı teknikleri ile oluşturulan veritabanındaki veriye kullanıcının ulaşması aşamasında doğal dil işleme önem kazanmaktadır. Arama metninin SQL sorgusuna dönüştürülmesi sırasında NLP tekniklerinden faydalanılmıştır. Doğal dil işleme sürecinde sistemin genel akışı Şekil 2.6’da gösterildiği gibidir.

Doğal dil işleme sürecinde karşılaştığımız başlıca sorunlardan biri anahtar kelimelerin nasıl ayırt edileceği olmuştur. Genellikle rakamsal ifadelerin tanımlayıcıları kendilerinden sonra geldiği için kelimelerin sondan başa doğru işlenmesi tercih edilmiştir. Örneğin “1000 – 1200 TL” metnini işlerken önce “TL” kelimesini işlememiz “1000” ve “1200” elemanlarının para kategorisine ait olduğunu anlamaya yardımcı olmaktadır. Rakamsal veri veya herhangi bir tanımlayıcı içermeyen kelimeler ise veritabanında ilgili tablolarla eşleşip eşleşmediği kontrol edilerek sınıflanmıştır. Örneğin “İstanbul” kelimesi hiçbir anahtar kelime içermediğinden veritabanındaki tablolarla eşleşip eşleşmediği kontrol edilmekte ve şehirler tablosunda yer aldığından arama sorgusuna bulunduğu tabloya uygun bir şekilde dâhil edilmektedir. Bütün kelimeler kategorilere ayrıldıktan sonra geriye kalan anlamlı kelimeler ise ilan başlıklarında aranmaktadır.


Giriş metninin ayrıştırılması sırasında karşılaşılan sorunlardan birini de büyük harf – küçük harf duyarlılığı ve ekler oluşturmaktadır. Bu çalışmada giriş metninin bütün karakterlerinin küçük harfe dönüştürülmesi, ek ve bağlaçların silinmesi ile arama sonuçlarının iyileştirilmesi hedeflenmiştir. Ancak eklerin silinmesi işlemi “Etiler”, “Şile”, “Levent” gibi bazı anahtar kelimelerin boş sonuç döndürmesi gibi bir yan etkiye yol açmıştır. Kelimelerde “ile”, “ve” gibi bağlaçlarla benzerlik gösteren harf dizilimleri yer aldığından bu bağlaçlar silindiğinde kelimeler deforme olmaktadır. Bu sorun kelimelerden yalnızca “de”, “da”, “te”, “ta” gibi bulunma ekleri çıkarılarak, bağlaçların ise bir kelimenin içinde değil ayrı bir kelime olarak arama metninde yer alması durumunda silinmesi ile çözülebilir. Bununla birlikte “Niğde” gibi adının sonunda bulunma ekleri ile karışabilecek harfler bulunan il ve ilçeler ise yapısal sorgu oluşturulurken birebir eşleme yerine benzerlik kıyaslaması yapıldığından çoğunlukla sorun oluşturmamaktadır. “Niğ” ile başlayan başka şehir bulunmadığından harfler eksik olmasına rağmen doğru sonuçlar dönecektir.

Emlak Defteri arama modülü genel anlamda doğal dil ile yazılmış arama metni ile arama yapabilme yetisine sahip olmakla birlikte harf düzeltme veya anlamsal çıkarımda bulunma özelliklerine sahip değildir. Örneğin “Beşkitaş” şeklinde yazılan metinde yazılmak istenenin “Beşiktaş” olduğu veya “Tekirdağ’ın doğusundaki şehir” yazıldığında anlatılmak istenenin “İstanbul” olduğunun tespiti mevcut sistemde mümkün olmamaktadır.

Arama sonuçlarının iyileştirilebilmesi için kullanıcı arayüzüne kullanıcının isteğe bağlı olarak kullanabildiği detaylı arama seçenekleri eklenmiştir. Detaylı arama seçenekleri doğal dil ile arama modülü ile birlikte de kullanılabilmektedir.

Genel bir örnek olarak “İstanbul Beşiktaş’ta 100-150 metrekare 2 oda 1 salon 1000 1200tl arası kiralık daire” şeklinde bir arama metninin işlenmesini inceleyecek olursak; ön işlemden sonra elde edilen kelimeler: “istanbul”, “beşiktaş”, “100”, “150”, “metrekare”, “2”, “oda”, “1”, “salon”, “1000”, “1200tl”,  “kiralık”, “daire” olacaktır. Son kelimeden ilk kelimeye doğru işlemeye başladığımızda “tl”, “metrekare”, “salon” ve “oda” anahtar kelimeleri algılanmakta ve kendilerinden önce gelen rakamsal değerler uygun kategorilere atanmaktadır. Anahtar kelime içermeyen şehir ve semt adları olan “istanbul” ve “beşiktaş” kelimeleri ise veritabanında ilgili tablolarda aranarak sorguya uygun bir biçimde eklenmektedir. Arama alanlarından hiçbiri ile eşleşmeyen kelimeler ise ilan başlığında aranmak üzere sorguya eklenmektedir. Bütün kelimeler işlendikten sonra kategorilerine ayrılan kelimeler de uygun şekilde sorguya dâhil edilmektedir. Örnek arama metinleri ve SQL sorgularıyla ilgili bazı örnekler Tablo 2.4’te verilmiştir.

Tablo 2.4 Arama metni işleme örnekleri

Arama Metni Oluşturulan SQL Sorgusu
Bursa Nilüfer’de Satılık 3+1 daire SELECT * FROM getAdv WHERE [Type] like ‘%daire%’ AND [Ad_Status] like ‘%satılık%’ AND [Region] like ‘%nilüfer%’ AND [City] like ‘%bursa%’ AND NumRoom=’3+1′
selenium twins residence beşiktaş kiralık 2000-3000tl arası SELECT * FROM getAdv WHERE [Ad_Status] like ‘%kiralık%’ AND [Region] like ‘%beşiktaş%’ AND [Type] like ‘%residence%’ AND Price>=’2000′ AND Price<=’3000′ AND [Title] like ‘%selenium twins%’
2 oda 1 salon kiralık 100-150m2 daire SELECT * FROM getAdv WHERE [Type] like ‘%daire%’ AND [Ad_Status] like ‘%kiralık%’ AND Area>=’100′ AND Area<=’150′ AND NumRoom=’2+1′
şilede satılık yazlık 120000tl – 150000 tl SELECT * FROM getAdv WHERE [Type] like ‘%yazlık%’ AND [Ad_Status] like ‘%satılık%’ AND [Region] like ‘%şile%’ AND Price>=’120000′ AND Price<=’150000′

Sonuç olarak bilgi çıkarımı ve doğal dil işlemlerinin sonucunda kullanıcı sistemin web arayüzünü kullanarak kolaylıkla arama yapabilmekte ve sonuçlara hızlı bir şekilde ulaşabilmektedir. Kullanıcı arayüzünün ekran görüntüsü Şekil 2.8’deki gibidir.

3. SONUÇ

Günümüzde bilgi çıkarımı ve doğal dil işleme uygulamaları insanlara birçok alanda kolaylık sağlamaktadır. Yapısal olmayan veri kaynaklarından faydalanarak yapısal veri elde edilmesi; verinin işlenmesinde kolaylık sağlamakta, insanların üzerine düşen işlem yükünün yazılımlar tarafından gerçekleştirilebilmesini mümkün kılmaktadır.

Bu çalışmada kaynağı çeşitli emlak ilan web siteleri olan yapısal olmayan veya yarı yapısal veri işlenerek yapısal bir kalıp elde edilmiştir. Bilgi çıkarımı ile elde edilen veritabanında arama yapma söz konusu olduğunda doğal dil ile yazılmış bir arama metni yapısal olmayan bir veri kaynağı olarak karşımıza çıkmaktadır. Algoritması temel anlamda gelişme bölümünde ele alınan Emlak Defteri arama modülü, kullanıcının girdiği arama metnini basit anlamda yapısal bir veritabanı sorgusuna dönüştürerek doğal dil ile aramaya olanak sağlamaktadır. Şehir ve ilçe adı gibi özel isimlerin yanlış yazılması durumu dışında kesme işareti, virgül, kısa ve uzun çizgilerde yapılan yazım yanlışları, ekler ve bağlaçların yanlış kullanımı gibi durumlarda da sistem başarılı sonuçlar üretebilmektedir.

Bilgi çıkarımı ile ortak bir veritabanı oluşturulması, farklı sitelerde veya aynı site içerisinde yer alan aynı veya yüksek oranda benzerlik gösteren kayıtların silinebilmesine olanak sağlamaktadır. Bu şekilde kullanıcının tekrarlanan veriler ile zaman kaybı azaltılarak birim zamanda elde edilen faydanın en yüksek seviyede olması hedeflenmiştir.

Sonuç olarak Emlak Defteri projesi ile emlak arama sürecinin birçok açıdan hızlandırılması ile zaman kaybının en aza indirilmesi hedeflenmiştir.   Kullanılan yöntemler hem sistemin çalışma hızının iyileştirilmesini hem de kullanıcının arama sürecinin önemli ölçüde hızlandırılmasını sağlamıştır.

Advertisements

About ... from Emrah METE

Bilgisayar Mühendisi
This entry was posted in Projects, Uncategorized and tagged , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s