Azure AI Cognitive Services

Azure Cognitive Services ile Yapay Zekaya (AI) Değil İşinize Odaklanın

2022-02-02 Abdullah Kise

Microsoft yıllardır veri bilimi konusunda ar-ge faaliyetleri yürütüyor ve bu faaliyetler neticesinde ortaya çıkan çeşitli ürün, araç, teknik ve teknolojileri kullanıcılarına sunuyor.

Microsoft'un Makine Öğrenimi (ML) ve Yapay Zeka (AI) alanlarında hem yerel hem de bulut çözümleri mevcut. Özellikle bulut çözümleri oldukça yetenekli ve geniş kullanıcı/geliştirici kitlesine hitap edecek nitelikte.

Bu yazımızda Microsoft'un Cognitive Services olarak isimlendirdiği yapay zeka servislerine odaklanalım istiyorum.

Öncelikle bazı terimlerde hem fikir olalım isterim:

Yapay Zeka (AI - Artificial Intelligence) ile kastımız; bir insanın yapabildiği bazı işleri kendi başına yapabilen otomatize bir mekanizmadır. Bazen temel bazı matematiksel formüller ile bazen de Makine Öğrenimi (ML), Derin Öğrenme (DL) çalışmaları neticesinde bu mekanizmaları elde edebiliriz.

Makine Öğreniminde (ML - Machine Learning) ile kastımız; bir kısmı 1950'lerden beri kullanılan bazı algoritmalar ile veri yığınlarını işlemek ve yığınlar içerisinde bir desen, bir eğilim elde etmek, sonuç itibari ile bu desen ve eğilimleri matematiksel olarak ifade etme konusunda çalışmalar yürütmektir.

Derin Öğrenme (DL - Deep Leaarning) ile kastımız; ML çalışmalarının bir alt dalı diyebileceğimiz özellikle neural network algoritmalarına odaklandığımız, insan gibi anlayan ve üreten yapay zekalar elde etmeyi amaçladığımız özel bir çalışma alanıdır.

Microsoft'un Cognitive Services çatısı altında topladığı Azure hizmetleri, büyük veri kümeleri ve güçlü algoritmalar ile çalışılarak elde edilen, çoğu hazır bir kısmı ise özelleştirmeye açık olan ve günümüz ihtiyaçlarına nokta atışı cevaplar üreten önemli yapay zeka hizmetleridir.

Cognitive Services çatısı altında Speech, Language, Vision, Decision kategorilerine ayrılmış 15 hizmet ve bunların altında da bir çok alt yetenek yer almakta.

Bu hizmetleri Azure portal üzerinden tek tek aktif edip ayrı endpoint bilgileri ile kullanabildiğimiz gibi sadece Cognitive Services hizmetini aktif edip bir çok kritik hizmet için tek bir endpoint bilgisi ve yönetim noktası oluşturabiliriz.

Yapay Zeka hizmetlerinin her birine erişim için REST API mevcut. Ek olarak Python, C#, Java, NodeJS, JavaScript, Java, GO gibi diller için bazı SDK'lar da yayınlanmış durumda. Servisleri oluşturduktan sonra overview sayfalarındaki basit yönlendirmeleri takip ederek hızlıca kullanmaya başlayabilirsiniz.

Ayrıca bazı hizmetler için Container imageları indirebilir Azure veya yerel kaynaklarınızı daha fazla iş yükünü karşılayabilmek için kullanabilirsiniz. Docker, Azure Container Instance, Azure Kubernetes Service vs.

Hadi gelin Cognitive Services çatısı altında geçen hizmetlere bir göz atalım:

Speech

Bu kategorideki hizmetler konuşmaya odaklanıyor.

Language

Bu kategorideki hizmetler dile özgü çalışmaları içerir. Duyguları, niyeti önemli nesneleri tanıma ve çeviriye odaklanır.

  • Entity Recognition: Kişi, tarih, mekan, anahtar ifadeler ve duygu tespiti yapar. ML çalışma sürecine girmeye gerek kalmadan kolayca eğitilip özelleştirilebilir.
  • Sentiment Analysis: Metindeki duyguyu (pozitif-negatif) anlamayı sağlar.
  • Question Answering: Özellikle chat bot yaparken lazım olan önemli bir hizmet. Öncelikle soru-cevap veya benzer mantıkta başlık-açıklama biçiminde verilerle bir knowledgebase oluşturuyoruz. Hizmetin eğitimi tamamlandıktan sonra herhangi bir soru cümlesi girildiğinde bu metin knowledgebasedeki başlık veya sorulara benzetiliyor ve ilgili cevap yine knowledgebaseden veriliyor. Knowledgebasee alternatif sorular girerek daha anlayışlı bir hizmet ortaya çıkarabiliyoruz.
  • Conversational Language Understanding: LUIS hizmetinin bir yeni neslidir. Bu hizmet de özellikle chat yapımında kullandığımız önemli bir yapay zeka hizmetidir. Kurulan cümlelerdeki anahtar nesneleri ve niyetleri ortaya çıkarır. Daha önce tanımladığımız niyetler ve nesneler için ne yapacağımız konusu artık bize kalır.
  • Translator: 100'den fazla dil arasında çeviri yapma imkanı verir. Dilerseniz belli bir konuda daha iyi çeviri için eğitebilirsiniz.

Vision

Bu kategorideki hizmetler resim ve video içeriklerini analiz eder ve nesneleri tanır. Ayrıca insan yüzü ve duyguları hakkında bilgi verir.

Decision

Bu kategorideki hizmetler kişiselleştirme, içerik yönetimi ve potansiyel problemleri ön görmeye odaklanıyor.

Bu hizmetlerin alt yetenekleri de mevcut. Yani burada özetlediğimden çok daha fazlasını yapabilirsiniz.

Şimdi bir hizmet üzerinden bu hizmetlere nasıl kullanabileceğimizi görelim.

Örneğimizde Cognitive Services oluşturup bu çatı altındaki Translator hizmetinine REST API çağrısı oluşturacağım. Bu aslında neredeyse her dilde ve her platformda söz konusu hizmetlerle çalışabileceğimiz anlamına geliyor.

Bu örnekteki amacımız girilen metnin hangi dile ait olduğunu Translator hizmeti ile tespit etmek.

Öncelikle Azure Portal üzerinden (portal.azure.com) Cognitive Services hizmetini oluşturuyorum. Hizmeti oluşturma sayfasında bu hizmete özel olarak hizmetin oluşacağı bölgeyi, hizmetin ismini ve fiyatlandırma seçeneğini belirtmeniz yeterli.


Cognitive Services hizmeti oluştuktan sonra hizmetin sayfasına geçersek soldaki menuden "Keys and Endpoint" ile açılan sayfada post talebini oluşturabilmek için gerekli olan bilgilere ulaşabiliriz.

Bu bilgileri kullanarak Python ile bir çağrı oluşturacağız. Yapacaklarımızı özetleyelim:

  • request kütüphanesi ile post talebi oluşturacağız.
  • post talebi oluştururken 'header'da key ve içerik tipini json olarak belirtiyoruz. Hizmet url'ini bir kaç farklı şekilde elde belirtebilirsiniz. Bunun için dokumantasyonu incelemek faydalı olacaktır. Amacımıza uygun çağrıyı üretebilmek için body kısmında ise aşağıdaki gibi bir json metin hazırlamamız gerekecek.
    • "{'documents': [{'id': 0, 'text': 'Merhaba Dünyalı?'}]}"
  • Post isteğimizi gönderip dönen cevabı dict nesnesi olarak elde edelim.

İsteğin özüne odaklanırsak aşağıdaki gibi bir kod yardımıyla hizmeti kullanabilirsiniz.

#istek oluşturabileceğim kütüphaneyi çalışma ortamına alıyorum.
import requests

#-----------
#istek için header, url, body gerekli.
location = "eastus"
key_endpoint="383a-------bee---ds--123"

service_url = f"https://{location}.api.cognitive.microsoft.com/text/analytics/v3.0/languages"

header = {
            "Content-Type":"application/json",
            "Ocp-Apim-Subscription-Key":key_endpoint
}

#-----------
#Hangi dilden olduğunu merak ettiğimiz metin.
text = "Merhaba Dünyalı?"

#body json formatında olmalı. Dokumantasyonda istendiği şekilde bir body hazırlamalıyız.
body_dict = {"documents":[{"id":0 , "text":text}]}
str(body_dict) #dokumantasyonda böyle isteniyor. 
#"{'documents': [{'id': 0, 'text': 'Merhaba Dünyalı?'}]}"
#-----------

#İstek gönderilsin ve cevabı alalım
istek = requests.post(service_url, headers=header, data=str(body_dict).encode("utf-8"))
dict_istek = istek.json() #dict   

#-----------
dict_istek.get("documents")[0]["detectedLanguage"]["name"] #Turkish

#-----------
#status_code ve raise_for_status ile statusa göre işlem yapılabilir.
#istek.status_code #isteğin durum kodlarını alabiliriz. Mesela 200 ise her şey yolunda demektir.
#istek.raise_for_status() #hata varsa raise hata gibi ortaya çıkarır.

Bu yetenekli yapay zeka servisleri ile çalışmak oldukça kolay. Üstelik bir kısmını özelleştirerek tam da ihtiyacınıza uygun şekilde çalışmasını sağlayabilirsiniz.

Bu hizmetler sayesinde uygulamalarınızı, cihazlarınızı akıllandırabilir, yapay zekayı amaç haline getirmek yerine araç olarak kullanır, ürünlerinizin işlevselliğine odaklanabilirsiniz.