Akıllı ChatBot Uygulamaları Geliştirme 3 – LUIS’e Türkçe Doğal Dil Anlama Özelliği Ekleme

Geliştiricilerin son zamanlarda en çok konuştuğu konu olan ChatBot uygulamalarına, zeki özelliklerin nasıl katılacağını göreceğimiz örneklerle devam ediyoruz. ChatBot serimizin ilk iki yazısını kaçıranlar

Bu yazıda ise İngilizce haricinde kendi dilinizde anlayan bir chatbot’un nasıl entegre edileceğini birlikte inceleyeceğiz. İkinci yazımızda gördüğümüz Doğal Dil İşleme ve Anlama servisi olan LUIS.AI entegre edildikten sonra LUIS tarafından şu anda desteklenmeyen Türkçe dil anlama özelliğinin eklenmesine hep beraber bakalım.

Temelinde İngilizce’ye tercüme edilen cümlelerde LUIS’in sadece hangi method’un çalışmasını bulacağı Intent ve bu method’un içerisinde hangi parametreyi göndereceği Entity ‘leri bulmamız gerekecek. Bunu da yapmamızı sağlayacak en önemli araçlardan birisi de Translator olacaktır.

Aşağıda bir araç kiralama sorgusu örneğinde görüldüğü gibi temel amaç Token adını verdiğimiz cümle içerisinden yakalayabildiğimiz parametrelerin yakalanması.

Bu Tokenlar haricinde tercümelerde meydana gelecek küçük hatalar, aslında projemizin çalışmasına etki etmeyecektir.

 Azure üzerinden Microsoft Text Translator API Key’i alma

Bu bot örneğimizde Microsoft Translator Text API servisini kullanacağız. Bu servis REST API altyapısı sayesinde ister websitenizde ister mobil uygulamanızda ister diğer platform uygulamalarında çoklu dil desteği vermeyi sağlayan bir yapıya sahiptir. Tüm cihazlara ve uygulamalara entegre edeceğimiz bu servis hakkında detaylı bilgileri Microsoft Text Translator API adresinde bulabilirsiniz.

Microsoft Translator API’a başlangıç

Microsoft Translator Text API key’ine erişebilmek için Microsoft Azure hesabınız olması gerekiyor. Hesap edinmek için aşağıdaki adımları takip edebilirsiniz:

  1. Microsoft Azure hesabı oluşturmak için http://azure.com adresine giderek yeni bir hesap oluşturun.
  2. Hesabı oluşturduktan sonra http://portal.azure.com adresine erişin.
  3. Ürünler menüsünden New seçeneğini seçin.
  4. AI + Cognitive Services kategorisini seçin.
  5. Sağ üst köşeden See All ‘a tıklayın.
  6. Translator Text API seçeneğini seçin.
  7. Create butonuna tıklayın.
  8. Karşınıza çıkan alanları doldurun.
  9. Pricing Tier bölümünde size uygun olan seçeneği seçin.
  10. Create butonuna tıklayın.
  11. Şu anda Microsoft Translator’a üye olun.
  12. All Resources içerisinden oluşturduğunuz Translator API’ı seçin.
  13. Keys bölümünden Key içeriğini alın.

Buradan elde edeceğiniz API key’i projede bulunan MessagesController.cs içerisinde aşağıdaki ApiKey değişkeni içerisine yazarak Microsoft Text Translator ile entegrasyonunu sağlayabilirsiniz.

Post method’u altında aşağıda olduğu gibi gelen mesaj direkt olarak translator’a gönderilerek dönen sonucu da LUIS’le anlamlandırılması sağlanmaktadır.

Proje’nin içerisine Authentication aşağıdaki gibi yapılabilmektedir.

Projenin içerisinde REST API ile translate aşağıdaki gibi yapılabilmektedir.

Bu entegrasyon sayesinde Türkçe cevap soru soracağınız chatbot’unuz bunu anlamlandırıp istediğiniz Intent’e karşılık gelen method’u çalıştırabilmektedir.

Tercüme esnasında yanlış algılanan kelimelerin algılanması

Bu entegrasyonda bazı kelimeler Translator tarafından yanlış çevrildiğinde bunları tespit etmek ve düzeltmek için LUIS’e sorgu olarak giden cümleleri kontrol edebiliriz. Intent ‘in altında Suggested Utterances bölümünde beliren bu sorgular, kullanıcıların Türkçe sorduğu ve İngilizce olarak sisteme yansıyan cümleler olduğunu göreceğiz.

Burada yöntemlerden birisi bu çevirileri LUIS içerisinde doğru bir şekilde tag’lemek sistemi yeniden eğitmek. Bir diğer yöntemse her orijinal sorguyu ve tercümeyi Azure üzerine kaydederek kullanıcıların sormuş oldukları orijinal mesajları tespit etmek diyebiliriz; bu sayede son kullanıcıların soru yöntemlerini ve kullanımlarını görerek de sistemi yeniden eğitebilirsiniz.

Kod’un emülatör üzerinde çalışması

Uygulamamızın çıktısı aşağıdaki gibi çalışmaktadır.

Bu örnekte de gördüğümüz gibi, LUIS entegre edilmiş bir uygulamamıza Türkçe Dil Desteğinin nasıl eklenebileceğini gördük. Eğer uygulamanızın kapsamı belirli ise bu tür bir implementasyonla hızlı bir şekilde uygulamanızı elde edebilir ve testlere başlayabilirsiniz. Sonuçları tatmin edici seviyede train ettikten yani eğittikten sonra son kullanıcılarınızla da paylaşabilirsiniz.

Bitirirken

Bu 3 yazılık örnek serisinin sonunda, bu tür chatbot projelerinde en önemli nokta senaryoların önceden çıkarılıp, LUIS ile NLP yapılarının bu soruları da kapsayacak şekilde design edilmesi, sonrasında da son kullanıcılardan gelen sorularla sistem eğitilerek zeki bir yapı oluşturulmasıdır.

Sonraki adımlarda daha nokta atışı arama yapabilmek için, Azure Search, Azure Machine Learning benzeri servisleri entegre ederek sonuçları daha doğru oranlarda son kullanıcılara sunabiliriz.