Yapay Zeka Algoritmaları ile Metinlerde Sentiment (duygusal durum) Analiz Yapmak

Duygunun olduğu her yerde bu tür algoritmalar insanların ve kurumların önünü görmesine ışık olabilir.

Yapay Zeka ve Algoritmalar yeni bir dünyanın kapısını aralıyor.
Ve bizler de bu yeni dünyada markaların, kurumların, devletlerin yanında olacarak bu değişimi birlikte pozitif hale getireceğiz.

Yapay Zeka Algoritmaları ile Metinlerde Sentiment (duygusal durum) Analiz Yapmak

Romantik ve anlaşılır olduğunu düşündüğümüz bir giriş yapalım :)

Konuya uzak olanlar için başlığı biraz daha anlaşılır bir şekilde açıklayalım. Sentiment analize duygusal durum analizi diyebiliriz.
Etkileşime girdiğimiz her şey bizde üç adet ana his yaratır bunlar pozitif his, nötr his ve negatif his. Bu hislerin arasındaki ince ilişki ile de duygularımız ortaya çıkar. Mesela bizi mutlu eden şeylerle ilgili şöyle bir algımız vardır (bunu olduğunca ilkel anlatacağım) negatif olarak bize neredeyse hiç etki etmeyen, nötr olarak sabitlenmiş ve pozitif olarak da bize yüksek değerde sinyal gönderen her his bizde mutluluk duygusu oluşturur.
Yani özetle Negatif:-20000, nötr:0 Pozitif:6000 olan bir his karması bizde mutluluk olarak ifade edilebilir. Aşk vs gibi diğer duygulara girmeye planlamıyordum ama sanırım bu konuda biraz daha ilgi çekici bir örnek versem iyi olacak. Duyguları eğer matematikteki kümelere benzetirsek aşk, mutluluk kümesinin bir alt kümesidir. Ilık bir yaz akşamında ılık denizin kenarında batmakta olan güneşi izlediğinizde mutluluk duygularınız uyanır, bütün değişkenler sabit bunun yanına kız/erkek arkadaş eklediğimizde yine mutluluk duygunuz uyanır fakat bu sefer bunu aşk olarak tanımlamak istersiniz. Yani üç hissin karması ile duyguları tanımlayabiliriz eğer istersek de daha detaylarına girerek duyguları alt kümelere ayırıp daha net çıkarımlar yapabiliriz.

İşte metinlerde duygusal analiz yaparken de üzerinde duracağımız 3 his olacak negatif, nötr ve pozitif hisler.
Bizim burada yapacağımız şey bir metnin pozitif, nötr ya da negatif olduğunu anlamaya çalışmak ve bu metnin öznel bir duyguyu mu yoksa genel olarak herkes için mi aynı etkiyi yaratacağını analiz etmek olacak. Fakat endişelenmeyin bunu bizim için TextBlob ve Python yapacak.

İhtiyaç listemiz

Python 3,6
Jupyter Notebook
Textblob

Bunların hepsi için Anaconda'nın son sürümünü kurmanızı tavsive ederim.
Bu yazıda yapay zeka terimlerine ve python ortamına aşina olduğunuzu düşünüyorum. Eğer bu konularda bilgi sahibi değilseniz yazının devamını sizin için bir entellektüel tatmin olarak düşünüp okumaya devam edebilirsiniz.


İşe koyulalım

Jupyter Notebook'umuzu açalım ve "Yapay Zeka" adında yeni bir kütüphane oluşturalım.
Sonraki sayfada yeni bir not defteri oluşturmak için "New" butonuna basalım.
Item Name alanına dilediğiniz bir isim girerek ve ilk note defterimizi oluşturalım.

Her şey bittiğinde böyle bir çalışma dosyanızın olması gerekir (Buradaki kodlar sizde olmayacak, proje bittiğinde kodları da göreceksiniz.)

Jupyter Notebook Yapay Zeka

Python'da duygu analizi.

Bunun için Jupyter Notebook ve Python 3,6 için Anaconda Ortamını kurduysak aşağıdaki tek satırı eklememiz yeterlidir.

from textblob import TextBlob

Yukarıdaki satır ile note defterimize TextBlob kütüphanesini import etmiş olduk.

Daha sonra ilkt metnimizi yazıyoruz. Benim bir köpeğim var ve ona olan sevgimi ifade eden basit bir cümle kuruyorum.
Metni aşağıdaki gibi yazdıktan sonra Python Print fonksiyonu ile sonucu ekrana yazdıracağız.

simple_text = TextBlob("I love my dog")
print(simple_text.sentiment)

Aşadağıdakine benzer bir sonuç çıkacak.

Sentiment(polarity=0.5, subjectivity=0.6)

Polarity bir metnin ne kadar negatif ya da pozitif olduğunu ifade eder. Değerler -1 ile +1 arasındadır, değer 0'a yaklaştıkça nötr'leşir.
Subjectivity ise o metnin ne kadar öznel ya da genel olduğunu ifade eder. Değer 0 ile 1 arasındadır, değer 0'a yaklaştıkça metnin genel olduğu 1'e yaklaştıkçı da metnin kişisel olduğu anlaşılır.

I love my dog metninin sonucunu şöyle yorumlayabiliriz. Bu metin pozitif bir metindir ve biraz kişisel bir metindir. Değerler ortalama yani bir köpeği genelde herkes sevebilir ve benim köpeğim genelde de insanlara sevimli gelebilir.

Şimdi bir nefret söylemi ile devam edelim. JupyterNotebook'umuza şunu yazalım.

simple_text3 = TextBlob("I hate you.")
print(simple_text3.sentiment)

Sonuç şöyle çıkacaktır:

Sentiment(polarity=-0.8, subjectivity=0.9)

Buradan şunu anlayabiliriz. Kurduğum cümle oldukça negatif ve oldukça kişisel. Yani ben aşırı negatif bir cümle kurdum ve eğer birinden nefret ediyorsanız bu durum oldukça kişiseldir.

Algoritmamız şimdiye kadar oldukça başarılı sonuçlar çıkardı.

Hadi biraz daha karışık bir şeyler yazalım.

simple_text4 = TextBlob("China is a more developed country than America.")
print(simple_text4.sentiment)

Bu metnin sonucu da şöyle çıkacaktır:

Sentiment(polarity=0.3, subjectivity=0.4)

Sonuç bu cümlenin bize kısmen pozitif ama o kadar da pozitif olmadığını, ve bu durumun biraz kişisel olduğunu fakat o kadar da kişisel olmadığını söylüyor. Yani günümüzde en çok tartışılan konulardan birisi, "Çin Amerika'dan daha mı gelişmiş?" Algoritmanın sonucundan bu konuda kafa karışıklığı olduğunu çıkarabiliriz, tabi bunlar benim yorumum. Algoritma bize doğru ya da yanlış olduğunu söylemiyor, metnin duygusal analizini yapıyor. Bu analiz sonucunda da bu cümlenin kafa karışıklığı yarattığını düşünmek mantıksız olmaz diye düşünüyorum.

Biraz da edebiyat

Ve son olarak işi iyice abartıp Shakespeare'in bir sözünü analiz edelim.
JupyterNotebook'umuza şunu yazalım ve programı run edelim.

simple_text5 = TextBlob("Love sought is good, but given unsought, is better.")
print(simple_text5.sentiment)

Sonuç şöyle çıkacaktır:

Sentiment(polarity=0.5666666666666667, subjectivity=0.5666666666666668)

Burada yorumu size bırakıyorum :)

Bu algoritma ile neler yapılabilir.

Case 1:

Müşteri ilişkilerini düşünün, şirketinize mail atan, chatbotlarınıza milyonlarca mesaj gönderen kullanıcınız/müşteriniz var. Size müşterilerin yazdıklarını analiz edip en kritik ve şikayeti yüksek olanlara müşteri ilişkileri ekibinizi yönlendirip daha hedefli bir iletişim yapmları hoş olmaz mıydı?

Case 2:

Telefon konuşmalarını düşünün, voice to text algoritmaları ile telefon konuşmalarındaki duyguları bile analiz edip müşteri ilişkilerini bir sonraki aşamaya taşımak istemez miydiniz?

Case 3:

Sosyal medyayı markanız için track edip insanların sizin ve ürünleriniz için ne tür şeyler konuştuğunu öğrenmek istemez miydiniz?

Duygunun olduğu her yerde bu tür algoritmalar insanların ve kurumların önünü görmesine ışık olabilir.

Yapay Zeka ve Algoritmalar yeni bir dünyanın kapısını aralıyor.
Ve bizler de bu yeni dünyada markaların, kurumların, devletlerin yanında olacarak bu değişimi birlikte pozitif hale getireceğiz.

Herkese sağlıklı günler.

Bültenimize abone olun

Her 50 yeni kullanıcı kaydında Tema Vakfı'na bir fidan bağışlıyoruz.