Her karmaşık ifade daha az karmaşık ifadelerin birleşimi ile ifade edilebilir

Anlam Bilim Dilleri ve Anlambilim Dili Çözümleme Üzerine Düşünceler – 1

İlker Fıçıcılar
30 Ekim 2008

1. Önerme: Her karmaşık ifade daha az karmaşık ifadelerin birleşimi ile ifade edilebilir.

karmaşık ifade = ifade 1 (işlem) ifade2 [ (işlem) ifade 3 … ]

örnek: “Her karmaşık ifade daha az karmaşık ifadelerin birleşimi ile ifade edilebilir.”

olgu-1 = her karmaşık ifade = tümlemi( karmaşık (ifade) )

olgu-2 = olgu-1 anlatılabilir =  anlatmak kapsar olgu-1

olgu-3 = olgu-1 – daha_az(karmaşık)

olgu-4 = tümlemi(olgu-3)

olgu-5 = olgu-4 anlatir olgu-1

Bu olgular super-set bir anlambilim dili ile ifade edildiğinde, örnekte verilen cümleyi harhangi bir başka dilde anlambilim-çözücü bir algoritma ile yeniden ifade etmek mümkün olacaktır.

Anlambilim-çözücüden kasıt, şu örnek ifade-etme ve yeniden ifade-etme ile görülebilir:

Türkçe cümle: “Bir kadın insandır.”

olguluk-1: kadın tanımlanacak

olguluk-2: kadın sayılabilir bir kavram

olguluk-3: insan üst kümesi kadın alt-kümesini kapsıyor

Bunu DRS anlambilim dili ile yazarsak:

[A, B, C]
object(A, kadın, sayılabilir, na, eq, 1)-1
object(B, insan, sayılabilir, na, eq, 1)-1
predicate(C, eşittir, A, B)-1

Veya OWL anlambilim dili ile:

Ontology(
ClassAssertion(
Class(:kadın)      AnonymousIndividual(1)   )
ClassAssertion(      Class(:human)      AnonymousIndividual(2)   )
SameIndividual(      AnonymousIndividual(1)      AnonymousIndividual(2)   ))

Veya OWL RDF ile:

<?xml version=”1.0″ encoding=”UTF-8″?>
<rdf:RDF
xmlns:owl=”http://www.w3.org/2002/07/owl#&#8221;
xmlns:owl11=”http://www.w3.org/2006/12/owl11#&#8221;
xmlns:swrl=”http://www.w3.org/2003/11/swrl#&#8221;
xmlns:swrlb=”http://www.w3.org/2003/11/swrlb#&#8221;
xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#&#8221;
xmlns:rdfs=”http://www.w3.org/2000/01/rdf-schema#”&gt;
<owl:Ontology rdf:about=””/>
<owl:Thing rdf:nodeID=”id1″>
<rdf:type>      <owl:Class rdf:about=”#kadın”/>    </rdf:type>  </owl:Thing>
<owl:Thing rdf:nodeID=”id2″>
<rdf:type>      <owl:Class rdf:about=”#insan”/>    </rdf:type>  </owl:Thing>  <owl:Thing rdf:nodeID=”id1″>
<owl:sameAs rdf:nodeID=”id2″/>  </owl:Thing></rdf:RDF>

Tabii günümüzdeki bu anlambilim dilleri henüz bir süper-set olmaktan uzak. Yine de gidilecek yola ilişkin fikir veriyorlar.

Bu diller, WordNet gibi bir veritabanı ile ilişkilendirildikten sonra her dilde yeniden ifade-etme işlemlerinde kullanılabilirler.

Söze-dökme diyebileceğimiz bu işlem için her dile özgü bir çözücü yazılmalıdır.

Bu anlambilim dillerinde fiiller dilin içine gömülü olduğundan genellikle bir tek isimlerin sözcük karşılıklarına bakmak kalıyor.

Örneğin yukarıdaki OWL dilindeki metin dillere de ilgili dilin çözücüsü ile aktarılacaktır:

Fransızca: Une cevirisi(kadın) est l’cevirisi(insan).

İngilizce: A cevirisi(kadın) is a cevirisi(insan).

Macarca: Az cevirisi(kadın) egy cevirisi(insan).

… gibi.

Tabii bu OWL gibi anlambilim dillerine anlam-belirsizliği sızmamalı. Bir isim için birden çok karşı dil eşlemesine izin vermemek için WordNet, BalkaNet gibi geniş lexicon veritabanları bu OWL gibi dillerle bütünleştirilmeli.

Bu örnekleri, ifadecikleri bunlarla anlatabileceğimizi söylemek için vermiştik. Asıl önermemiz karmaşık ifadelerin daha alt ifadelere bölünebileceği idi. Ancak bu alt ifadecikleri bir biçimde birleştirmemiz gerekli. Bunun için de kullandığımız ister First Order Logic olsun, ister OWL olsun bu ontoloji/anlambilim dilinin iç içe ifadelere izin vermesi veya başka ifadelere üst-ifade-işlemleri ile ilişkilendirmeye izin vermesi gerekir.

Bu arada veri sıkıştırmaya bir örnek olması için yukarıdaki “bir kadın bir insandır” cümlesini nasıl sıkıştırabileceğimizi yazalım:

“tanımlama” işleminin 8 bitlik 16’lık sayı sistemindeki kodu 21 olsun mesela, ve sonra gelenler değişken olsun, 00 ile liste bitsin:

Bu durumda DRS dilindeki

[A, B, C]
yeni makine dili ontoloji kodumuz olarak şu oluyor:

21 01 02 03 00

Devam edelim. Nesne tanımlama kodu 42 olsun, 8 bitlik bir flag parametresi olsun, 1 baytlık bir değişken kodu ve 4 baytlık bir lexicon kodu olsun:

Bu durumda da DRS dilindeki

object(A, kadın, sayılabilir, na, eq, 1)-1

şuna dönüşür:

42 0F 01 98 76 54 32

ve
object(B, insan, sayılabilir, na, eq, 1)-1

de şuna:

42 0F 02 01 23 45 67

Son olarak koşul ifademizin kodu da 63 olsun, değişken kodu paremetresi olsun, ve sırayla ilişkilendirme değişkenlerini paremetre olarak alsın, ve iki baylık da bir fiil lexiconu olsun; “eşittir”, “olmak”, “be/is”, “est” anlamındaki örnek lexiconun kodu da 92 61 olsun:

böylece
predicate(C, eşittir, A, B)-1

DRS satırı şu olur:

63 03 01 02 92 61

Hepsini yazarsak:

21 01 02 03 00

42 0F 01 98 76 54 32

42 0F 02 01 23 45 67

63 03 01 02 92 61

Evet, nihayet! Yeni uydurduğumuz bir makine dilinde “bir kadın bir insandır” diyebiliyoruz, ve bunu bir makine anlayabiliyor!..

Bakalım kaç byte tuttu:

ana tanımlama: 5 byte (olmasa da olur; bunu DRS’ye uysun diye koymuştuk.)

kadını tanımlama: 7 byte

insanı tanımlama: 7 byte

bu iki tanımı ilişkilendirme: 6 byte

Toplam: 25 byte (ya da gereksiz kısım hariç 20 byte)

Gayet iyi.

Örnek cümle Türkçede 22 byte tutuyordu. Gerçi İngilizcesi 17 byte tutuyor ama olsun. Daha uzun sözcüklerde bile bizim makine dilimiz 20 byte tutacak. Örneğin, “bir Çekoslavakyalılaştıramadığımız da bir insandır” cümlesi de makine dilinde

42 0F 01 87 65 43 21 42 0F 02 01 23 45 67 63 03 01 02 92 61

dizisiyle kısa ve öz bir biçimde ifade edilebilir. Üstelik bir anlambilim-çözücü bu makine dilindeki ifadeyi alıp gelmiş gelecek tüm dillere çevirebilecektir.

İlker Fıçıcılar
30 Ekim 2008


Posted

in

,

by

Tags: