Chatbot Tasarlarken Dikkat Edilmesi Gereken Noktalar
Merhaba VBO severler, yine bir chatbot yazısı ile karşınızdayım. İlk yazımda uzun bir yolculuk olacağını söylemiştim, bu yazı da o serüvenin bir parçası. Bugün size chatbot tasarlarken nelere dikkat etmemiz gerektiğinden bahsedeceğim.
Daha önceki yazılarımda chatbotun ne olduğuna ve nasıl tasarlandığına dair bilgiler vermiştim, bu yazımda o konulara girmeyeceğim ancak daha önceki yazılarımı okumayanlar için linklerini aşağıda bulabilirsiniz.
Gelelim chatbot tasarlarken nelere dikkat etmemiz gerektiğine. Ben bu yazımda IBM’in Watson Assistant API’ını dikkate alarak bilgiler vereceğim ancak öncesinde neymiş bu IBM Watson Assistant gelin ona bakalım.
“Watson, IBM tarafından geliştirilen ve doğal dilde sorulan sorulara cevap vermek için tasarlanan bir yapay zekâ programıdır. Adı, IBM’e önayak olan Thomas J. Watson’dan gelmektedir; Watson, IBM’in DeepQA araştırma projesinin bir parçası olarak geliştirilmektedir.” (Wikipedia)
IBM, Watson Assistant’ı 2010 yılında kullanıma sunmasına rağmen Watson, 2011 yılında Jeopardy yarışmasında kazanmış olduğu birincilikle ün kazandı. Watson Assistant bir süper zeka bilgisayar olarak tasarlandı ve içerisinde çok fazla algoritma var. Bu yazıda daha fazla detaya girmeden Watson ile ilgili aşağıya iki video bırakıyorum. Detaylı bilgi almak isteyen buradan Watson hakkında bilgilere erişebilir.
Gelelim chatbot tasarlarken nelere dikkat etmeliyiz madde madde ele alalım.
1- Öncelikle projenin kapsamının ne olduğuna iyice dikkat edilmesi gerekilmektedir. Yani bizden istenen chatbotun hangi konularda yardımcı olmasının istendiğini iyice anlayıp ona göre bir plan hazırlamamız gerekmektedir.
2- Proje kapsamı belirlendikten sonra intentlerin belirlenmesi ve analizinin yapılması gerekmektedir. Burada intent analizi yapılırken kullanılan API’da hangi algoritmalar kullanılmış bilinmesi çok önemli. Çünkü intentlerin içerisine tanımlanacak cümlelerin eğitim cümleleri olarak kullanılacağı unutulmamalı.
IBM, Watson Assistant API’ı içerisinde bir çok algoritma kullanmıştır. Bu nedenle intentlerin içerisinde eklenecek cümlelerin uzunluklarına, karakter sayılarına, kelimelerin TF-IDF’lerine kadar dikkat edilmesi gerekiyor. Her intentin kapsamı da kendi arasında ayrılması gerekmektedir aksi takdirde chatbot doğru intenti tahmin etmekte zorluk çekecek ve anlamadığına dair cevap döndürecektir.
İntent analizini yaparken şöyle düşünebilirsiniz; her bir intenti küme olarak gösterirsek bu kümelerin elemanları birbiri ile kesişmemesi gerekmektedir ve sınırlarının net bir şekilde belirlenmesi gerekmektedir. Ancak intentler arasındaki geçişlerin kolay olması açısından da birbirlerinden çok fazla ayrı olmamaları gerekmektedir.
3- İntentlerin içerisine eklenecek cümlelere karar verirken de çok dikkatli olmamız gerekmektedir. Müşteri gibi düşünüp chatbota nelerin yazılabileceğine dair geniş bir veriye sahip olmamız gerekiyor. Çok veri çok fazla problem demektir bu nedenle verilerin birbiri arasındaki benzerliklerine bakarak aynı verilerin olup olmadığına ve verilerin birbirlerine ne kadar benzer olup olmadıklarına bakılır. Burada kullanılabilecek çok fazla yöntem var ama ben size iki tanesinden bahsedeceğim. Jaccard benzerliği ve kosinüs benzerliği cümlelerin benzerliklerine dair fikir edinmemizi sağlayan iki güzel benzerlik yöntemleridir. Jaccard benzerliği iki cümlenin kesişiminin eleman sayısının bu cümlelerin birleşiminin eleman sayısına bölümüyle elde edilir. Kosinüs benzerliği ise cümlelerin uzunluklarına bakmadan vektörel olarak benzerliklerini verir bize. Her iki benzerlik yönteminde formüllerini aşağıya bıraktım iki benzerlik yöntemiyle de ileride birer uygulama yapacağız.
İntentlerimiz hazır olduğuna göre geriye diyaloğun tasarlanması ve entitylerimizin belirlenmesi kaldı. Bir sonraki yazımda uygulamayla diyaloğun nasıl tasarlanabileceğini ve entitylerin nasıl belirlenebileceğini uygulamalı bir şekilde anlatacağım. Bir sonraki yazımda görüşmek üzere veriyle kalın.