ChatScript - ChatScript

ChatScript bir kombinasyon Doğal lisan motor ve diyalog yönetim sistemi başlangıçta yaratmak için tasarlandı sohbet robotları, ancak şu anda çeşitli NL işleme biçimleri için de kullanılmaktadır. Yazılmıştır C ++. Motor, adresinde açık kaynaklı bir projedir SourceForge.[1] ve GitHub.[2]

ChatScript, tarafından yazılmıştır Bruce Wilcox ve ilk olarak 2011'de, Suzette (ChatScript ile yazılmış) 2010'u kazandıktan sonra yayınlandı Loebner Ödülü, dört insan yargıçtan birini kandırıyor.[3]

Özellikleri

Genel olarak ChatScript, el yazısıyla yazılan sohbet robotlarının sınırlayıcı ölçeklenebilirliği, komut dosyasının ne kadar / hızlı yazılabileceğidir.

ChatScript etkileşimli konuşma için tasarlandığından, voleybollar arasında kullanıcı durumunu otomatik olarak korur. Voleybol, kullanıcının aynı anda girdiği herhangi bir sayıda cümledir ve sohbet robotlarının verdiği yanıttır.

Komut dosyası yazmanın temel öğesi kuraldır. Bir kural, bir tür, bir etiket (isteğe bağlı), bir model ve bir çıktıdan oluşur. Üç tür kural vardır. Kumar, sohbet robotunun konuşmayı kontrol ettiği zaman söyleyebileceği bir şeydir. Yanıtlar, sohbet botunun az önce söylediklerine bağlı bir kullanıcı açıklamasına yanıt veren kurallardır. Yanıt verenler, sohbet botunun az önce söylediklerine bağlı olması gerekmeyen, keyfi kullanıcı girdisine yanıt veren kurallardır. Modeller, bir kuralın hangi koşullar altında çalışabileceğini tanımlar. Kalıplar son derece basitten çok karmaşıklığa kadar değişir (Regex'e benzer, ancak NL'yi hedefler). Yoğun kullanım, tipik olarak, bir anlamı paylaşan kelimelerin listeleri olan kavram kümelerinden yapılır. ChatScript, 2000 kadar önceden tanımlanmış kavram içerir ve betikler kolayca kendi kavramlarını yazabilir. Bir kuralın çıktısı, kullanıcıya gönderilecek değişmez kelimeleri ortak C tarzı programlama kodu ile karıştırır.

Kurallar, konular adı verilen koleksiyonlarda toplanır. Konular anahtar kelimelere sahip olabilir, bu da motorun konuyu kullanıcı girdisine dayalı olarak alakalı kurallar için otomatik olarak aramasına olanak tanır.

Örnek kod

Konu: ~ yemek (~ meyveli meyveli yemek) t: En sevdiğiniz yemek nedir? a: (~ meyve) Meyveyi de severim. a: (~ metal) Heavy metal müziğini yemektense dinlemeyi tercih ederim.?: WHATMUSIC (<< hangi müzikten hoşlanırsın >>) Rock müziği tercih ederim. eğer (_0 == ülke) {Ülkeyi sevmiyorum.} yoksa {Ben de öyle.}

~ İle başlayan kelimeler kavram kümeleridir. Örneğin, ~ meyve, bilinen tüm meyvelerin listesidir. Basit desen (~ meyve), sohbet robotu en sevdiğiniz yemeği sorduktan hemen sonra herhangi bir meyveden bahsedilirse tepki verir. WHATMUSIC etiketli kural için biraz daha karmaşık kalıp tüm ne, müzik, siz ve beğenilecek herhangi bir kelime veya kelime öbeği anlamını gerektirir, ancak bunlar herhangi bir sırayla ortaya çıkabilir. Cevap verenler üç tipte gelir. ?: kurallar kullanıcı sorularına tepki verir. s: kurallar kullanıcı ifadelerine tepki verir. u: kurallar her ikisine de tepki verir.

ChatScript kodu, standart değilse, döngüleri, kullanıcı tanımlı işlevleri ve çağrıları ve değişken atama ve erişimi destekler.

Veri

ChatScript'teki bazı veriler geçicidir, yani mevcut voleybolun sonunda kaybolacaktır. Diğer veriler kalıcıdır ve açıkça öldürülene kadar sonsuza kadar sürer. Veriler tek bir kullanıcı için yerel olabilir veya bot düzeyinde tüm kullanıcılar arasında paylaşılabilir.

Dahili olarak tüm veriler metin olarak temsil edilir ve gerektiğinde otomatik olarak sayısal bir forma dönüştürülür.

Değişkenler

Kullanıcı değişkenlerinin birkaç türü vardır. Bir konu veya işleve tamamen yerel olan değişkenler geçicidir. Global değişkenler geçici veya kalıcı olarak ilan edilebilir. Bir değişken genellikle yalnızca onu kullanarak bildirilir ve türü önekine ($, $$, $ _) bağlıdır.

$ _local = 1, atanan yerel bir geçici değişkendir, 1 $$ global1.value = "hi" bir JSON nesnesi olan geçici bir global değişkendir $ global2 + = 20 kalıcı bir global değişkendir

Gerçekler

Değişkenlere ek olarak, ChatScript gerçekleri de destekler - verilerin üç katı, bunlar da geçici veya kalıcı olabilir. Fonksiyonlar, bazı alanların belirli değerlerine sahip gerçekleri sorgulayabilir ve bu da onları bir bellek içi veritabanı gibi hareket ettirir. Bilgi alma çok hızlı ve verimlidir, mevcut bellek içi gerçeklerin sayısı, büyük ölçüde ChatScript motorunu çalıştıran makinenin kullanılabilir belleğiyle sınırlıdır. Gerçekler, kayıt yapılarını temsil edebilir ve ChatScript'in JSON'u dahili olarak nasıl temsil ettiğidir. Uygun gerçekleri oluşturmak için bilgi tabloları tanımlanabilir.

tablo: ~ mucitler (^ kim ^ ne) yarattıkları (^ kim icat etti ^ neyi) VERİ: "Johannes Gutenberg" "matbaa" "Albert Einstein" ["Görelilik Teorisi" foton "Genel Görelilik Teorisi"]

Yukarıdaki tablo, insanları icat ettiklerine (satır başına 1) bağlarken, Einstein yaptığı şeylerin bir listesini alıyor.

Dış İletişim

ChatScript, Curl kitaplığını yerleştirir ve JSON'daki gerçekleri doğrudan okuyabilir ve bir web sitesine yazabilir.

Sunucu

Bir ChatScript motoru yerel veya sunucu modunda çalışabilir.

Pos-tagging, ayrıştırma ve ontoloji

ChatScript, İngilizce'nin bir kopyasıyla birlikte gelir WordNet dahil olmak üzere içine ontoloji kavram bildirimleriyle kendi ontolojisini yaratır ve genişletir. İngilizce bir pos-tagger ve ayrıştırıcıya sahiptir ve bir dizi başka dili etiketlemek için TreeTagger ile entegrasyonu destekler (TreeTagger ticari lisansı gereklidir).

Veritabanları

Dahili bir olgu veritabanına ek olarak, ChatScript şunları destekler: PostgreSQL ve MongoDB hem komut dosyalarıyla erişim için, hem de istenirse merkezi bir dosya sistemi olarak da ChatScript yatay olarak ölçeklenebilir. Yaygın bir kullanım örneği, kullanıcı dosyalarını barındırmak için merkezi bir veritabanı ve ChatScript motorunu çalıştırmak için birden çok sunucu kullanmaktır.

JavaScript

ChatScript ayrıca, ES2015 + 'dan güncellenen bazı semantiklerle DukTape, ECMAScript E5 / E5.1 uyumluluğunu da içerir.

Kontrol akışı

Bir sohbet botunun kontrol akışı, kontrol komut dosyası tarafından yönetilir. Bu sadece motorun API işlevlerini çağıran sıradan bir kural konusudur. Böylece kontrol, betikçi tarafından tamamen yapılandırılabilir (ve motora iç gözlem yapılmasına izin veren işlevler mevcuttur). Özel işleme için ön işleme kontrol akışı ve işleme sonrası kontrol akışı seçenekleri mevcuttur.

Referanslar