3 Ağustos 2011 Çarşamba

Kurt – Kuzu – Çiftçi – Ot Probleminin Genişlik Öncelikli Arama (BFS) ile Çözümü


Yapay zekanın en yaygın kullanım alanlarından biri oyunlar. Bizim bu yazıda inceleyeceğimiz örnek, hepimizin bildiği kurt – kuzu – çiftçi – ot  problemi olacak. Bu problemin Cannibals & Missionaries, Family Crisis gibi daha karmaşık şekillerini de bulabilirsiniz. 

Çiftçinin kurt, kuzu ve otu nehirden karşıya geçirmesi gerekiyor. Kurt ile kuzunun, kuzu ile otun aynı kıyıda yalnız kalmamaları kuralı var.

Gezgin Satıcı Problemine Genetik Algoritmalar İle Yaklaşım

Gezgin satıcı problemi, her şehre uğramak ve başlangıç şehrine geri dönmek kaydı ile, şehirleri en kısa yolu izleyerek dolaşmaya dayanıyor.

29 Mart 2011 Salı

RDFS Entailment Rules 2-3-7-9

Kavramsal modele yeni kavramlar eklendi.

RDFS Entailment Rules 2, 3, 7 ve 9’u modelimizi zenginleştirmek için kullanmaya çalışacağız.  
rdfs2 kuralı: Typing data by usage
if
aaa rdfs:domain xxx .
uuu aaa yyy .
then
uuu rdf:type xxx .
Bu kuralın bizim modelimizdeki bir örneği:
Volume rdfs:domain Electronic Device
Television volume “20”
Television rdf:type Electronic Device

rdfs3  kuralı: Data typing based on use
if
aaa rdfs:range xxx .
uuu aaa vvv .
then
vvv rdf:type xxx .
Bu kuralın bizim modelimizdeki bir örneği:
assists rdfs:range Person
“Doctor Search Agent” ourModel:assists “Paul”
Paul rdf:type Person


Rdfs7  kuralı: Relationship Propogation
if
aaa rdfs:subPropertyOf bbb .
uuu aaa yyy .
then
uuu bbb yyy .

Bu kuralın bizim modelimizdeki bir örneği:

ourmodel:isEmployedBy rdfs:subPropertyOf worksFor.
“Doctor A” isEmployedBy “Hospital B”
“Doctor A” worksFor “Hospital B”

Rdfs9  kuralı: Type Propogation
if
uuu rdfs:subClassOf xxx .
vvv rdf:type uuu .
then
vvv rdf:type xxx .

Bu kuralın bizim modelimizdeki bir örneği:  

PhysicalTherapist rdfs:subClassOf Doctor.
“Doctor A” rdf:type PhysicalTherapist
“Doctor A” rdf:type Doctor

23 Mart 2011 Çarşamba

Anlamsal Web Vizyonunu Gerçekleştirmek - Ontoloji Arama

Geçtiğimiz haftalarda anlamsal web vizyonunun ne kadar gerçekleştirilebildiğini araştırmak için bir çalışmaya başlamıştık.İlk olarak, Tim Berners-Lee'nin makalesindeki senaryoyu kavramsal model ile ifade etmeye çalıştık. Bu modeli biraz daha geliştiriyor olacağım ve E/R, Object Diagram veya ORM ile ifade etmeye çalışacağım.

Kavramsal modelde yer verdiğimiz kavramlara karşılık gelen ontolojileri arama sürecinden biraz bahsetmek istiyorum. Geçtiğimiz haftalarda Swoogle ve Watson üzerinde kavramlarımızı ve yakın anlamlı kavramları aramıştık. Tekrar kullanılabilir, sisteme adapte edilebilir ontoloji bulmanın oldukça zor olduğunu, ayrıca karşımıza çıkan yüzlerce sonuç içinden kullanışlı ontolojileri gözle seçmenin zor olduğunu görmüştük.

Bu nedenle ilk çalışmamız Swoogle API kullanımı üzerine oldu. Bu sayede arama işlemini program üzerinden gerçekleştirebilir duruma geldik. Şimdi dönen sonuçları Jena ile açmaya, yorumlamaya ve kullanışlı olabilecek ontolojileri otomatize edilmiş bir süreç sonucunda bulmayı hedefliyoruz.

Arama sonucunda gelen ontolojilerin hangisinin daha kullanışlı olduğunu anlamak için neler yapabiliriz?
-Yakın anlamlı sözcükler arasından, dönen sonuç sayısına göre bir değerlendirme yapılabilir.
-Kendi kavramsal modelimizdeki kavramlara ait property'leri en çok sayıda içeren ontolojilerin bizim için daha kullanışlı olduğu düşünülebilir.
-Bizim modelimizdeki kavramlar arasındaki ilişkilere benzer ilişkili ontolojileri içeren sonuçlar da bizim modelimize daha yakın olabilir.

Bu kuralların sayısı artacaktır. Tabii ki bu kuralları kod üzerinde nasıl gerçekleştireceğimiz de ayrı bir tartışma konusu olacak.

8 Mart 2011 Salı

Anlamsal Web Vizyonunu Gerçekleştirmek

Bu dönem aldığım Anlamsal Web dersini oldukça farklı bir şekilde işliyoruz. Dersi veren hocam Yrd. Doç. Dr. Murat Osman ÜNALIR, dersin ilerleyişini Twitter’da bizlerle paylaşıyor. Dersin işlenişi için izlenen bu yeni yaklaşımın, dersi alan öğrenciler olarak bizde de bir ilgi ve heyecan yarattığını söyleyebilirim.

Dersimizle eş zamanlı olarak yürütülecek çalışma da oldukça ilgi çekici. Anlamsal web alanında Tim Berners-Lee’nin çizmiş olduğu tablonun, geçtiğimiz 11 yılda ortaya çıkan gelişmeler doğrultusunda ne kadarının gerçekleştirilebildiğini ortaya çıkarmaya çalışacağız. Bu süreç boyunca da Ontology Development 101: A Guide to Creating Your First Ontology makalesindeki adımları izleyeceğiz.

Bu amaçla, ilk adımda hepimiz Tim Berners-Lee’nin makalesinde belirtilen senaryoya ilişkin birer kavramsal model oluşturduk. Her öğrencinin birer model oluşturması sayesinde senaryoya farklı bakış açıları geliştirmeyi ve sonunda ortak bir bakış açısına ulaşmayı amaçlıyoruz. Benim kavramsal modelim de aşağıda yer alıyor.  Bunun gibi kavramsal modeller ve üzerindeki hatalar üzerinde tartışıp ortak bir kavramsal model oluşturmayı amaçlıyoruz.


Kavramsal model, makaledeki birinci adıma karşılık geliyor. Şimdi, makaledeki ikinci ve üçüncü adımları gerçekleştirmeye çalışacağız. Yani, kavramsal modeldeki önemli kavramları listeleyecek ve bu kavramlara ilişkin mevcut ontolojileri bulmaya çalışacağız.

Şimdi, kavramsal modeldeki önemli kavramları ve bunların eş-yakın anlamlılarını listelemeye çalışalım:

Person: Human, people, user
Schedule: Calendar
Location: Address
Doctor: Medical
Appointment: Meeting

Bu kavramlar ve eş anlamlıları için mevcut ontolojileri Swoogle ve Watson üzerinde aradığımızda aşağıdaki sonuçlara ulaşıyoruz (En çok sıkıntıyı bu aşamada yaşadığımı söyleyebilirim –çok sayıda 404 hatası-. Tekrar kullanılabilir sonuçlara erişmek oldukça zor. Bu durum bizi kendi veri modellerimizi yaratmaya itiyor.):

Person:

Schedule:

Location:

Doctor:

Appointment:

Bu hafta bu sonuçların tekrar kullanılmaya ne kadar uygun olduklarını inceleyeceğiz. Ayrıca ontoloji arama konusunda API’lerin kullanımı üzerinde duracağız. Şimdilik burada bırakıyoruz. Önümüzdeki haftalarda dersin ilerleyişi ile ilgili yeni gelişmeleri aktarmak dileğiyle.

2 Kasım 2010 Salı

Prolog ile Bilgi Temsili ve Çıkarsama

 Geçtiğimiz haftalarda Yapay Zeka dersinin ilk projesi olarak basit bir Prolog uygulaması geliştirdik. Prolog, programlamaya yeni başlayanların çok çabuk ısındığı ve çok sevdiği bir dil olarak gösteriliyor. Programlama geçmişi olanlar için ise tam tersi olduğunu söyleyebilirim. Prolog hakkında Türkçe kaynak bulmak oldukça zor. Bu yüzden yazmış olduğum kodları açıklamalarıyla beraber paylaşmak istedim. Umarım birilerinin işine yarar.