Aile kümesi ve benzer mantık iliskilendirmeleri nasıl yapılır?

Robotun tüm ses tanıma ve yüz tanıma kodlarını yazdım. Simdi yapay zeka asamasına geçmek istiyorum. Basit bir aile kümesini fonksiyon olarak nasıl çalıstırabilirim? Örneğin Ali, Ayse ve Veli olsun. Ali Ayse’nin esidir. Aysenin oğlu Veli ise Veli’nin babası kimdir sorusuna bu fonksiyondan kontrol edip Ali
diye cevaplamasını istiyorum. Bunu python listeler vb. ile yada örnek eğitilmis model ile yapmak nereden baslamam gerekir? Buna benzer fonksiyonlar içinde bir çok iliskilendirme denemeleri yapmak istiyorum. İlerleyen asamalarda cümle kelimeleri ve eklerini ayrıstırıp cümleyi anlandırma çalısmaları yapacağım. Bir çıkıs noktası bulmam için yardımcı olabilir misiniz?

Şöyle bir şey yazdım ama daha da geliştirmek için bir ağaç oluşturmamız gerekebilir. (Bir de python 3.8 ile çalıştırmazsanız hata verir)

class Kişi:
    def __init__(self, isim, cinsiyet, **akrabalar):
        self.isim = isim
        assert cinsiyet == "E" or cinsiyet == "K"
        self.cinsiyet = cinsiyet
        self.akrabalar = akrabalar
        self.akrabalar["çocuk"] = set()

    def __getitem__(self, attr):
        return self.akrabalar[attr]

    def __setitem__(self, attr, value):
        assert isinstance(value, Kişi)
        getattr(self, attr)(value)

    def baba(self, baba):
        self.akrabalar["baba"] = baba
        baba.akrabalar["çocuk"].add(self)

    def anne(self, anne):
        self.akrabalar["anne"] = anne
        anne.akrabalar["çocuk"].add(self)

    def çocuk(self, çocuk):
        self.akrabalar["çocuk"].add(çocuk)
        if self.cinsiyet == "E":
            çocuk.akrabalar["baba"] = self
        else:
            çocuk.akrabalar["anne"] = self
            
        if (eş := self.akrabalar.get("eş", None)) != None:
            if eş.cinsiyet == "E":
                çocuk.akrabalar["baba"] = eş
            else:
                çocuk.akrabalar["anne"] = eş

    def eş(self, eş):
        self.akrabalar["eş"] = eş
        eş.akrabalar["eş"] = self
        self.akrabalar["çocuk"] = eş.akrabalar["çocuk"] = eş.akrabalar["çocuk"] | self.akrabalar["çocuk"]
        

    def __repr__(self):
        return self.isim

Ali = Kişi("Ali", "E")
Ayşe = Kişi("Ayşe", "K")
Veli = Kişi("Veli", "E")

Ali["eş"] = Ayşe
Ayşe["çocuk"] = Veli

print(Veli["baba"])




Çok teşekkür ederim paylaştığınız kod için. Ben kod üzerinde denemeler yapıp geliştirmeye çalışırım artık sağolun. Bende 3.5 var raspberry pi’de güncellerim o zaman.

Bu brolin59 yazan nlp kodunu denedim çok güzel yazmış gerçekten fakat çıktıda aynı liste içinde
um(2-1. tekil kişi){içe} böyle parantezli, süslü parantezli göstermek yerine 2 ayrı liste içinde gösterseymiş keşke. “um” listesinin 2. elemanı olurdu “1. tekil kişi” diğer listenin 2. elemanı olurdu. Kelime ekleri uzadıkça çok daha karmaşık hal alıyor çıksısı. İşlem yapabilmek için ayrıştırmak gerekecek. sonra 1. tekil kişi ise robota sen diye hitap ettirebilirdim mesela.

Olmadı çok vaktim olursa bir tanede ben yazayım nlp için bir kaynak daha olur ama gerçekten çok zaman alan uğraştıran bir iştir bu.

Zaten ben linkleri daha çok örnek olsun diye attım, çoğunun tamamlanamadığı açıklamalarında da yazıyor. İstediğiniz özellikleri kodları düzenleyerek de elde edebilirsiniz.

Aynen tesekkürler. Üzerinde biraz çalısacağım artık