Anasayfa / Uygulamalar / R / R ile Metin Madenciliği | Bölüm 2/6

R ile Metin Madenciliği | Bölüm 2/6

Önceki yazımız, Bölüm 1/6’da metin yapılarının ve düzenli metin formatının ne olduğundan bahsettik. Temel amacımız, tidytext kütüphanesi ile metinleri parçalamak ve kelime frekanslarını elde etmek. Bu yazı serisinde, tidytext kütüphanesi ile birlikte bolca dplyr ve ggplot2 kütüphaneleri kullanılacaktır.

Bölüm 2/6’da ise bir metni anlamlandırmanın en kolay ve uygun yolu olan “Duygu Analizini” (sentiments analysis) öğreneceğiz.

2. Bölüm – Düzenli Metin ile Duygu Analizi

Duygu Analizi (Sentiment Analysis) veya Görüş Madenciliği (Opinion Mining) elimizdeki metnin hangi anlamları içerdiğini anlatır. Metnin bir bölümünün veya tamamının pozitif mi, negatif mi, yoksa kızgınlık, süpriz gibi duyguları içerip içermediğini yani kelimelerin duygusal niyetlerini anlamada kullanırız.

2.1. sentiments Veri Seti

Tidytext paketi içerisinde sentiments veri kümesi birkaç duygu (duyarlılık) sözlüğü (lexicon) içerir .

[/crayon]

[/crayon] Genel amaçlı üç sözcük vardır

  • AFINN (Finn Arup Nielsen) ,
  • bing (Bing Liu ve ortakları),
  • nrc (Saif Mohammad ve Peter Turney) .

Bu sözlüklerin üçü de unigramlara, yani tek kelimelere dayanmaktadır.

Afinn sözlüğü olumlu / olumsuz şeklinde her bir kelimenin -5 ile +5 arasında sayısal skoru bulunmaktadır. Bing sözlüğünde olumlu / olumsuz şeklinde iki kategoride bulunur. Nrc sözlüğünde ise pozitif, negatif, öfke, beklenti, tiksinti, korku, sevinç, üzüntü, şaşkınlık ve güven (positive, negative, anger, anticipation, disgust, fear, joy, sadness, surprise ve trust) gibi kategoriler bulunur.

[/crayon]

[/crayon]

[/crayon]

[/crayon]

[/crayon]

[/crayon] Sözlük tabanlı yöntemler, metindeki her bir kelime için bireysel duygu puanlarını toplayarak bir metin parçasının toplam duyarlılığını buluyor.

Birçok İngilizce kelime oldukça nötr olduğundan, her İngilizce kelime sözlükte bulunmmaktadır.

Duygu analizinde veri büyüklüğü önemlidir. Veri ne kadar büyükse, metin içerisindeki anlamı o kadar ortaya çıkarır.

2.2. inner_join() ile Duygu Analizi

Veriler düzenli bir formatta, içsel birleşim ile duygu analizi yapılabilir. Duraklama kelimelerini kaldırma bir anti_join işlemi idi, duygu analizi yapmak bir içsel birleştirme inner_join işlemidir.

NRC sözlüğünü kullanarak bir sevinç (joy) kelimelere bakalım. Jane Austen’ın Emma kitabındaki en yaygın sevinç kelimeleri nelerdir?

Önceki bölümde yaptığımız gibi veriyi düzenli metin haline dönüştürmemiz gerekiyor. Ayrıca her bir kelimenin nereden geldiğini ve kitabın hangi bölümünden olduğunu takip etmek için başka değişkenler (sütunlar) hazırlayalım. group_by() ve mutate() bize bu değişkenleri eklememizde yardmcı olacaktır.

[/crayon] Artık metin düzenli bir formatta olduğu için, duygu analizini yapmaya hazırız. Öncelikle NRC sözlüğünü ve filter() ile “sevinç” (“joy”) kelimelerini kullanalım .

[/crayon]

[/crayon]

[/crayon] Umut, dostluk ve aşk (“hope”, “friendship” ve “love”) hakkında çoğunlukla olumlu, mutlu sözler görüyoruz.

Her bir romanda duyguların nasıl değiştiğini de inceleyebiliriz. Bunu da dplyr fonksiyonları ile rahatlıkla yapabiliriz. İlk olarak Bing sözlüğü ile her kelime için duyarlılık puanı bulalım.

Sonra, her kitabın tanımlı bölümlerinde kaç tane olumlu ve olumsuz kelimelerin bulunduğuna bakalım. 80 satırlık metin bölümlerini alarak kitap içeriside nerede olduğumuzun izini sürmek için bir index tanımlayalım.

  • %/% Operatörü tamsayı bölme işlemi yapar.

Metinlerin küçük bölümleri, kitapların gerçek anlatı yapısını anlatamayabilir. Çünkü iyi bir duygu analizi için yeteri kadar kelimeye sahip olmayacaktır. Buradaki kitaplar için 80 satırın alınması kullanışlı olacaktır. Ancak elinizdeki farklı metinlerin dizelerine (line) göre sizlerin karar vermesi gerekir. Daha sonra da spread() fonksiyonu ile gözlem (satır) biçiminde olan negatif ve pozitif duyguları değişken (sütun) olarak biçimine dönüştürür ve sonrasında gerekli hesaplamalar yapılır.

[/crayon]

[/crayon] Şimdi bu duygu puanlarını her bir roman için grafiksel olarak gösterebiliriz. x-ekseninde indexe karşı bir görselleştirme yaptık.

Jane Austen’in romanlarının Bing sözlüğüne göre Duygu Analizi

[/crayon]

Her romanın kendi içerisinde nasıl ilerlediği, olumlu veya olumsuz duygulara nasıl dönüştüğünü görebiliriz.

2.3. Üç Duygu Sözlüğünün Karşılaştrılması (Afinn – Bing – Nrc)

Hangi duygu sözlüğünün bizim için en uygun olduğuna bakmamız gerekebilir. Jane Austen’ın “Pride and Prejudice” kitabında anlatı biçiminin nasıl değiştiğini görelim. Öncelikle, filter() fonksiyonu ile ilgilendiğimiz kitabı seçelim.

[/crayon]

[/crayon] Şimdi, inner_join() ile duygu sözlüklerini verimiz ile birleştirelim.

Yukarıda Afinn sözlüğü -5 ile +5 arasında sayısal skorlama ile duygu analizini gerçeleştirmişti. Bing ve Nrc sözlüü ise kelimeleri olumlu ve olumsuz kelimeler şeklinde sınıflandırır. Afinn sözlüğünden farklı işlemler yapmamız gerekiyor.

Tekrar tamsayı bölme %/% işlemini 80 satır için yaptıktan sonra count(), spread() ve mutate() fonksiyonlarını kullanmamız gerekir.

[/crayon]

[/crayon]

[/crayon]

[/crayon] Her bir duygu sözlüğü için pozitif ve negatif duygu analizimiz mevcut. Onları bir araya getirerek görselleştirelim.

“Pride and Prejudice” ile üç duygu sözlüğünü karşılaştırma,

[/crayon]

Duyguları hesaplamak için kullanılan üç farklı sözlük mutlak anlamda farklı sonuçlar verecektir ama Jane Austen romanında üç duygu sözlüğü arasında benzerlikler görülmektedir. Romanda aynı yerlere benzer düşmeler ve zirveler görüyoruz, ama mutlak değerler çok farklıdır.

Bu sözlüklerde kaç olumlu ve olumsuz kelimeye kısaca bakalım.

[/crayon]

[/crayon]

[/crayon]

[/crayon] Her iki sözlükte de olumlu (pozitif) kelimelerin olumsuz kelimelerden daha az olduğunu görüyoruz. Ancak negatif kelimelerin pozitif kelimelere oranı Bing sözlüğünde Nrc sözlüğünden daha fazla olduğu görüyoruz. Yukarıdaki grafikte görüldüğü gibi, kelime eşleşmelerinde bir farklılık olacağı gibi, Nrc sözlüğündeki negatif kelimeler Jane Austen’ın çok iyi kullandığı kelimelerle uyuşmadığı sürece katkıda bulunacaktır. Duygu sözlüklerinde farklılıkların kaynağı ne olursa olsun anlatımda benzerlikler görüyoruz

2.4. En Yaygın Olumlu ve Olumsuz Kelimeler

count() fonksiyonu ile hem duyguya katkıda bulunan kelime sayılarını görebiliriz.

[/crayon]

[/crayon]

[/crayon]

[/crayon] Görselleştirmek istersek, Jane Austen’in romanlarında olumlu ve olumsuz duygulara katkıda bulunan kelimeler.

[/crayon]

[/crayon]

Şekile baktığımızda duygu analizinde bir anomali tespit ediyoruz, “miss” kelimesi negatif olarak kodlanmıştır, ancak Jane Austen’in eserlerinde genç, evlenmemiş kadınlar için bir sıfat olarak kullanılmıştır.

Eğer “miss” kelimesini bir duraklama kelimesi olarak belirleseydik bind_rows() ile bunu gerçekleştirebilirdik.

[/crayon]

[/crayon]

2.5. Wordcloud – Kelime Bulutu

  • wordcloud kütüphanesi

Jane Austen’in romanlarındaki en yaygın kelimelerin kelime bulutu ile görselleştirilmesi.

[/crayon]

[/crayon]

  • reshape2 kütüphanesi

Jane Austen’in romanlarındaki en yaygın olumlu ve olumsuz kelimelerin kelime bulutu ile gösterilmesi.

[/crayon]

[/crayon]

Kelimelerin büyüklüğü metin içerisindeki frekansı ile ilgilidir. Ancak kelimelerin büyüklükleri kelimelerin duyguları ile karşılaştırılabilir değildir.

  • wordcloud2 kütüphanesi

wordcloud2 ile resimler üzerine kelime bulutu işlemini uygulayabilirsiniz.

2.6 Özet

Duygu analizi, metinlerde ifade edilen tutum ve görüşleri anlamanın bir yolunu sunar. Duygu sözlüklerini kullanarak karşılaştırmalar yapılabilir. Afinn sözlüğü kelimelerin duygu skorlarını, Bing sözlüğü olumlu/olumsuz kelimeleri, Nrc sözlüğü ise birden fazla duygu içeren kelimeleri bize verir.

Hakkında Ekrem Bayar

GÖZ ATMAK İSTEYEBİLİRSİNİZ

R ile 2×2’lik Tabloların Çözümlenmesi

Merhaba arkadaşlar, Zaman Serileri Çözümlemesi yazı serisinin yanında ara ara bir kaç küçük çözümlemelerde yapacağım. …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir