Logo Logo
  • Ana Sayfa
  • Hakkında
  • Kategoriler
    • Genel
    • İstatistik
    • Makine Öğrenme
    • Model Geliştirme
    • Sağlık
    • Teknoloji
  • Tüm Yazılarım
  • İletişim

İletişim

  • Email buluttevfik@gmail.com

Site Haritası

  • Ana Sayfa
  • Hakkında
  • İletişim

Sosyal Medya Adresleri

Veri Madenciliği (Data Mining): Metin Verisinin Keşifsel Veri Analizi Üzerine Bir Vaka Çalışması (Text Mining)

  • ANA SAYFA
  • Blog Details
Ocak 18 2021
  • İstatistik

Veriden desen çıkarma işlemi anlamına gelen veri madenciliği bütün alanlarda kendine uygulama alanı bulan ve büyük veri (big data)’den farklı olan bir kavramdır. Bu kavram aynı zamanda veriyi keşfetmek olarak da tanımlanabilir. Veri madenciliği, veriden desen veya örüntü çıkarırken yapay zekayı , istatistiksel metotları ve diğer pek çok metodu kullanır. Büyük veride ise genel olarak yüksek hacim (volume), akışkanlık (velocity), çeşitlilik (variety), belirsizlik (veracity) söz konusudur. Bahsedilen bu özelliklerin aynı anda sağlanması gereklidir. Büyük veri, tek başına veri setinin büyük olduğu anlamına gelmez.

Veri madenciliğinin (data mining) bir kolunu oluşturan metin madenciliği (text mining) metotları, metinlerde en sık kullanılan anahtar kelimeleri vurgulamamıza ve görselleştirmemize olanak tanır. Bu metotlarla metin verisinden metin bulutu, etiket bulutu diyebileceğimiz kelime bulutu oluşturulabilir.

Kelime bulutu oluşturma prosedürü eğer R programlama dilinde uygulama adımları bilinirse çok zor değildir. Genel olarak R’da farklı paketler kullanılmakla birlikte genellikle metin madenciliği paketi (the text mining package ™) ve kelime bulutu oluşturucu paket (the word cloud generator package (wordcloud))’lerinin kullanıldığı görülmektedir. Bu paketler, metni hızlı analiz etmemize ve kelime bulutu olarak ortaya çıkan anahtar kelimeleri görselleştirmemize olanak tanır.

Bahsedilenler ışığında metin verisini sunmada kelime bulutunu kullanmanız gerektiği durumlar şunlardır:

  1. Kelime bulutları sadelik ve yalınlık sağlar. En sık kullanılan anahtar kelimeler, kelime bulutu içinde daha iyi kendini gösterir.
  2. Kelime bulutları potansiyel iletişim araçlarıdır. Kelime bulutlarının anlaşılması ve paylaşılması kolaydır ve kelime bulutları etkilidirler.
  3. Kelime bulutları bir tablo verisinden görsel olarak daha ilgi çekicidir.

Kelime bulutları, sektör ayrımı gözetilmeksizin bütün alanlarda kullanılabilmekle birlikte en sık kullanılan alanlarla en sık kullanılan meslek grupları şöyle özetlenebilir;

  1. Kalitatif (nitel) araştırma yapan araştırmacılar,
  2. Müşterilerin ihtiyaçlarının belirlenmesi noktasında pazarlamacılar,
  3. Temel konuları desteklemek için eğitimciler,
  4. Politikacı ve gazeteciler
  5. Kullanıcı görüşlerini toplayan, analiz eden ve paylaşan sosyal medya siteleri

R’da kelime bulutu oluşturma süreci genel olarak 5 adımda tamamlanmaktadır.

  1. Birinci adımda text (txt) uzantılı bir dosya oluşturulur. Oluşturulan bu metin dosyasının içine analiz edilecek metin (uzunluğu önemli değil) kaydedilir. Ancak bu metin dosyası txt uzantılı olarak web üzerinde de olabilir. Bu durumda txt dosyasının linki üzerinden sürece devam edilir.
  2. Gerekli R programlama dili paketleri kurulur ve yüklenir. Bu paketler;

     Install (kurulum için)

install.packages("tm")  # for text mining (metin madenciliği için)
install.packages("SnowballC") # for text stemming (metin için)
install.packages("wordcloud") # word-cloud generator (kelime bulutu oluşturucu)
install.packages("RColorBrewer") # color palettes (renk paletleri)

   Load (yüklemek için)

library("tm")
library("SnowballC")
library("wordcloud")
library("RColorBrewer")

3. 1. aşamada oluşturulan metin dokümanı yüklenir. Kullanılan R kodu genellikle şu şekildedir;

filePath<-library(readr)
ml <- read_csv("ml.txt")
View(ml)
text <- readLines(filePath) 
filePath<-library(readr)
ml <- read_csv("ml.txt")
View(ml)
text <- readLines(filePath)

Metin madenciliği denilen bu aşamada, analiz edilecek metin text mining ™ paketinde olan Corpus() fonksiyonu kullanılır ve metin indekslenir. Daha sonra, veri temizleme faaliyetlerine başlanır. İstenmeyen kelimeler, bağlaçlar, boşluklar, sayılar bu aşamada çıkarılır.

  1. Metin temizlendikten sonra metnin içindeki kelimelerin kullanılma sıklığını gösteren bir matris oluşturulur.
  2. Son aşamada ise sıklık matrisinden bir kelime bulutu oluşturularak süreç tamamlanır.

Uygulama adımları anlatıldıktan sonra özgün örnek bir olay üzerinden şimdi bir uygulama yapalım. Kolaylık olması ve daha anlaşılır olması adına txt (text) dosyası yüklenmesi yerine analiz edilecek metin fonksiyon içine yazılarak aşamalar kısaltılacaktır. Bilinirliğinden dolayı, örnek uygulamada kullanılan metin, Nutuk adlı eserden alınmıştır.

#Analizde Kullanılan Nutuk Adlı Eserden alınan Metin

Türk Gençliğine Bıraktığımız Kutsal Armağan Saygıdeğer baylar, sizi, günlerce işlerinizden alıkoyan uzun ve ayrıntılı sözlerim, en sonu tarihe mal olmuş bir dönemin öyküsüdür. Bunda, ulusum için ve yarınki çocuklarımız için dikkat ve uyanıklık sağlayabilecek kimi noktaları belirtebilmiş isem kendimi mutlu sayacağım.Baylar, bu söylevimle, ulusal varlığı sona ermiş sayılan büyük bir ulusun, bağımsızlığını nasıl kazandığını; bilim ve tekniğin en son ilkelerine dayanan ulusal ve çağdaş bir devleti nasıl kurduğunu anlatmaya çalıştım.Bugün ulaştığımız sonuç, yüzyıllardan beri çekilen ulusal yıkımların yarattığı uyanıklığın ve bu sevgili yurdun her köşesini sulayan kanların karşılığıdır.Bu sonucu, Türk gençliğine kutsal bir armağan olarak bırakıyorum.Ey Türk gençliği! Birinci ödevin; Türk bağımsızlığını, Türk Cumhuriyetini, sonsuzluğa değin korumak ve savunmaktır.Varlığının ve geleceğinin biricik temeli budur. Bu temel, senin en değerli hazinendir. Gelecekte de, seni bu kaynaktan yoksun etmek isteyen iç ve dış kötücüller bulunacaktır. Bir gün, bağımsızlığını ve cumhuriyetini savunmak zorunda kalırsan, ödeve atılmak için, içinde bulunacağın durumun olanaklarını ve koşullarını düşünmeyeceksin! Bu olanak ve koşullar çok elverişsiz bir nitelikte belirebilir. Bağımsızlığına ve cumhuriyetine kıymak isteyecek düşmanlar, bütün dünyada benzeri görülmedik bir utku kazanmış olabilirler.Zorla ve aldatıcı düzenlerle sevgili yurdunun bütün kaleleri alınmış, bütün gemilikleri ele geçirilmiş, bütün orduları dağıtılmış ve yurdun her köşesi fiilen işgal edilmiş olabilir. Bütün bu koşullardan daha acı ve daha korkunç olmak üzere, yurdunda, iş başında bulunanlar, aymazlık ve sapkınlık, üstelik, hainlik içinde olabilirler. Dahası iş başında bulunan bu kişiler, kendi çıkarlarını, yurduna girmiş olan düşmanların siyasal erekleriyle birleştirebilirler. Ulus, yoksulluk ve sıkıntı içinde ezgin ve bitkin düşmüş olabilir.Ey Türk geleceğinin çocuğu! İşte, bu ortam ve koşullar içinde bile ödevin, Türk bağımsızlığını ve Cumhuriyetini kurtarmaktır! Bunun için gereken güç, damarlarındaki soylu kanda vardır.

# Yukarıda bahsedilen paketlerin kurulumu ve yüklenme işlemi tamamlandıktan sonra, metni, indekslenmesi için ilk olarak corpus fonkyonu içinde tanımlanmış VectorSource fonksiyonu içine alıyoruz.

docs <- Corpus(VectorSource("Türk Gençliğine Bıraktığımız Kutsal Armağan Saygıdeğer baylar, sizi, günlerce işlerinizden alıkoyan uzun ve ayrıntılı sözlerim, en sonu tarihe mal olmuş bir dönemin öyküsüdür. Bunda, ulusum için ve yarınki çocuklarımız için dikkat ve uyanıklık sağlayabilecek kimi noktaları belirtebilmiş isem kendimi mutlu sayacağım.Baylar, bu söylevimle, ulusal varlığı sona ermiş sayılan büyük bir ulusun, bağımsızlığını nasıl kazandığını; bilim ve tekniğin en son ilkelerine dayanan ulusal ve çağdaş bir devleti nasıl kurduğunu anlatmaya çalıştım.Bugün ulaştığımız sonuç, yüzyıllardan beri çekilen ulusal yıkımların yarattığı uyanıklığın ve bu sevgili yurdun her köşesini sulayan kanların karşılığıdır.Bu sonucu, Türk gençliğine kutsal bir armağan olarak bırakıyorum.Ey Türk gençliği! Birinci ödevin; Türk bağımsızlığını, Türk Cumhuriyetini, sonsuzluğa değin korumak ve savunmaktır.Varlığının ve geleceğinin biricik temeli budur. Bu temel, senin en değerli hazinendir. Gelecekte de, seni bu kaynaktan yoksun etmek isteyen iç ve dış kötücüller bulunacaktır. Bir gün, bağımsızlığını ve cumhuriyetini savunmak zorunda kalırsan, ödeve atılmak için, içinde bulunacağın durumun olanaklarını ve koşullarını düşünmeyeceksin! Bu olanak ve koşullar çok elverişsiz bir nitelikte belirebilir. Bağımsızlığına ve cumhuriyetine kıymak isteyecek düşmanlar, bütün dünyada benzeri görülmedik bir utku kazanmış olabilirler.Zorla ve aldatıcı düzenlerle sevgili yurdunun bütün kaleleri alınmış, bütün gemilikleri ele geçirilmiş, bütün orduları dağıtılmış ve yurdun her köşesi fiilen işgal edilmiş olabilir. Bütün bu koşullardan daha acı ve daha korkunç olmak üzere, yurdunda, iş başında bulunanlar, aymazlık ve sapkınlık, üstelik, hainlik içinde olabilirler. Dahası iş başında bulunan bu kişiler, kendi çıkarlarını, yurduna girmiş olan düşmanların siyasal erekleriyle birleştirebilirler. Ulus, yoksulluk ve sıkıntı içinde ezgin ve bitkin düşmüş olabilir.Ey Türk geleceğinin çocuğu! İşte, bu ortam ve koşullar içinde bile ödevin, Türk bağımsızlığını ve Cumhuriyetini kurtarmaktır! Bunun için gereken güç, damarlarındaki soylu kanda vardır"))

#Dokuman incele fonksiyonu çalıştırılır.

inspect(docs)

#Metin dönüştürülür.

toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))
docs <- tm_map(docs, toSpace, "/")
docs <- tm_map(docs, toSpace, "@")
docs <- tm_map(docs, toSpace, "\|")

#Veri temizlenir.

# Metni küçük harfe dönüştür.
docs <- tm_map(docs, content_transformer(tolower))
# Metinden rakamları ayıkla.
docs <- tm_map(docs, removeNumbers)
# Çıkarılmasını istediğiniz kelimeleri ve bağlaçları çıkar.
docs <- tm_map(docs, removeWords, c("her", "için", "bile", "bir", "bütün", "daha", "beri")) 
# Noktalama işaretlerini kaldır.
docs <- tm_map(docs, removePunctuation)
# Ekstra boşlukları kaldır.
docs <- tm_map(docs, stripWhitespace)

#Kelime sıklık matrisi oluşturulduktan sonra sıralı bir şekilde ilk 10 kelimeyi data frame (veri çerçevesi) formatında getirilir.

dtm <- TermDocumentMatrix(docs)
m <- as.matrix(dtm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
head(d, 10)

Yukarıdaki fonksiyonlarının çalıştırılmasıyla elde edilen sıklık çerçeve tablosu aşağıdaki gibidir.

freqtable

#Kelime bulutu oluşturularak süreç tamamlanır. Bu aşamada her defasında aynı sonuçların ve düzenin elde edilebilmesi için set.seed() ve random.order=FALSE fonksiyonları kullanılır. Kelimeleri renklerdirmek için brewer.pal() fonksiyonu kullanılır.

set.seed(1234)
wordcloud(words = d$word, freq = d$freq, min.freq = 2,
          max.words=500, random.order=FALSE, rot.per=0.35, 
          colors=brewer.pal(8, "Dark2"))

Yukarıdaki fonksiyonlarının çalıştırılmasıyla elde edilen kelime bulutunun ilk görünümü aşağıdaki gibidir.

Rplot

Görüntüyü daha görsel bir hale sokmak sokmak için yukarıda elde edilen veri çerçevesine ilişkin alternatif kelime bulutları oluşturulmuştur.

Alternatif 1: Kelime Bulutu Kod Bloğu

wordcloud2(d, size=1.6)

Yukarıdaki kod bloğu çalıştırıldığında elde edilen görünüm aşağıdaki gibidir.

Alternatif 1: Kelime Bulutu (Word Cloud)

wordcloud2-1

Alternatif 2: Kelime Bulutu Kod Bloğu

wordcloud2(d, size=1.6, color='random-light', backgroundColor="black")

Yukarıdaki kod bloğu çalıştırıldığında elde edilen görünüm aşağıdaki gibidir.

Rplot02

Alternatif 3: Kelime Bulutu Kod Bloğu

wordcloud2(d, size = 2.3, minRotation = -pi/6, maxRotation = -pi/6, rotateRatio = 1)

Yukarıdaki kod bloğu çalıştırıldığında elde edilen görünüm aşağıdaki gibidir.

Rplot03

Son alternatif de benim sizlere süprizim olsun diyeceğim ama görüyorsunuz :).

Alternatif 3: Kelime Bulutu Kod Bloğu

wordcloud2(d, size = 0.7, shape = 'star')

Yukarıdaki kod bloğu çalıştırıldığında elde edilen görünüm aşağıdaki gibidir.

Rplot04

Kelime bulutu oluşturma süreci tamamladıktan sonra bu süreci biraz daha ileriye taşıyalım. Ortaya konulan kelime bulutlarının sıklıklarına göre grafikler oluşturalım.

Alternatif 1: Grafik Kod Bloğu

install.packages("tidyverse")
library(ggplot2)
str(d)
y<-head(d, 10)
y
ggplot(y)+geom_point(aes(freq, word),col="red",size=4, shape="+")+
labs(subtitle=NULL, y="Kelime Sayısı", x="Kelimeler",title="En Çok Karşılan İlk 10 Kelime", caption = "Source:TBulut")+
xlim(2,7)+
  theme(plot.title = element_text(family = "Trebuchet MS", color="#666666", face="bold", size=18, hjust=0.5)) +
theme(axis.title = element_text(family = "Trebuchet MS", color="#666666", face="bold", size=12))

Yukarıdaki kod bloğunun çalıştırılmasıyla elde edilen grafik aşağıdaki gibidir.

nutukchart-1

Alternatif 2: Grafik Kod Bloğu

install.packages("tidyverse")
library(ggplot2) 
str(d) 
y<-head(d, 10) y
ggplot(y, aes(freq, word))+geom_point(col="red", size=4)+
labs(subtitle=NULL, y="Kelimeler", x="Kelime Sayısı",title="En Çok Karşılan İlk 10 Kelime", caption = "Source:TBulut")+
xlim(2,7)+
    theme(plot.title = element_text(family = "Trebuchet MS", color="#666666", face="bold", size=18, hjust=0.5)) +
theme(axis.title = element_text(family = "Trebuchet MS", color="#666666", face="bold", size=12))

Yukarıdaki kod bloğunun çalıştırılmasıyla elde edilen grafik aşağıdaki gibidir.

wordcloudnutuk-2

Faydalı olması dileğiyle.

Saygılarımla.

Not: Emeğe saygı adına, burda yapılan çalışmanın başka bir mecrada ya da ortamda paylaşılması halinde alındığı yer adının belirtilmesini rica ederim.

Yararlanılan Kaynaklar

  • The R Project for Statistical Computing. https://www.r-project.org/
  • http://ekitap.kulturturizm.gov.tr/TR,81464/nutuk.html (Nutuk adlı eserin metni için)
  • https://www.educba.com/big-data-vs-data-mining/

http://jolt.law.harvard.edu/articles/pdf/v22/22HarvJLTech515.pdf

Önceki yazı Sonraki Yazı
AkışkanlıkBelirsizlikÇeşitlilikData CleaningData MiningHacimKalitatifKelime BulutuMarketerMetin MadenciliğiNitelPazarlamacıQualitativeText MiningVarietyVelocityVeracityVeri MadenciliğiVeri TemizlemeVolumeWord Cloud

Yorum Yaz Cevabı iptal et

Son Yazılar

  • Kanada Sağlık Sisteminde Bekleme Süreleri
  • Araştırma Metodolojisi Notları-II
  • Araştırma Metodolojisi Notları-I
  • Microsoft Excel’de Bulut Endeks-Beta [BE-β] Simülasyonu
  • R’da Statik ve Dinamik Haritalama Vaka Çalışmaları: Türkiye Örneği

Son Yorumlar

  1. Küresel İnovasyon Endeksi 2021 Yılı Raporu ve Türkiye - winally.com - Küresel İnovasyon Endeksi’nde Türkiye Ne Durumda?
  2. R’da Birliktelik Kuralları | canözkan - Apriori Algoritması Üzerine Bir Vaka Çalışması: A Case Study on Apriori Algorithm
  3. Tevfik BULUT - Python’da Şans Oyunları Perspektifinden Olasılık : Probability from Perspective of the Chance Games in Python
  4. Ahmet Aksoy - Python’da Şans Oyunları Perspektifinden Olasılık : Probability from Perspective of the Chance Games in Python
  5. Tevfik BULUT - Z Tablosuna Göre Güven Aralığının Hesaplanmasına Yönelik Bir Simülasyon Çalışması: A Simulation Study for Calculating Confidence Interval by Z Table

Arşivler

  • Ocak 2023
  • Ekim 2022
  • Eylül 2022
  • Nisan 2022
  • Mart 2022
  • Ekim 2021
  • Eylül 2021
  • Ağustos 2021
  • Temmuz 2021
  • Haziran 2021
  • Mayıs 2021
  • Nisan 2021
  • Şubat 2021
  • Ocak 2021
  • Aralık 2020
  • Kasım 2020
  • Ekim 2020
  • Eylül 2020
  • Ağustos 2020
  • Temmuz 2020
  • Haziran 2020
  • Mayıs 2020
  • Nisan 2020
  • Mart 2020
  • Şubat 2020
  • Ocak 2020
  • Aralık 2019
  • Kasım 2019
  • Ekim 2019
  • Eylül 2019
  • Ağustos 2019
  • Mayıs 2019
  • Şubat 2019
  • Aralık 2018
  • Eylül 2018
  • Ağustos 2018
  • Temmuz 2018
  • Mayıs 2018
  • Nisan 2018
  • Ekim 2017
  • Temmuz 2017
  • Haziran 2017
  • Mayıs 2017
  • Ocak 2017

Kategoriler

  • Genel
  • İstatistik
  • Makine Öğrenme
  • Model Geliştirme
  • Sağlık
  • Teknoloji

Kategoriler

  • Genel
  • İstatistik
  • Makine Öğrenme
  • Model Geliştirme
  • Sağlık
  • Teknoloji

Etiketler

Accuracy Basit Tesadüfi Örnekleme Bernoulli Olasılık Dağılımı Confusion Matrix Coronavirus Doğruluk Doğruluk Oranı Dünya Sağlık Örgütü EDA Epidemi Epidemiyology Epidemiyoloji Exploratory Data Analysis Exploratory Data Analysis (EDA) F1 Forecast Keşifsel Veri Analizi Kitle Olasılık Fonksiyonu Koronavirüs Koronavirüs Salgını Olasılık Olasılıklı Örneklem OSB Pandemi Point Estimation Point Forecast Prevalance Prevalans Probability Sampling R Recall Salgın Sağlık Bakanlığı Simple Random Sampling Tahmin TBATS TURKEY TÜRKİYE Veri Madenciliği WHO World Health Organization Yapay Zeka ÇKKV Örneklem Örneklem Büyüklüğü
Logo

Burada, gazete ve dergilerde yayınlanan çalışmalarımın tamamı çalışmakta olduğum kurumdan bağımsız olarak özel hayatımda yaptığım çalışmalardır. Dolayısıyla, burada yer alan çalışmalardan emeğe saygı adına kaynak gösterilmesi suretiyle azami ölçüde herkes yararlanabilir.

Site Haritası

  • Ana Sayfa
  • Hakkında
  • Blog
  • İletişim

Linkler

  • winally.com

Bana Ulaşın

Bu sayfa, bazı temel bilgilerin ve bir iletişim formunun yer aldığı bir iletişim sayfasıdır. Suç teşkil edecek, yasadışı, tehditkar, rahatsız edici, hakaret ve küfür içeren, aşağılayıcı, küçük düşürücü, kaba, müstehcen, ahlaka aykırı, kişilik haklarına zarar verici ya da benzeri niteliklerde içeriklerden doğan her türlü mali, hukuki, cezai, idari sorumluluk içeriği gönderen Kişilere aittir.

  • Email: buluttevfik@gmail.com

© Copyright 2022 Tevfik Bulut