Anlamsal Ağ Projesi 1. Bölüm — Giriş

Ahmet Melek
4 min readOct 31, 2018

Anlamsal Ağ üzerine bir proje kodlamayı konu alan yazılarımıza hoş geldiniz.

Bu yazılarda kendi yaptığım bir Anlamsal Ağ projesini anlatacak, kullandığım programlardan, projenin amacı ve tasarımından bahsedeceğim.

Projenin adı “orumcek.com” olsun, yani Örümcek. Bu adı koymamın sebebi, Anlamsal “Ağ”ları kullanacak olmamız.

Projeye şimdiden itibaren “Örümcek” adıyla hitap edeceğim. Sonra nedir bu Örümcek diye karıştırmamanız için söylüyorum. :)

Örümceğin amacı, sizin ilginiz olan bir konu hakkında size bilgiler getirmek. Mesela Matematiğe ilginiz olduğunu düşünelim, orumcek.com a giriyorsunuz ve “Matematik” kelimesini aratıyorsunuz:

“Matematik” kelimesini aratıyoruz

Örümcek Matematik ile ilgili şeyleri bir ağ şeklinde şizin önünüze getiriyor:

Matematik hakkındaki şeyler

İşin güzel kısmı, bu ağ üzerinde istediğiniz noktaya tıklayarak, o nokta ile ilgili önerilere de ulaşabiliyorsunuz:

Matematik hakkındaki şeylere ek olarak cebir hakkındaki şeyler

Resme baktığınızda Ağ’ın üstünde gördüğünüz noktaların birer “tipi” var. Bu “tip”lere örnek olarak kişi, kurum, konu verilebilir. Yani bir Konu önerebilirim, veya kullanıcıya “arattığın şey hakkında daha çok bilgi sahibi olmak istiyorsan git bu ‘Kişi’yi araştır” diyebilirim.

Üstteki resimde noktaların tipleri de yanlarında yazıyor:

Öklid: Kişi

Cebir: Konu

Nesin Matematik Köyü: Kurum

Leibniz: Kişi

Lagrange: Kişi

Lineer Cebir: Konu

Polinomlar: Konu

Fonksiyonlar: Konu

Projenin arkasındaki kod, her bir “öneri”yi bir “tip” olarak tutuyor. Bu tiplerin önceden kodlanmış olması, Örümcek’e ağını oluştururken kolaylık sağlıyor.

Öyleyse gelin, yazının asıl konusuna geçelim ve Örümcek’te bulunan tüm bilgi tiplerini gösterelim.

Örümcek Projesinde Bulunan Tipler (Örümcek Projesinin Ontolojisi)

Örümcek’in kodlarında bulunacak bilgi tipleri (Örümcek’in Ontolojisi)

Üstte gördüğünüz resimde kullandığım programın adı Protege. Program Stanford Üniversitesi tarafından yapılmış.

Programı şu linkten indirebilirsiniz:

Programın amacı ise “Ontoloji”leri inceleyebilmek, yaratabilmek ve düzenleyebilmek.

Ontolojinin Anlamı: Bahsettiğimiz “tip”leri, detaylı bir şekilde açıkladığımız sistem. Yani tüm “tip”leri not ettiğimiz defter gibi bir şey.

Anlamsal Ağ’ları kullanırken Ontoloji oluşturmak bize çok yardımcı oluyor. Şu linkte Ontoloji kavramını daha detaylı açıklıyorum:

Projemizin İlk Adımı

İşte Anlamsal Ağ projeleri oluştururken ilk yapmanız gereken şey, Ağ’ınızdaki “tip”leri açıklayan bir Ontoloji oluşturmak.

Bunu kendi kendinize denemek istiyorsanız, Protege programını indirip program ile oynamanızı öneririm. Youtube’da Protege üstüne eğitimler mevcut.

Kafanızda oturması için, bizim projenin ontolojisini açıklayayım:

Ontolojimiz

Üstte yazan şeylerin anlamı ne? Programda bulunan hangi kavram üstte yazan hangi kelimeye karşılık geliyor?

Kullanıcımız, yani arama çubuğuna “Matematik” yazan kişi, ontolojide “Önerilen” kelimesine karşılık geliyor.

Önerilen demek, öneriyi yaptığımız kişi demek. Kim programı kullanıyorsa, kimin önüne sonuçlar gelecekse, o kişi “Önerilen” oluyor.

Öneri ise o kişinin önüne koyduğumuz her bir öneri parçası. Matematik örneğinden gidecek olursak, “Öklid”, “Cebir” gibi noktalar “Öneri”lerimiz oluyor. Yani önerdiğimiz her bir şey, bir Öneri.

Bir öneri, çeşitli tiplerde olabilir.

Öneri bir kişi olabilir(Üstte Öklid’i önerdik),

Öneri bir konu olabilir (Üstte Cebir’i önerdik),

Öneri bir oluşum olabilir, oluşum derken şirket, üniversite gibi şeyleri kastediyorum. (Üstte Nesin Matematik Köyü’nü önerdik).

Önerimiz bir döküman da olabilirdi. Mesela kullanıcıya bir Youtube videosunu izlemesini önerebilirdik, veya bir makaleyi okumasını önerebilirdik.

Tüm bunları göz önüne katarsak, Ontolojimizin tüm halini şu şekilde gösterebilirim:

Ontolojinin tümü

Gördüğünüz gibi,

Öneriler: Döküman, Kişi, Konu veya Oluşum olabilir.

Dökümanlar: Kompozisyon, Makale, Ses Kaydı veya Video olabilir.

Oluşumlar: Sivil Toplum Kuruluşu, Üniversite veya Şirket olabilir.

Önerilen ise programı kullanan kişi.

Önerilen’i ayrıca programı kullanan kişinin profili gibi de düşünebilirsiniz. Facebook profilimiz gibi.

Şimdi son bir şey açıklayacağım ama kafanızın buraya çok takılmasını istemiyorum.

James Hendler ve ekibi, 2004 yılında, Anlamsal Ağ teknolojisi için standart bir ontoloji yarattılar. Bu ontolojinin adı Owl.

Owl ontolojisi, çoğu Anlamsal Ağ geliştiren araştırmacı, öğrenci vb. kişiler için bir standart teşkil ediyor, kural koyucu bir ontoloji yani.

Ve bu Ontolojide, “Thing” denen bir tip var. Nasıl bizim ontolojimizde “Öneri” diye bir tip varsa orada da “şey” anlamına gelen “Thing” diye bir tip var.

Bir kural olarak, herhangi bir ontoloji yarattığımızda, o ontolojide tanımladığımız her “tip”i bir “Thing” yani bir “şey” olarak alıyoruz.

Bu sebeple bizim ontolojimizde de en üstte “owl:Thing” tipi yer alıyor. Ontolojide tanımladığımız her kavram, bu “Thing” in bir alt sınıfı, bir yavrusu.

Bu kurala uymamız, bizim ve başka birçok kişinin yarattığı farklı farklı Anlamsal Ağları birleştirebilmemizi ve bir sürü Anlamsal Ağ’ı aynı anda kullanabilmemizi sağlıyor.

Öyleyse bir özetle kapatalım.

Özet

1- Örümcek diye bir proje yapacağız, bu proje insanlara öğrenmek istedikleri herhangi bir şey hakkında daha rahat öğrenmeleri için öneriler sunacak. Bir müfredat gibi, “git bunu araştır, şuna bir göz atarsan faydalı olabilir” diyecek.

2- Projemizi Anlamsal Ağ teknolojilerini kullanarak yapacağız. Kullanacağımız teknolojilerin ilki Ontoloji Teknolojisi, yani yapacağımız ilk şey Ontoloji oluşturmak.

3- Bir Ontoloji yazmak için Protege programını kullanabiliriz. Youtube’da programın nasıl kullanıldığını gösteren videolar var.

4- Örümcek programının ontolojisinde ana olarak iki tip olmalı. Önerilen ve Öneri. Bu tiplerin de alt tipleri mevcut.

5- Bir kural olarak ontolojimizde yarattığımız her tipi kapsayıcı bir tip koyduk. Bu tipin adı “owl:Thing” ve bu kurala uymamız bizim Ağ’ımız ile başkalarının Ağ’larını birleştirebilmemizi sağlayacak.

Bu haftalık bu kadar, kendinize iyi bakın :)

--

--

Ahmet Melek

Machine Learning Engineer at Primer AI | Sharing thoughts on computers and other geeky stuff