Microsoft LUIS ile Basit Çağrı Merkezi Chatbot Uygulaması

Furkan Alaybeg
5 min readJul 1, 2022

--

Bu yazımda Microsoft LUIS servisinin ne olduğu, nasıl kullanılacağı ve bu servisi kullanarak geri bildirim ve şikayet niyetlerini anlamlandıran basit bir çağrı merkezi senaryosunu adım adım nasıl geliştirebileceğimiz hakkında yazmaya çalışacağım.

Bir önceki yazımda chatbot teknolojisinin ne olduğu ve nerelerde kullanıldığına dair yazmaya çalıştım. Bu yazımda çağrı merkezinde kullanılacak basit bir chatbot projesinin Microsoft Cognitive Services ile nasıl geliştirileceği üzerine yazacağım. Projede; LUIS servisinin oluşturulması, geri bildirim ve şikayetleri toplamada kullanılacak niyet (intent) bilgilerin girilmesi, servisin eğitilmesi ve canlıya alma gibi bölümleri adım adım anlatmaya çalışacağım.

Microsoft LUIS (Language Understandin Intelligent Service), girilen metinden anlam ve ilgili ayrıntı bilgi çıkarmak için kullanıcının konuşması ve doğal dil metnine makine öğrenmesi uygulayan bulut tabanlı bir yapay zeka servisidir. NLP servisini kullanarak doğal dili anlayabilen uygulamalar oluşturabiliriz. Bu uygulamalar arasında karşı tarafa bir insan olduğu hissini veren chatbot uygulamaları da yer almaktadır. Chatbot’ların çalışma yapısını bir önceki yazımdan inceleyebilirsiniz.

LUIS servisini kullanarak girilen metnin/ifadenin amacını öğrenebiliriz. Örnek verecek olursak kullanıcı “Randevu almak istiyorum” ifadesi ile Randevu almak istediği anlaşılmaktadır. Bu gibi ifadeleri chatbot tarafından anlaşılmasını istiyorsak bir NLP servisi kullanmamız gerekmektedir. LUIS servisi ile kullanıcının chatbot’a yazdığı ifadeden RandevuAlmak ile ilgili bir niyet anlamı çıkarılır.

LUIS NLP Servisi bize ne sunmaktadır ?

  • LUIS kullanıcının akıllı seçimler yapmasına olanak tanıyan bir zeka sunmaktadır.
  • Microsoft arayüzü kullanarak kendimize özgü dil modelleri geliştirebiliriz.
  • Önceden tanımlanmış veri setini kullanarak girilen metnin/ifadenin amacını öğrenmek istiyorsak LUIS kullanılabilir.
  • Makine öğrenimine dayalı tekniğiyle bir kişiye öğrettiğimiz gibi dil modellerini eğitilebiliriz.

Çağrı Merkezi Chatbot Senaryosu

Çağrı merkezi kapsamında çok fazla etkileşim olduğu durumlarda personel tarafından çağrı taleplerine cevap vermekte zorluklar yaşanmaktadır. Bu nedenle çağrı merkezi tarafında yüzlerce, binlerce talebin amacını anlamlandırıp eş zamanlı karşılayacak bir çözüm gerekmektedir. Bu kapsamda talepleri karşılayacak sohbet robotu (chatbot) teknolojisinin uygulanması düşünülmektedir. Böylece basit bir chatbot projesi geliştirilerek geri bildirim ve şikayet taleplerin 7/24 kesintisiz aynı anda karşılanması hedeflenmektedir.

1. Üyelik İşlemleri

LUIS kullanabilmek için Azure hesabı üyeliğimizin olması gerekmektedir. Eğer mevcut hotmail/outlook hesabımız varsa doğrudan giriş yapabiliriz. Mevcut bir hesabımız yoksa “Create One — Yeni Oluştur” kısmından gerekli bilgileri girerek aşağıda resimde gösterildiği gibi yeni bir üyelik oluşturmamız gerekmektedir.

Ardından oluşturulan hesap ile LUIS servisini kullanmak üzere giriş yapıyoruz. Böylece aşağıdaki gibi bir LUIS ana ekranı bizi karşılıyor olacaktır.

2. Yeni bir LUIS APP oluşturma

Üyelik işlemleri tamamlandıktan sonra, yeni bir LUIS uygulaması oluşturmak üzere “New App — Yeni Uygulama” kısmına tıklıyoruz. Burada chatbotu hangi dilde kullanmak istiyorsak Culture kısmında kullanacağımız o dilin seçilmesine dikkat etmek gerekmektedir. Açılan ekranda uygulamanın ismini (Name), Culture kısmında hangi dilde kullanmak ve eğitmek istediğimizi, Description kısmında projenin hangi amaçla kullanıldığında dair kısa bir açıklama bilgisi ve son olarakta Azure Portal üzerinde oluşturduğumuz sunucu kaynağını Pediction resource kısmında seçip “Done — Tamam” ile yeni bir uygulama oluşturmuş bulunmaktayız. Oluşturduğumuz “Call-Center” isimli Luis uygulaması, ana ekranda aşağıdaki gibi görünecektir.

3. Yeni bir intent oluşturmak

CallCenter_Service isimli çağrı merkezi uygulamasını kullanmak üzere kullanıcı tarafından girdilere uygun niyetlerin oluşturulması bu aşamada gerçekleştirilmektedir. Kullanım senaryosundan yola çıktığımızda aşağıdaki niyetler oluşturulmaktadır:

  • Feedback (Geri Bildirim): Kullanıcıların geri bildirim vermek için yapmış olduğu girdi cümlelerini içermektedir.
  • Complaint (Şikayet): Kullanıcının çağrı merkezi aracılığıyla şikayetlerini iletebilmesi için örnek girdi cümle/sorularını içermektedir.
  • Greeting (Selamlama): Kullanıcının selamlamayla ilgili yaptığı girdi cümleleri içermektedir.
  • None: Belirtilen None niyetinde girdiye uygun olmayan tanımlanmayan cümle/sorular tanımlanabilir.

“Create — Oluştur” kısmına tıklayarak ilgili niyet ismi girilip yeni bir niyet oluşturulur. Projemizde kullanacağımız tüm niyetleri oluşturana kadar yukarıdaki süreç tekrarlanır. Tüm niyetler oluşturulduktan sonra niyetlere karşılık gelebilecek soru veri seti hazırlanır. Feedback (geri bildirim) niyetine tıklanarak kullanıcıların niyetini tahmin etmek üzere farklı soru türleriyle beslenir. Bu süreç tüm niyetlere ait olası sorular belirlenene kadar tekrarlanır.

Örneğin Feedback (geri bildirim) niyetini algılamak için “how to give feedback about services — hizmetler hakkında nasıl geri bildirim verilir”, “give feedback — geri bildirim ver”, “i want to give feedback — geri bildirim vermek istiyorum”, vb… soru türleriyle zenginleştirilir. None niyetinde ise hiçbir soru tahmin edilmediğinde yönlendirilecek niyeti veya cevap vermesini istemediğimiz tanımlanamayan niyetleri içerir. Aşağıda Feedback niyetine ait girilen soru örnekleri verilmiştir.

4. Egitim ve Test Süreci

Tüm ihtiyaç duyulan niyetler ve sorular oluşturulduktan sonra modelimizi eğitmemiz gerekmektedir. Yukarı resimde görüldüğü üzere Train butonuna tıklayıp modelin eğitim süreci başlar. Model eğitildikten sonra artık NLP mekanizması kullanıma hazırdır. Başarısını ölçmek üzere LUIS servisinin bize sağladığı test ortamında modelimizi aşağıdaki gibi test ediyoruz. LUIS servisi, kullanıcı tarafından girilen soru veya ifadenin hangi niyete ait olduğunu benzerlik skoru ile birlikte tahmin etmektedir. Örneğin “i have complaint” ifadesi 0.682 skorla (%68.2) Complaint niyetine ait olduğu tahmin edilirken “hello” ifadesinin 0.97 skorla Greeting sınıfına ait olduğu tahmin edilmiştir.

5. Deployment (Canlıya Alma)

Başarıyla tamamlanan test sürecinden sonra canlı ortamda kullanmak üzere projemizi yayına almamız gerekmektedir. Sağ üst köşede Publish kısmına tıklayarak projeyi aşağıdaki gibi canlıya alabiliriz. Bu kısımda Staging Slot ve Production Slot olmak üzere iki farklı yayın seçeneği bulunmaktadır. Bununla birlikte modeli dil servisleriyle entegre etmek istendiğinde, Duygu Analizi (Sentiment Analysis) ve Text to Speech (Speech Priming) gibi seçenekleri aktif etmemiz gerekmektedir.

Staging Slot: LUIS uygulamasını geliştirmeye devam etmek ve yeni şeyler eklemek istediğimizde son kullanıcıların kullandığı canlı ortamı (Production Slot) bozmadan LUIS modelini test etmeyi amaçalar.

Production Slot: Son kullanıcılar tarafından canlı ortamda kullanılacak LUIS modelinin kararlı/son sürümünü içermektedir. Projemizde artık geliştirme yapmayacağımızdan ve son kullanıcıya yönelik geliştirdiğimizden dolayı yayın kısmı Production Slot olarak seçiyoruz.

Son olarak Manage → Azure Resources kısmından canlıya aldığımız modelin kaynak grubu, lokasyon, api key, endpoint ve ücretlendirme gibi bilgilerine ulaşıp sosyal medya (Whatsapp, Telegram, Slack, MS Team, vb…) gibi diğer uygulamalarımız ile entegre edebiliriz.

Umarım faydalı bir yazı olmuştur.
Gelecek yazılarda görüşmek dileğiyle…

--

--

Furkan Alaybeg

Big Data Engineer | SQL | PySpark | Hadoop | Apache Airflow | Apache Flink