R Notları: Metinlerde Sıklık Analizi ve Corpus Sorunu Üzerine

Elinizdeki bir metinde yer alan kelimelerin sıklığını analiz etmek ve daha sonra görselleştirebilmek için R’a başvurabilirsiniz. Ben özellikle sosyal medya platformlarından edindiğim hashtagleri incelerken R kütüphanelerini kullanmayı tercih ediyorum. Bu tercih sırasında yaşadığım bir sorunu çözümüyle birlikte paylaşmak istedim. Öncelikle incelenmek üzere ele aldığım listesini aktarıyoruz. Burada tek operatör içerisinde metinleri işlemek sorun yarattığı için bölerek ilerliyoruz:

text <- c("#aprilfoolsprank #aprilfools #prank #prankster #teacher #learnontiktok #learnwithme #bellathorne #creators #learnontiktok #dailymail #dtatdm #investigation #news #breakingnews #ohno #GoForTheHandful #learnwithme #lizard #chaos #GoForTheHandful #GetCrocd #lol #shocking #ohno #wow #scary #closecall #ohno #scary #changedmylifecheck #news #mask #airplane #drama #covid #covid #karen #news #dog #lol #cute #love #funny #GetCrocd #GoForTheHandful #adorableanimals #goldenretrieverlife #GoForTheHandful #goodboy #dog #germanshepherd #cop #police #puppiesonly #dogs #myweirdpet #lol #funny #fitfam #fitness #pizza #comedy #skit #trynottolaugh #hacks #learnwithme #kitten #cute #love #adorable #animals #puppiesonly #kittensoftiktok #catsoftiktok #moodboost #autismawareness #autism #learnontiktok #learnwithme #dailymail #driving #cartok #Subaru #heartwarming #epic #omg #lol #wow #myweirddog #myweirdpet #puppiesonly #fetch #viral #dogsoftiktok #cows #funny #learnwithme #cute #puppiesonly #wholesome #heartwarming #greenscreen #learnontiktok #dtatdm #billionaire #forbes #kimkardashian #kimk #kkwfragrance #kkwbeauty #skims #kim #puppiesontiktok #aww #cute #love #wholesome #hellospring #adorable #adorableanimals #cute #parrot #bird #birds #love #wholesome #chaos #myweirdpet #dog #bloopers #newsbloopers #dogs #goldenretrieverlife #myweirdpet #ohno #wow #lol #bewareofdog #haha #myweirddog #puppiesonly #lmao #dailymail #dog #dogs #adorableanimals #parrot #myweirdpet #lol #funny #birds #adorableanimals #ohno #dailymail #cute #lol #funny #adorableanimals #funny #trynottolaugh #myweirdpet #dogs #puppiesonly #puppy #dog #homerenovation #DIY #remodel #hgtv #redesign #fail #ouch #ohno #oops #lol #viral #donkey #myweirdpet #funny #trynottolaugh #lmao #omg #moodboost #cute #dog #mycutepet #myweirdpet #aww #haha #lol #omg #viral #monkey #vacationmode #funny #lol #omg #haha #dinnerparty #dog #loyal #cute #gettheretogether #puppiesonly #fitnesslife #rescue #adorableanimals #dogs #heartwarming #shocking #ohno #fail #scary #car #cars #cartok #wow #dtatdm #learnontiktok #celebrity #demi #dailymail #themail #storytime #yasclean #stylehacks #sheearnedit #nowyouknow #dailymail #kitten #kittens #cute #meme #relate #relateable #vineenergy #viral #adorableanimals #funny #puppiesonly #dogs #myweirdpet #myweirddog #lol #haha #meme #vine #dailymail #ships #learnontiktok #ships #themoreyouknow #epic #wow #closecall #ocean #puppies #puppiesonly #dailymail #adorable #adorableanimals #epic #heartwarming #FindYourCore #puppies #dailymail #cute #adorableanimals #heartwarming #puppiesonly #pup #puppiesoftiktok #puppy #jimmyfallon #rupaul #rupaulsdragrace #meme #vineenergy #viral #cats #YasClean #FindYourCore #myweirdpet #cattok #relatable #viral #meme #FindYourCore #YasClean #funny #omg #how #ohno #reddit")

text1 <- c("#perfecttimming #viral #fall #greenscreen #lilnasx #satanshoe #lawsuit #nike #law #ohno #learnontiktok #dtatdm #sneakers #sneakertok#asianamerican #veteran #speech #news #dailymail #smart #invention #dogs #cute #adorable #aww #makeup #beautytok #chipotle #unboxing #YasClean #FindYourCore #storytime #cute #fashion #beauty #review #epic #raccoon #cute #love #awe #YasClean #FindYourCore #adorableanimals #moodboost #learnontiktok #wholesome #FindYourCore #SourPatchPrankFund #bears #dailymail #aww #cuteanimals #babyanimals #FindYourCore #SourPatchPrankFund #cuteanimals #koala #dog #dogs #love #adorable #heartwarming #cats #cat #cute #funny #FindYourCore #SourPatchPrankFund #myweirdcat #myweirddog #wow #meme #drama #learnontiktok #dtatdm #lilnasx #satanshoes #news #storytime #montero #dailymail #sneaker #sneakertok #airmax #FindYourCore #mask #maskup #mexico #covid19 #DontSweatIt #dtatdm #ohno #dailymail #news #facemask #cdc #who #dog #dogs #dogathlete #crowdcheers #epic #DontSweatIt #viral #meme #gabbythedog #TedCruz #facemask #dailymail #covid #news #politics #wow #cinamontoastcrunch #shrimp #boymeetsworld #omg #dailymail #news #wow #how #ohno #PlantersTrickShot #DontSweatIt #storytime #RayBanElevatorDance #meercat #relate #DontSweatIt #funny #myweirdpet #omg #ohno #fail #PlantersTrickShot #dtatdm #dailymail #omg #handsanitizer #learnontiktok #new #breakingnews #ohno #covid #germs #cancer #science #turtle #turtles #myweirdpet #cute #love #funny #PlantersTrickShot #DontSweatIt #BiggerIsBetter #haha #meme #pet #fail #oops #ohno #PlantersTrickShot #DontSweatIt #BiggerIsBetter #ohmygod #ice #slippery #clumsy #fall #haha #dailymail #dtatdm #harry #meghanmarkle #princeharry #harryandmeghan #royals #oprah #oprahinterview #learnontiktok #storytime #news #themoreyouknow #DontSweatIt #karma #omg #shocking #ohno #watchout #oops #wow #animalrescue #DontSweatIt #animals #armylife #BiggerIsBetter #trashpanda #raccoon #womenempowerment #training #fitness #DontSweatIt #EnvisionGreatness #learnontiktok #selfdefense #nyc #DontSweatIt #fail #ohno #oops #BiggerIsBetter #shocking #news #nyc #timessquare #cute #BiggerIsBetter #ShowerWithMoxie #EnvisionGreatness #love #cute #adorable #adorableanimals #mycutepet #wow #funny #shocking #BiggerIsBetter #ShowerWithMoxie #EnvisionGreatness #squrriel #ohno #fail #spiders #scary #nightmare #BiggerIsBetter #ShowerWithMoxie #EnvisionGreatness #australia #BiggerIsBetter")

text2 <- c("#ShowerWithMoxie #EnvisionGreatness #snacking #food #meme #foodies #ShowerWithMoxie #BiggerIsBetter #EnvisionGreatness #cats #myweirdcat #myweirdpet #lol #funny #joebiden #president #presidentjoebiden #trip #stairs #ohno #fail #dog #funny #sneaky #lol #myweirdpet #myweirddog #OverShareInYourUnderwear #funny #omg #funny #dogsoftiktok #goals #OverShareInYourUnderwear #lol #goldenretrieverlife #myweirddog #myweirdpet #cat #clingypet #mycatisclingy #lol #relate #dailymail #omg #lol #funny #OverShareInYourUnderwear #AirPodsJUMP #funny #relateable #amazing #relate #cuteanimals #OverShareInYourUnderwear #haha #lol #dailymail #dtatdm #Nintendo #Nintendoworld #Universalstudios #amusementpark #learnontiktok #OverShareInYourUnderwear #supermario #gamer #dtatdm #blonde #billieeilish #billie #ilovebillieeilish #storytime #beauty #learnontiktok #hair #hairdye #haircut #wow #greenscreen #greenscreenvideo #hippo #dailymail #cute #herstory #adorable #adorableanimals #wholesome #heartwarming #love #wow #skills #crowdcheers #dog #police #policedog #training #fit #learnontiktok #epic #AirPodsJUMP #stpatricksday #stpatricksfestival #AirPodsJUMP #chicago #chicagoriver #green #howto #wow #learnontiktok #dogs #stpatricksday #stpatricksfestival #dailymail #cute #cuteanimals #love #aww #bulldog #happystpatricksday #cat #cats #dailymail #funny #lol #trynottolaugh #cute #cuteanimals #AirPodsJUMP #pleasedontgo #stpattysday #jlo #AirPodsJUMP #dtatdm #arod #love #lovestory #news #celeb #dailymail #herstory #jenniferlopez #alexrodriguez #breakup #AirPodsJUMP #herstory #proposal #omg #cute #heartwarming #love #inlove #crowdcheers #herstory #heartwarming #crowdcheers #AirPodsJUMP #dailymail")

Ben işlem sürecinde kullandığım hashtaglerin bir kısmını burada ele aldım ve üçe bölerek metinleri yükledim. Şimdi bunları tek metinde birleştirelim:

anatext = paste(text, text1, text2)

anatext dosyası yukarıda gördüğümüz üç metini tek dosyada topladı. Bir sonraki adımda ihtiyacımız olan kütüphaneleri indirerek yüklüyoruz.

install.packages("tm")
install.packages("SnowballC")
install.packages("wordcloud")
install.packages("RColorBrewer")

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

Daha sonra anatext dosyamızı corpus olarak R’da işleyeceğiz. Yazının sonunda paylaşacağım ilk kaynak kodlarında sorun yaşamıştım. Orada operatörü “Corpus” olarak gösteriyordu. Yine yazı sonunda paylaştığım diğer kaynakta operatörü “VCorpus” olarak kullanmanın sorunu çözdüğünü gördüm. Inspect operatörü ise elimizdeki materyalin metaverisini göstermektedir.

docs <- VCorpus(VectorSource(anatext))

inspect(docs)

Tospace ve tm_map fonksiyonları metinde değişiklik yapmak istediğimiz değişikliklere müdahale ediyor. Örneğin ben hashtag ‘#’ işaretlerini metinden çıkartacağım.

toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))

docs <- tm_map(docs, toSpace, "#")

Metinde ayıklamalarımızı tamamladıktan sonra elimizdekileri tdm fonksiyonu ile matrixe dönüştürüp metinde o terimden kaç tane olduğunu hesaplıyoruz.

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

Son olarak elde ettiğimiz metini görselleştirerek en sık kullanılan on hashtag’i ortaya çıkarmış oluyoruz:

barplotson1 <- barplot(d[1:10,]$freq, las = 2, names.arg = d[1:10,]$word,
col ="lightgreen",
ylab = "Kelime Sıklıkları",
font.lab=1, cex.names=0.6)

Elimizdeki görsel aşağıdaki gibi olacaktır:

Çalışmada kullandığım kaynaklar: Text mining and word cloud fundamentals in R : 5 simple steps you should know

TermDocumentMatrix not working on corpus

Share

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir