NLP - Amazon Ürün Yorumları Üzerinde Duygu Analizi

Duygu Analizi Nedir?

feyza
Kodcular
4 min readSep 5, 2022

--

İngilizce’de Sentiment Analysis veya Opinion Mining olarak geçen “Duygu Analizi” bir metindeki duyguyu anlamak için kullanılan bir NLP methodudur. Müşteri geri bildirimlerini, anket yanıtlarını, ürün incelemelerini ve sosyal medya postlarını analiz etmek için yaygın olarak kullanılır. Bu yazımda Amazon’dan alınan bir veri seti üzerinde çalışacağım. Veri Setini indirmek için bu linki kullanabilirsiniz:

http://snap.stanford.edu/data/amazon/productGraph/categoryFiles/reviews_Electronics_5.json.gz

Amazon Ürün Yorumları Veri Seti

Burada bağımlı değişken olarak “overall” sütununu ve bağımsız değişkenleri elde etmek için de “reviewText” sütununu kullanıyorum. Duygu Analizi için izlediğim adımlar şu şekilde:

  1. Veri inceleme
  2. Metin Ön İşleme-1 (Gereksiz karakterleri ve stopword’leri silme)
  3. Metin Ön İşleme-2 (Kelimeleri kök haline getirme)
  4. Makine Öğrenmesi ve Model Oluşturma
  5. Sonuçların İncelenmesi

Asıl adımlara başlamadan önce gerekli kütüphaneleri yükleyip veriyi pandas dataframe’ine aktarıyorum. Burada veriyi daha önce ihtiyacım olan sütunları ayırdığım ayrı bir csv dosyasından okuyorum.

df

1. Veri İnceleme

Kullandığımız veri seti şu anki hali ile imbalanced data. Yani sınıfların eşit dağılmadığı, her sınıf için aynı sayıda verinin olmadığı bir veri seti. Her sınıftan daha fazla ve eşit sayıda veri alarak bir sonraki aşamada modelin performansını artırabiliriz. Ben şimdilik bu şekilde devam edeceğim.

2. Metin Ön İşleme-1

Bu aşamada yorumlardaki büyük harfleri küçük harfe çevirip, alfanumerik olmayan karakterlerden arındırcağız. Sonrasında ise stopword denen bilgisayar için bir anlamı olmayan kelimeleri çıkaracağız. Bu kelimelere İngilizce’de “the, a, and, or” gibi kelimeler örnek verilebilir.

3. Metin Ön İşleme-2

Bir sonraki aşamada aynı kelimeleri gruplayacağımız için kelimeleri kök hallerine getirmemiz gerekiyor. Örneğin think, thinking ve thinks aslında aynı kelimeler ve bunların aynı grupta bulunması gerekiyor. Kök haline getirmek için kullanılan Stemming ve Lemmatization gibi farklı yöntemler var.

Stemming’te genellikle kelimeye eklenen ekler kesilmeye çalışılır. Bunun sonucunda anlamlı veya anlamsız başarılı sonuçlar çıkabilir. Ancak her zaman doğru sonuçlar vermez. Bu yüzden Lemmatization algoritmaları aslında daha başarılı sonuç verir.

Lemmatization’da ise kelimelerin morfolojik analizi yapılır ve bunun için algoritmanın dile ve sözlüğe hakim olması gerekir.

Bu modelde daha hızlı çalışmak istediğim için stemming kullanacağım. Sonrasında modeli geliştirmek için lemmatization kullanabiliriz.

4. Makine Öğrenmesi ve Model Oluşturma

Elimizdeki metin verisini makine öğrenmesinde kullanabilmek için vektörize etmemiz gerekiyor ve bunun için Bag of Words methodunu kullanacağım.

Python’un Sklearn kütüphanesindeki CountVectorizer nesnesini kullanacağım. CountVectorizer kelimelerin cümlede geçme sayılarından bir numpy array’i oluşturacak.

Bag of Words¹ —Her bir kelimenin cümle içerisinde geçme sıklığını elde ettiğimiz vektör.
Bag of Words² — Cümle vektörlerinin transpozlarının alt alta dizilmesi ile elde edilen kelime matrisi.

Vektörize etme aşaması bittikten sonra problem klasik bir makine öğrenmesi problemine dönüşüyor. Buradan sonrası için her zamanki adımları takip edebiliriz. Öncelikle veri setimizi train ve test olarak ayıracağım. Daha sonra metin analizinde en sık kullanılan algoritmaları tek tek çalıştıracağım.

5. Sonuçların İncelenmesi

Sonuçlara bakıldığında en yüksek accuracy değeri Logistic Regression’a ait. Yazının başlarında da bahsettiğim gibi veri setinden kullanacağımız değerleri daha dengeli seçerek ve metin ön işleme aşamasında lemmatization algoritmaları kullanarak daha başarılı sonuçlar elde edebileceğimizi düşünüyorum.

Projenin Kaggle Notebook linki:

https://www.kaggle.com/code/feyzaozen/amazon-review-sentiment-analysis

❤ Bir sonraki yazıda görüşmek üzere ❤

[1]: Malinowski, Mateusz & Fritz, Mario. (2016). Tutorial on Answering Questions about Images with Deep Learning.

[2]: https://www.mygreatlearning.com/blog/bag-of-words/

--

--