Wordclouds এবং Text Data Visualization গাইড ও নোট

Computer Programming - আর প্রোগ্রামিং (R Programming) - Text Mining এবং Natural Language Processing (টেক্সট মাইনিং এবং প্রাকৃতিক ভাষা প্রক্রিয়াকরণ)
245

R প্রোগ্রামিং: Wordclouds এবং Text Data Visualization

Wordclouds এবং Text Data Visualization হল টেক্সট ডেটা বিশ্লেষণ এবং প্রেজেন্টেশনের জন্য শক্তিশালী ভিজ্যুয়াল টুলস। এগুলি মূলত শব্দের ফ্রিকোয়েন্সি, সম্পর্ক এবং কন্টেন্টের গঠন বুঝতে সহায়ক। R-এ wordcloud তৈরি করতে এবং অন্যান্য text data visualization করতে কয়েকটি প্যাকেজ এবং টেকনিক রয়েছে, যার মধ্যে wordcloud, tm, ggplot2, tidytext, এবং textdata প্যাকেজগুলি বেশ জনপ্রিয়।

এখানে, Wordcloud তৈরি এবং Text Data Visualization করার জন্য R-এ কিছু উদাহরণ দেওয়া হয়েছে।


১. Wordclouds (ওয়ার্ড ক্লাউড)

Wordcloud হল একটি জনপ্রিয় টুল, যা টেক্সট ডেটাতে বিভিন্ন শব্দের ফ্রিকোয়েন্সি দেখানোর জন্য ব্যবহৃত হয়। শব্দগুলোকে তাদের ফ্রিকোয়েন্সি অনুযায়ী সাইজ এবং রঙে প্রদর্শন করা হয়। বেশি ব্যবহৃত শব্দগুলির আকার বড় এবং কম ব্যবহৃত শব্দগুলির আকার ছোট হয়।

১.১ wordcloud প্যাকেজ ইনস্টল এবং লোড করা

install.packages("wordcloud")
library(wordcloud)

১.২ Wordcloud তৈরি করা

ধরা যাক, আমাদের কাছে একটি টেক্সট ডেটা রয়েছে এবং আমরা তার উপর একটি ওয়ার্ড ক্লাউড তৈরি করতে চাই।

# ডেটা তৈরি
text <- c("R is great for data analysis", 
          "Data science is exciting", 
          "I love using R for data visualization", 
          "Data analysis with R is powerful", 
          "Text mining and wordcloud are fun")

# টেক্সট থেকে শব্দের ফ্রিকোয়েন্সি বের করা
library(tm)
text_corpus <- Corpus(VectorSource(text))
text_corpus <- tm_map(text_corpus, content_transformer(tolower))
text_corpus <- tm_map(text_corpus, removePunctuation)
text_corpus <- tm_map(text_corpus, removeNumbers)
text_corpus <- tm_map(text_corpus, removeWords, stopwords("en"))
text_corpus <- tm_map(text_corpus, stripWhitespace)

# ডেটা থেকে শব্দের ফ্রিকোয়েন্সি তৈরি
tdm <- TermDocumentMatrix(text_corpus)
matrix <- as.matrix(tdm)
word_freqs <- sort(rowSums(matrix), decreasing = TRUE)
word_freq_table <- data.frame(word = names(word_freqs), freq = word_freqs)

# Wordcloud তৈরি
wordcloud(words = word_freq_table$word, freq = word_freq_table$freq, min.freq = 1, scale = c(3,0.5), colors = brewer.pal(8, "Dark2"))

এখানে, wordcloud() ফাংশনটি শব্দ এবং তাদের ফ্রিকোয়েন্সি দিয়ে একটি Wordcloud তৈরি করেছে।


২. Text Data Visualization (টেক্সট ডেটা ভিজ্যুয়ালাইজেশন)

টেক্সট ডেটা বিশ্লেষণের জন্য ggplot2, tidytext, এবং textdata প্যাকেজ ব্যবহার করে বিভিন্ন ধরনের ভিজ্যুয়ালাইজেশন তৈরি করা যায়। এই ভিজ্যুয়ালাইজেশনগুলি শব্দের ফ্রিকোয়েন্সি, শব্দের সম্পর্ক এবং অন্যান্য প্যাটার্ন বুঝতে সাহায্য করে।

২.১ ggplot2 ব্যবহার করে Text Data Visualization

ggplot2 প্যাকেজ ব্যবহার করে আপনি শব্দের ফ্রিকোয়েন্সি বা অন্যান্য টেক্সট ডেটা ভিজ্যুয়ালাইজ করতে পারেন। এখানে একটি bar plot দেখানো হয়েছে যা টেক্সট ডেটার ফ্রিকোয়েন্সি গ্রাফ করে।

library(ggplot2)

# বার প্লট তৈরি করা
ggplot(word_freq_table, aes(x = reorder(word, -freq), y = freq)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  labs(title = "Word Frequency", x = "Words", y = "Frequency") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

এখানে, reorder() ফাংশন ব্যবহার করে শব্দগুলিকে তাদের ফ্রিকোয়েন্সির ভিত্তিতে সাজানো হয়েছে এবং geom_bar() দ্বারা বার প্লট তৈরি করা হয়েছে।

২.২ Tidytext প্যাকেজ ব্যবহার করে Text Data Analysis

tidytext প্যাকেজে টেক্সট ডেটার বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশন করতে সহজ এবং কার্যকরী টুলস রয়েছে।

# tidytext প্যাকেজ ইনস্টল এবং লোড করা
install.packages("tidytext")
library(tidytext)

# টেক্সট ডেটা বিশ্লেষণ
text_data <- data.frame(line = 1:5, text = c("R is great for data analysis", 
                                              "Data science is exciting", 
                                              "I love using R for data visualization", 
                                              "Data analysis with R is powerful", 
                                              "Text mining and wordcloud are fun"))

# tidytext ব্যবহারে টেক্সট ডেটা তৈরি
text_tidy <- text_data %>%
  unnest_tokens(word, text) %>%
  anti_join(stop_words)

# শব্দের ফ্রিকোয়েন্সি বের করা
word_freq_tidy <- text_tidy %>%
  count(word, sort = TRUE)

# ফ্রিকোয়েন্সি প্লট তৈরি
ggplot(word_freq_tidy, aes(x = reorder(word, -n), y = n)) +
  geom_bar(stat = "identity", fill = "coral") +
  labs(title = "Top Words Frequency", x = "Words", y = "Frequency") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

এখানে unnest_tokens() ফাংশন দ্বারা টেক্সট ডেটাকে tidy format-এ রূপান্তরিত করা হয়েছে এবং anti_join(stop_words) দ্বারা স্টপওয়ার্ড (যেমন "the", "is", "and") বাদ দেওয়া হয়েছে। এরপর, ggplot2 ব্যবহার করে ফ্রিকোয়েন্সি প্লট তৈরি করা হয়েছে।

২.৩ Word Associations (শব্দের সম্পর্ক)

শব্দের মধ্যে সম্পর্ক বুঝতে co-occurrence matrix ব্যবহার করা যেতে পারে। এটি দেখে, আমরা দেখতে পারব কোন শব্দ একে অপরের সাথে কতটা ঘনিষ্ঠভাবে উপস্থিত।

library(tidytext)
library(igraph)

# শব্দের কো-অকরেন্স ম্যাট্রিক্স তৈরি
word_pairs <- text_tidy %>%
  pairwise_count(word, line, sort = TRUE)

# Network visualization (শব্দের সম্পর্ক)
word_graph <- graph_from_data_frame(word_pairs)

# Network গ্রাফ তৈরি
plot(word_graph, vertex.size = 10, vertex.label.cex = 0.8, vertex.label.dist = 1)

এখানে, pairwise_count() ফাংশন দ্বারা শব্দগুলির সম্পর্ক বা কো-অকরেন্স বের করা হয়েছে এবং igraph প্যাকেজের মাধ্যমে একটি network graph তৈরি করা হয়েছে।


সারসংক্ষেপ

  • Wordcloud: শব্দের ফ্রিকোয়েন্সি দেখানোর জন্য একটি জনপ্রিয় ভিজ্যুয়ালাইজেশন টুল। এটি wordcloud() ফাংশন দিয়ে তৈরি করা হয়।
  • ggplot2: টেক্সট ডেটার ফ্রিকোয়েন্সি বা অন্যান্য প্যাটার্নের গ্রাফিক্যাল উপস্থাপন করতে ব্যবহৃত হয়। geom_bar() বা geom_line() এর মাধ্যমে ডেটা ভিজ্যুয়ালাইজ করা যায়।
  • tidytext: টেক্সট ডেটার বিশ্লেষণ এবং ফ্রিকোয়েন্সি বিশ্লেষণের জন্য একটি শক্তিশালী প্যাকেজ। unnest_tokens() এবং anti_join() এর মাধ্যমে টেক্সট ডেটাকে প্রস্তুত করা হয় এবং এরপর ggplot2 দিয়ে ভিজ্যুয়ালাইজ করা যায়।
  • Word Associations: শব্দের মধ্যে সম্পর্ক বিশ্লেষণ করতে co-occurrence matrix এবং igraph ব্যবহার করা হয়।

এই পদ্ধতিগুলির মাধ্যমে আপনি টেক্সট ডেটা বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশনের ক্ষেত্রে আরও কার্যকরী ফলাফল পেতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...