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

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

4. Bölüm – Kelimeler Arasındaki İlişkiler: n-gram ve Korelasyon

Şuana kadar kelimeleri birer birim olarak ele aldık ve kelimelerin duygularını veya belgelerle olan ilişkilerine baktık. Bununla birlikte metin analizi aynı zamanda kelimeler arasındaki ilişkilere dayanır, hangi kelimelerin diğerlerini takip etme eğiliminde olduğunu veya aynı belgelerde birlikte olma eğilimini gösterir.

Bu bölümde kelimeler arasındaki ilişkileri hesaplama ve görselleştirme işlemleri yapacağız.

4.1. n-gram ile Kelimelere Parçalama

unnest_tokens() fonksiyonu ile elimizdeki metni birer kelimelere parçalamıştık ardından duygu ve frekans analizlerini gerçekleştirmiştik. Şimdi n-gram olarak adlandırılan ardışık kelime dizileri ile çalışacağız. “X” kelimesinin “Y” kelimesi tarafından takip edildiğini görerek, aralarındaki ilişkilerin modelini oluşturabiliriz.

unnest_tokens() fonksiyonu içerisine token = “ngrams” ifadesini ve ardışık kelime sayısı n = sayı ifadesi yazılmalıdır. n = 2 ayarlanır ise “bigram” olarak adlandırılan iki ardışık kelimeden oluşan kelime çiftleri, n = 3 ayarlanır ise “trigram” olarak adlandırılan üçlü ardışık kelimeden oluşan kelime grupları incelenir.

[/crayon]

[/crayon] Bu veri yapısı da düzenli metin formatının bir varyasyondur.

Bigramların bir önceki ve bir sonraki kelime ile birlikte görünmesine dikkat ediniz.

4.1.1. N-gramları Sayma ve Filtreleme

dplyr kütüphanesini kullanarak en yaygın bigramları inceleyebiliriz.

[/crayon]

[/crayon] Tahmin edilebileceği gibi, en yaygın bigramlar, duraklama kelimleri olacaktır. “of the”, “to be”, “in the” gibi birbirini izleyen kelimeler tüm metinlerde çok fazla karşımıza çıkacaktır. Duraklama kelimelerini ardışık kelime gruplarından da çıkartabiliyoruz. Bunun için öncelikle tidyr kütüphanesinden separate() fonksiyonu ile tek bir değer gibi gözlenen ardışık kelime gruplarını birbirinden ayırıyoruz. Bigram’ı “word1” ve “word2” adlı iki sütuna ayırmamız gerekiyor. Sonrasında ise “word1” ve “word2” sütunlarına anti_join() işlemi ile duraklama kelimelerini çıkartıyoruz.

[/crayon]

[/crayon] Yapacağımız gelecek analizlerde yeniden birleştirilen kelimelerle çalışmak isteyebiliriz. Bunun için tidyr kütüphanesinin unite() fonksiyonu “word1” ve “word2” sütunlarını birleştirecektir. unite() fonksiyonu separate() fonksiyonun tersidir.

[/crayon]

[/crayon] Diğer analizlerde, üçlü ardışık kelimeler olan en yaygın trigramlarla ilgilenmek istenebilir. Bunun için unnest_tokens() içerisinde n = 3 yazılmalıdır.

[/crayon]

[/crayon]

4.1.2. Bigram’ın Analizi

Satır başına bir bigram formatı, metnin keşifsel analizleri için faydalıdır. Basit bir örnek olarak, her kitapta geçen en yaygın sokaklara bakabiliriz.

[/crayon]

[/crayon] Bigram için tf-idf’ye bakalım.

[/crayon]

[/crayon] Jane Austen romanlarıdakş en yüksek tf-idf olan bigramlar

[/crayon]

[/crayon]

Bölüm 3’te keşfettiğimiz kadarıyla, Austen kitaplarını ayırt eden kelimeler neredeyse sadece isimlerdi. Ayrıca, burada yaygın isimlerin yanlarına fiil aldıklarını görüyoruz. “Pride and Prejudice” kitabında “replied elizabeth”, “Emma” kitabında ise “cried emma” kelime eşlerini görmekteyiz.

Bigramların tf-idf’sini incelemede bazı avantaj ve dezavantajlar vardır.

Bigramları saydırdığımızda, iki kelimeli bir çift tek bir kelimenin sıklığından daha azdır. Bu nedenle bigramlar çok büyük bir metin veri kümesinde yararlı olacaktır. Bigramlar yani ardışık kelime çiftleri, tek kelimelere nazaran metin yapısını daha iyi açıklar.

4.1.3 Bigramlarda Duygu Analizi

Olumsuzluk kelimelerine bakalım ve Afinn sözlüğü ile analizi yapalım.

[/crayon]

[/crayon]

[/crayon]

[/crayon] Olumsuzluk “not” kelimesi ile ilişkili kelimeler

[/crayon]

[/crayon] “not” keimesini takip eden en yaygın duygu-ilişkili kelime normalde +2’lik bir skor ile pozitif olan “like” kelimesi çıkmıştır.

Hangi kelimelerin yanlış yönde en çok katkıyı sağladığını görmek istersek, kelimelerin skorları ile kaç defa görüntülendiklerini çarpabiliriz. Yani +3 skora sahip olan bir kelime 10 kere tekrar ediyor ise bun katkısı 30 puan olacaktır, ayrıca +1 skora sahip kelimeden de daha fazla katkı sağlayacaktır. Bunu da bir çubuk grafik ile görselleştirelim.

Olumsuz ya da olumsuz yönde, duygu puanlarına en büyük katkıyı sağlayan ‘not’ ile sıralanan 20 kelime.

[/crayon]

“not like” ve “not help” gibi bigramlar yanlış tanımlamanın en büyük nedenleriydi ve metnin çok daha pozitif görünmesini sağladı. Ancak “not afraid” ve “not fail” gibi kelimelerin de bazen metin daha olumsuz olduğunu öne sürülmekte.

“not” burada tek başına bağlam sağlayan tek terim değildir. Diğer olumsuzluk bağlamlarını da ele alınabilir.

4.1.4. ggraph ile Bir Bigram Ağının Görselleştirilmesi

Kelimeler arasındaki tüm ilişkileri aynı anda görselleştirmekle ilgilenebiliriz. Yaygın bir görselleştirme olarak, kelimeleri bir ağa veya grafiğe yerleştirebiliriz.

Burada her bir düğüm bir kelimeyi temsil etmekte. Ağ görselinin üç argümanı vardır. Bu üç argümandan düzenli bir grafik oluşturulabilir.

  • from: Düğüm bir kenardan geliyor (Düğümün nereden geldiği).
  • to: Düğüm bir kenara doğru gidiyor (Düğümün nereye gittiği).
  • weight: Her kenarla ilişkili sayısal değer

igraph paketi ağ analizinde güçlü fonksiyonlara sahiptir. Düzenli verilerden bir igraph nesnesi oluşturmanın bir yolu, graph_from_data_frame() ile düğümün nereden geldiğini yani “from” argümanını, nereye gittiğini “to” argümanını ve “weight” argümanını kullanmaktır, örnekte weight argümanı “n” dir.

[/crayon]

[/crayon] Pride & Prejudice kitabındaki yaygın bigramların ağ analizi. 20’den fazla kez tekrar eden kelimeler.

[/crayon]

[/crayon] Daha iyi görünümlü bir grafik oluşturmak için,

  • edge_alpha argümanı ile bağlantıların frekanslara göre transparanlığını ayarlar. Kelimenin ne kadar yaygın veya nadir olduğunu anlamamızı sağlar.
  • grid::arrow() okun yönünü belirtir ve end_cap seçeneği ile kelime düğümüne dokunmadan okun bitmesini söyler.
  • Düğümleri daha çekici hale getirmek için (bu örnekte daha büyük, mavi noktalar) renk ve boyut ayarlamaları yapılabilir.
  • theme_void() ile ağ için yararlı bir tema ekleyebiliriz.

“Pride and Prejudice” kitabında daha iyi bir gösterim ile ağ analizi

[/crayon]

Ağ yapısı ilişkisel düzenli verileri görselleştirmek için kullanışlı bir yoldur.

Bu işlemin metin işlemede ortak bir model olan Markov Zincirinin görselleştirilmesi olduğunu aklımızdan çıkarmayalım. Markov Zincirinde her bir kelime seçimi sadece kendinden önceki kelimeye bağlıdır.

4.2. Widyr Kütüphanesi ile Kelime Çiftlerinin Sayılması ve İlişkilendirilmesi

N-gram ile metni kelimelere parçalamak kelime çiftlerini keşfetmek için ideal bir araçtır. Ayrıca kelimeler birbirlerinin yanında bulunmasalar bile, belirli belgeler veya belirli bölümlerde birlikte olma eğilimde olan kelimeler ile de ilgilenme fırsatı bulabiliriz.

Düzenli veri değişkenler arasında karşılaştırma yapmak veya satırlara göre gruplandırmak için faydalı bir yapıdır. Ancak satırlar arasında karşılaştırma yapmak zor olabilir. Örnek vermek gerekirse, aynı belgede iki kelimenin kaç kez tekrar ettiğini ve bunların nasıl ilişkili olduğunu görmek. Kelime eşlerinin sayımı veya korelasyonu bulmak için öncelikle verileri geniş bir matris dönüştürmemiz gerekir.

widyr paketinin arkasındaki felsefe şudur, paket önce veri setini geniş bir matrise dönüştürür, daha sonra matris, bir korelasyon matrisi gibi görünür.

  1. Bölümde de tidy text yani düzenli metnin geniş bir matrise dönüştürülmesinin bazı yollarını göreceğiz, şuanki durum için gerekli değildir. widyr paketi frekans ve korelasyon işlemlerini kolaylıkla yapabilir. Belgeler veya metin bölümleri arasında (gözlem grupları arasında) çift yönlü karşılaştırma yapablen işlevlere yoğunlaşacağız.

4.2.1. Bölümler Arasında Sayım İşlemi (frekans) ve Korelasyon

Bölüm 2’de duygu analizi için yaptığımız gibi, “Pride and Prejudice” kitabını 10 satırlık bölümlere ayırdık . Aynı bölüm içinde hangi kelimelerin görünmeye eğilimli olabileceği ile ilgilenebiliriz.

[/crayon]

[/crayon] widyr paketinin kullanışlı bir işlevi pairwise_count() fonksiyonudur. Aynı bölümde birlikte görünen ortak kelime çiftlerini saymamızı sağlar.

[/crayon]

[/crayon]

[/crayon]

[/crayon] Bir bölümdeki en yaygın kelime çiftinin “Elizabeth” ve “Darcy” (iki ana karakter) olduğunu görüyoruz. Ayrıca sıklıkla Darcy ile ortaya çıkan kelimeleri kolayca bulabiliriz:

[/crayon]

[/crayon]

4.2.2. Çift Yönlü Korelasyon

“Elizabeth” ve “Darcy” gibi çiftler en çok rastlanılan kelimelerdir. Ancak bu kelimeler aynı zamanda en yaygın bireysel kelimeler oldukları için özellikle anlamlı değildir. Bunun yerine , birbirleriyle ne sıklıkla göründüklerine bağlı olarak, birlikte ne sıklıkla göründüklerini gösteren kelimeler arasındaki ilişkiyi incelemek isteyebiliriz .

Özellikle burada ikili korelasyon için phi katsayısına odaklanacağız . Phi katsayısının odak noktası, X ve Y kelimelerinin her ikisinin de diğeri olmadan göründüğünden ne daha fazla ortaya çıktığıdır.

Örneğin, n11 X ve Y kelimesinin bulunduğu yerin frekansını, n00 is X ve Y kelimesinin bulunmadığı yeri, n10 veya n01 ise X ve Y kelimelerinden birinin bulunduğu yerin frekansını verir. phi kat sayısı da aşağıdaki gibidir.

NOT: Phi katsayısı, ikili veriye uygulandığında Pearson katsayısına eşdeğerdir.

widyr paketinin pairwise_cor() fonksiyonu bize aynı bölümde görünen kelime sıklıklarına göre kelimeler arasında phi katsayısı bulunmasını sağlar. pairwise_count() fonksiyonu ile benzer görevdedir.

word_cors[/crayon]

[/crayon] Bu tarz bir çıktı, keşif yapmak için yararlıdır. Örneğin, bir filter işlemi kullanarak “pound” gibi bir kelime ile en ilişkili kelimeleri bulabiliriz .

[/crayon]

[/crayon] filter ilginç bulduğumuz veya karşılaştırmaya değer olabilecek kelimeleri seçmemize ve onlarla en fazla ilişkili olan diğer kelimeleri bulmamıza yardımcı olur.

[/crayon]

[/crayon] “elizabeth”, “pound”, “married” ve “pride” ile en çok ilişkili olan Pride and Prejudice kitabındaki kelimeler.

Bigramları görselleştirmek için ggraph paketini kullandığımız gibi, widyr paketi ile bulduğumuz kelimelerin korelasyonlarını ve kümelerini görselleştirmek için kullanabiliriz.

“Pride and Prejudice” kitabındaki kelime çiftleri, aynı 10 satırlık kısımda 0.15 korelasyon ile görünmesi,

[/crayon]

Bigram analizinden farklı olarak burada ilişkiler arasında bir yönelme yoktur. Dikkat ederseniz kelimeler arasında bir ok yok. Buradaki ilişkiler yönelimden ziyade simetriktir.

4.3. Özet

Bu bölümde düzenli metin yaklaşımının yalnızca bireysel kelimeler için değil aynı zamanda kelimeler arasındaki ilişkileri ve bağlantıları göstermek için neler yapılabileceğini göstermiştir. İlişkiler n-gramlar yardımıyla hangi kelimenin diğerinden sonra ortaya çıkmaya eğilimli olduğunu görmemizi sağlar veya birbirine yakın olarak gözüken kelimeler için korelasyona bakabiliriz. Bu bölümde ayrıca, bu tür ilişkilerin her ikisini de ağ grafiği olarak görselleştirmek için ggraph paketini de bize sundu. Ağ grafiği görselleştirmeleri ilişkileri araştırmak için esnek ve önemli bir araçtır.

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