Microsoft ProjectOxford ile Duygu Tespiti

0
480

Microsoft’a ait emotion detected ( duygu tespit ) servisini kullanarak basit bir app geliştirdim. Bu servisin nasıl kullanılacağı konusunda kaynak olarak orjinal sitesi yeterli aslında ama istedim ki türkçe olarakta bir kaynak olsun elimizde. Bunu bir makaleye çevirelim dursun kenarda ihtiyacı olan arkadaşlara lazım olur. Tüm api kullanımlarında olduğu gibi bir key üreterek başlıyoruz işe. Onu şu linkten yapıyoruz.

Artık basit uygulamamızı geliştirmeye hazırız. Bir PHP sayfamız olsun ve buraya bir resim upload edelim. Upload ettiğimiz bu resmi Emotion API’ye işleme verelim ve bize bu resmin yansıttığı duyguyu oranları ile beraber versin. Formumuzun bulunduğu sayfa ( index.php )

 

Standart HTML taglarını yazmıyorum siz bir standart HTML sayfası içerisine bunları yazıp CSS ile de stil verebilirsiniz. Sonra bu upload işlemini gerçekleştirecek Javascript ve PHP kodlarını yazalım. Javascript ve upload yanyana pek anlam verememiş olabilirsiniz ? olsun bir önemi yok. Sadece bir button ile formu post etmek yerine seçer seçmez resmi change event ile post edip arka planda upload işlemini yaptıracağız. Bir fark yok. Ancak javascript kodlarımızı biraz açıklayacağım makale sonunda çünkü resim upload edildikten sonra arka planda upload ettiğimiz resmi emotion apiye gönderiyoruz ve işleme sokup sonucunu JSON datası olarak alıyoruz. Javascript kodlarımız ;

 

Sonrasında da bu javascript kodlarımız ile gönderdiğimiz dataları işleyen PHP kodlarımızı verelim. ( proccess.php )

 

Şimdi yukarıdaki kodları açıklayalım biraz. Bir HTML file input var. 2 adette durumu göstermek için divlerimiz var. HTML file input ile resmi seçer seçmez javascript kodlarımızda da göreceğiniz üzere change event içerisinde bir takım kodlar çalıştırıyoruz. Burada yüklemek üzere seçilen dosyanın resim mi olduğunu kontrol ettiriyoruz ve eğer resim değil ise upload_status divimiz içerisine dosya tipi desteklenmiyor yazıyoruz. Aksi halde uygun olarak kabul edilip oluşturduğumuz FormData(); nesnemizin içerisine append ediyoruz ve ajax isteği oluşturarak process.php sayfasına gönderiyoruz. Ajax isteğimizin beforeSend kısmında yükleniyor yazıyoruz. Bu çok önemli değil ama işlemi takip edebilmemiz açısından yazılması iyi olur.

Sonra success kısmında ise esas işleme geçiş için biletimiz olmuş oluyor. Yani resim yüklenmiş Emotion API’ye gönderilmeye hazır konumdadır. Div içerisine yüklendi uyarısını verip Emotion API’ye bir ajax isteği oluşturuyoruz. ( https://api.projectoxford.ai/emotion/v1.0/recognize ) Bu linke resmimizi iletiyoruz. ( { “url”: “./uploads/’+up_image+’” } ).  Ancak beforeSend kısmında header oluşturuyoruz ve makalemizin başında verdiğim linkten oluşturduğumuz keyi header olarak Emotion API’ye gönderiyoruz. Aynı şekilde header kısmında content type application/json olarak belirtiyoruz burası da önemli. Sonra bize ( done event ) JSON olarak resmin analizini geri döndürüyor. Bunu da ekrana yazdırıyoruz ;

data[0].scores.anger

şeklinde.

Sonuç

Dönen değere konsoldan baktığımızda içerisinde tespit edilen duygular olarak oldukça fazla seçenek var. Hepsini ayrı ayrı yazdırabiliriz ekrana. Ya da en yoğun olan duyguyu yazdırabiliriz. Diğer verdiği duygular ise şöyle ;

/*
* anger / öfke
* contempt / aşağılama
* disgust / tiksinti
* fear / korku
* happiness / mutluluk
* neutral / nötr
* sadness / üzüntü
* surprise / sürpriz
*/

 

Mantıklı selfie gönderin derim 1-2 defa bir yüz ifadesi bulunmayan saçma sapan resimler göndermiştim hata döndürmüştü bana ? Yani gönderdiğiniz resmin bir yüz ifadesi olup olmadığını da ayırıyor bu servis ? Anlamadığınız kısımları sorabilirsiniz.

 

 

Facebook Yorumları