CEYD dili Nedir?

CEYD dili (CEnker.com Yapay Zeka Dili), sohbet robotu ile karşılıklı konuşma esnasında verilen sesli soruların tanımlanmasını ve bu komutlara robotun nasıl cevap vermesi gerektiğini belirleyen bir script dilidir.

Bu script dilini kullanıcılar web üzerinde, Android telefon ve tabletlerde çalışan CEYD-A uygulaması içinde veya web servis API’lerini kullanarak diğer platformlarda kullanıp uygulayabilirler.
CEYD dili fonksiyonları cevapların içine yazılır, robotun soruya karşılık nasıl bir cevap vermesi gerektiğini belirler.

Komutlar kullanıcılar tarafından oluşturulduğu için beyin hücreleri gibidir. Halihazırda 300 bin komut oluşturulmuştur ve bu hücreler birbirleriyle etkileşim içine girebildikleri için makine öğrenmesine yatkın bir yapıdadır.

KOMUT nedir?

Bir komutu, robota sorulan soruyu ve cevabı tanımlayan adımlar zinciri olarak tanımlayabiliriz. Komut, CEYD-A uygulamasının soru cevap yapısını belirleyen tanımdır. Komutlar, hem
CEYD-A içerisinde Menü->Hesaplar->CEYD-A
ile hem de web üzerinde https://kodla.ceyd-a.com adresinden kullanıcıya özgü tanımlanabilir. Bu tanımlar kullanıcı cihazlarından otomatik olarak algılanır ve yüklenir.
Komut tanımlama işlemi, aşağıda bahsi geçen 4 ana adım ile yapılmaktadır.

× Kasım 2019 itibariyle komutlar kod yazma ihtiyacı olmadan da geliştirilebilir. CEYD Blok Geliştirme yapısındaki yap boz mantığıyla blokları birleştirip komut oluşturabilirsiniz. Kodlar geliştirdiğiniz blok tasarımıyla otomatik sizin için oluşacaktır. Eğlenceli ve eğitici olan bu yöntemin kullanımı kod yazma gereksinimi olmadığı için çok basittir.

Kurgu Tasarlama Sayfası
CEYD-A'yı kod yazmadan geliştirmek

SORU KELİMELERİ

Söyleyeceğiniz cümle içinde bu kelime veya kelimelerden biri geçiyorsa komut devreye girer. Amacı bir bakıma kelimeleri indekslemektir.
Soru kelimelerini seçerken, söyleyeceğiniz cümlenin içinde muhakkak kullanılacak kelime veya kelime öbeklerini seçmeniz önerilir. Kelimenin yanına yazılacak öncelik değeri ile komutların çağırma önceliği belirlenebilir. Bu şekilde alternatif imkanlar sunulabilir.
Soru kelimelerine örnek:

Bu örnekte söylediğimiz cümlenin içinde okuyor musun veya içinde okulgeçen bir kelime olmalı. Başka deyişle, okula gidiyor musun dediğimizde içinde okul geçtiği için bu komutu kapsamaktadır. Okul kelimesinin sonundaki * işareti devamında başka bir ek gelebilir anlamındadır. okula,okuldan,okulu gibi kelimeleri içerir. Eğer * işareti eklemeden okul deseydik okula gidiyor musun bu komut için devreye girmeyecek ama okul eğitim yuvasıdır dediğimizde devreye girecekti. O sebeple * işareti kelimenin çeşitliliğini arttıran bir simgedir
Eğer aynı soru kelimeleri başka komut tanımlarında da mevcut ise, hangi komutun devreye gireceğini soru şablonu ve öncelikler belirler.

SORU ŞABLONU

Robota sorulabilecek sorunun cümle şablonu tanıtılır. Burada regex yapısı kullanılabilir. Ayrıca kolaylaştırmak için CEYD dilinin sunduğu ilave ifadelerde kullanılabilir veya boş bırakılabilir. Boş bırakılırsa her şablona uygun anlamına gelir. Kullanılması daha zengin komutlar oluşturulması için idealdir.
Regex tanımlarına ek olarak,
{ANY}
.*? regex ifadesi ile eşdeğerdir. Herhangi bir söz dizimidir. Olabilir veya olmayabilir. Cümlenin başında veya sonunda sizin konuya odaklanmayacağınız kelimeleri ifade eder.
({PAR1})
(.*?) ile eşdeğerdir. Herhangi bir söz dizimi olabilir veya olmayabilir ve bu söz dizimi cevapta kullanılmak üzere parametre olarak belirlenir. PAR1 gibi PAR2 de tanımlanabilir.
({SAYI1})
(\d*) ile eşdeğerdir. Parametre olarak bir sayı belirlenir. SAYI1 gibi SAYI2 de tanımlanabilir.
({KELİME1})
(\w*) ile eşdeğerdir. Parametre olarak bir kelime belirlenir. KELİME1 gibi KELİME2 de tanımlanabilir.
Örnek:
{ANY}({KELİME1}){NİN EKİ} maçı{ANY}
şablonu CEYD-A, FENERBAHÇENİN MAÇI NE ZAMAN? cümlesi ile boyalı kısımlarla örtüşmektedir.

Başka bir örnek olarak aşağıdaki ifade soru şablonuna girildiğinde,

eğer sorunuz 4 ile 3 topla ise, 4 ve 3 parametreler olarak algılanır ve bu parametreler {SAYI1} ve {SAYI2} olarak cevap şablonunda kullanılabilir. Örneğin cevap şablonu da şu şekilde olsun:

O zaman siz 5 ile 6 topla dediğinizde, robot size cevap şablonunda parametreleri eşleştirerek 5 ile 6 yi topmamı mı istiyorsun? der.

Soru şablonları ile ilgili detaylı bilgiye aşağıdaki linkten ulaşabilirsiniz:

Soru Şablonu Yapısı

CEVAP ŞABLONU

Robotun sözlü olarak size vereceği cevabı belirler. Düz cevap metni olabileceği gibi içine kod yazılmış metin de olabilir.
Verilebilecek cevaplar yine | işareti ile ayrıştırılarak tanımlanır. Soru şablonunda tanımlanan parametreler {KELİME1}, {SAYI1}, {PAR1} olarak kullanılabildiği gibi, soru şablonundaki ( ) parantez içindeki ifadeler, cevapta $1, $2 gibi de kullanılabilir. $1 ifadesi 1. parantez grubunu belirtmektedir.

Örnek 1:

İşte bu cevapların içine CEYD fonksiyonları istenirse eklenebilir. Ayrıca sorudan alınan parametreler de bir önceki adımda anlatıldığı gibi cümle içinde kullanılabilir.

Örnek 2:
Soru şablonu şu şekilde olsun:

Cevap şablonu da aşağıdaki gibi olabilir:

Soru şablonundan gelen parametreler { } işaretleri arasında tanımlanırken, cevap içinde oluşturulan değişkenler $ işareti ile başlar. CEYD fonksiyonları ise cevap cümlelerinin içinde {! !} işaretleri arasında tanımlanır.
RET, IF, SET, GET,EVAL, FOR fonksiyonları

  • RET fonksiyonu tanımlı bir komutun sonucunu döndürür.
  • IF fonksiyonu iki değeri karşılaştırır ve mantıksal sonuca göre değer döndürür
  • SET fonksiyonu bir değişkene değer atar. Bu değer uygulama kapalı olsa bile hafızada tutulur.
  • GET fonksiyonu değişken değerini döndürür.
  • EVAL fonksiyonu matematiksel işlem yapıp değerini döndürür
  • FOR döngüsü, içinde tanımlanan fonksiyonların döngü koşulu içerisinde tekrarlanarak çağrılmasını sağlar.
  • FOREACH döngüsü ile dizilerin ve anahtar değer ikilisi ile atanmış yinelemeli dizilerin değerleri alındığı sürece tekrarlı işlem yapar

Bazı örnekler:

Biraz daha komplike bir örnek vermek gerekirse, bir kur hesaplayıcı yazalım.

SORU ŞABLONU:

CEVAP ŞABLONU:

Bilindiği gibi soru şablonu regex formatındadır.() ile ayrılan gruplar, cevap şablonunda sırasına göre $1 $2 gibi ifade edilmektedirler. Burada $1 ( veya örnekteki {SAYI1} ) cevaptaki {SAYI1} grubuna karşılık gelmektedir. Yani 2 amerikan doları kaç lira denildiğinde 2, ({SAYI1}) ifadesine yani soru şablonundaki 1. gruba denk düşer. 2. parantezli grup amerikan dolarıdır. 3. parantezli grup ise kaç lira dır.
Bu şekilde düşündüğümüzde cevap şablonunda aynı değerler, {PAR1} veya bu örnekte {SAYI1} olarak atanmış -> 2 , {PAR2} -> amerikan doları olarak aynen kullanılabilir.
Cevap şablonunu bu değerlerle yorumlar isek, {PAR1}, {PAR2} değerlerini yazdığımızda cevap şu şekilde olacaktır:
2 amerikan doları {!EVAL{!RET amerikan doları!}*2!} TL dir
RET fonksiyonu hazır bir komutu çalıştırıp değerini döndürdüğünden, CEYD-A, hali hazırdaki komut yapısından amerikan doları dendiğinde 5.27 değerini döndürürecektir. Öyleyse, cevabımız yorumlanmaya devam ettiğinde sırasıyla
2 amerikan doları {!EVAL{!RET amerikan doları!}*2!} TL dir
2 amerikan doları {!EVAL 5.27*2!} TL dir
2 amerikan doları 10.54 TL dir.
cevabı oluşacak ve ekrana yansıyacaktır.

İŞLEM ŞABLONU

Eğer hazır bir komuta yeni soru cümleleri eklemek istiyorsanız bu adımı kullanabilirsiniz. Diyelim durumumu güncelle dediğinizde, CEYD-A sizi anlamıyor ve bu komutu dediğinizde hazırda olan CEYD-A’nın anlayabildiği facebook komutu ile aynı işlemi yaptıracaksınız. O zaman soru cümlesine durumumu güncelle, komuta yönlendir içine facebook tanımladığınızda artık durumumu güncelle dediğinizde facebook durumunuzu güncelleyebilirsiniz.
Daha komplike bir örnek ise, Kartal a nasıl giderim dediğinizde Kartal nerede komutunun çalışmasını istiyorsanız, soru şablonuna;

Soru kelimelerine;

NEREDE komutu hali hazırda olduğu için komuta yönlendir bölümüne;

yazmanız yeterli olacaktır. $1, parantezli ilk gruptur {PAR1} olarak tanımlanan kısımdır.

NASIL KOMUT YAZILIR ?

Komutlar buradaki videoda gösterildiği gibi kodlama ile veya kolayca kod yazmadan sesle söylenerek tanımlanabilir. Örneğin CEYD-A’ ya HAVADİSLERİ OKU DEDİĞİMDE HABERLERİ OKUYACAKSIN dediğinizde kendisi HAVADİSLERİ OKU komutunu oluşturur ve yapacağı işlem olarak HABERLERİ OKU işlemini atar.

CEYD dili ile yazılmış komutlardan bazı örnekler:

 

Bu yazıda CEYD dilinin neler yapabildiğinden bahsetmek istedim. Daha sonraki yazılarda basit tanımlamalardan başlayıp daha komplike tanımları içeren örneklerden bahsedeceğim.

Komut ekleme ile ilgili yardımcı bilgi ve videolara Komut Ekleme Nasıl Yapılır ? sayfasından ulaşabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.