Tokenization এবং Sentiment Analysis হল Natural Language Processing (NLP) এর দুটি গুরুত্বপূর্ণ পদক্ষেপ, যা টেক্সট ডেটা বিশ্লেষণ এবং বোঝার জন্য ব্যবহৃত হয়। টোকেনাইজেশন হল টেক্সট ডেটাকে ছোট ছোট অংশে ভাগ করার প্রক্রিয়া এবং সেনটিমেন্ট অ্যানালাইসিস হল একটি টেক্সটের অনুভূতি বা মানসিক অবস্থার বিশ্লেষণ। এই দুটি টপিক বিশেষভাবে Social Media Monitoring, Customer Feedback, এবং Product Reviews এর মতো ক্ষেত্রে গুরুত্বপূর্ণ।
এখানে আমরা আর-এ Tokenization এবং Sentiment Analysis কীভাবে করতে হয়, তা বিস্তারিত আলোচনা করব।
১. Tokenization (টোকেনাইজেশন)
Tokenization হল একটি প্রক্রিয়া যার মাধ্যমে একটি বড় টেক্সট ডকুমেন্টকে ছোট ছোট অংশ (যেমন, শব্দ বা বাক্য) এ ভাগ করা হয়। এটি NLP-তে একটি মৌলিক পদক্ষেপ, কারণ টোকেনাইজেশন ছাড়া টেক্সট ডেটা বিশ্লেষণ করা সম্ভব নয়। টোকেনাইজেশন বিভিন্নভাবে করা যায়, যেমন শব্দভিত্তিক (word-level) বা বাক্যভিত্তিক (sentence-level)।
Tokenization এর জন্য প্যাকেজ
আর-এ টোকেনাইজেশন করতে সাধারণত tidytext বা tokenizers প্যাকেজ ব্যবহার করা হয়।
উদাহরণ: Tokenization with tidytext
# tidytext প্যাকেজ লোড করা
install.packages("tidytext")
library(tidytext)
# ডেটা তৈরি করা
text <- "R programming is great for data analysis. Natural Language Processing is powerful."
# টেক্সটটিকে টোকেনাইজ করা (word level)
tokenized_data <- data_frame(text = text) %>%
unnest_tokens(word, text)
# টোকেনাইজড ডেটা দেখা
print(tokenized_data)
এখানে unnest_tokens() ফাংশনটি টেক্সটকে শব্দ ভিত্তিক টোকেনে ভেঙে ফেলবে।
বাক্যভিত্তিক টোকেনাইজেশন:
# বাক্যভিত্তিক টোকেনাইজেশন
tokenized_sentences <- data_frame(text = text) %>%
unnest_tokens(sentence, text, token = "sentences")
print(tokenized_sentences)
এখানে টেক্সটটি বাক্যভিত্তিক টোকেনে ভাগ করা হয়েছে, যেখানে token = "sentences" ব্যবহার করা হয়েছে।
২. Sentiment Analysis (সেনটিমেন্ট অ্যানালাইসিস)
Sentiment Analysis একটি টেক্সটের মধ্যে থাকা অনুভূতি বা মানসিক অবস্থা নির্ধারণের প্রক্রিয়া। এটি সাধারণত positive, negative, বা neutral অনুভূতি চিহ্নিত করতে ব্যবহৃত হয়। সেনটিমেন্ট অ্যানালাইসিসে text mining এবং NLP techniques এর সাহায্যে একটি টেক্সটের মধ্যে থাকা শব্দগুলোর ভিত্তিতে মনোভাব নির্ধারণ করা হয়।
Sentiment Analysis এর জন্য প্যাকেজ
আর-এ সেনটিমেন্ট অ্যানালাইসিস করতে tidytext, syuzhet, বা sentimentr প্যাকেজগুলি ব্যবহৃত হয়। syuzhet প্যাকেজটি NRC, AFINN, এবং Bing সেনটিমেন্ট ডিকশনারি ব্যবহার করে।
উদাহরণ: Sentiment Analysis with tidytext
# tidytext প্যাকেজ লোড করা
install.packages("tidytext")
library(tidytext)
# ডেটা তৈরি করা
text <- "I love programming in R. It is very fun and interesting."
# টেক্সটটিকে টোকেনাইজ করা (word level)
tokenized_data <- data_frame(text = text) %>%
unnest_tokens(word, text)
# সেনটিমেন্ট ডেটা লোড করা (Bing ডিকশনারি)
sentiment_data <- get_sentiments("bing")
# টোকেনাইজড ডেটার সাথে সেনটিমেন্ট যোগ করা
sentiment_analysis <- tokenized_data %>%
inner_join(sentiment_data, by = "word")
# সেনটিমেন্ট দেখানো
sentiment_summary <- sentiment_analysis %>%
count(sentiment)
print(sentiment_summary)
এখানে, get_sentiments("bing") ফাংশনটি Bing Sentiment Dictionary ব্যবহার করে এবং আমরা টোকেনাইজড ডেটার প্রতি শব্দের সেনটিমেন্ট চিহ্নিত করে দেখি। এর মাধ্যমে আমরা positive এবং negative শব্দের সংখ্যা জানাতে পারি।
উদাহরণ: Sentiment Analysis with syuzhet
# syuzhet প্যাকেজ লোড করা
install.packages("syuzhet")
library(syuzhet)
# টেক্সট ডেটা
text <- "I love programming in R. It is very fun and interesting."
# সেনটিমেন্ট স্কোর বের করা
sentiment_score <- get_nrc_sentiment(text)
# সেনটিমেন্ট স্কোর দেখানো
print(sentiment_score)
এখানে get_nrc_sentiment() ফাংশনটি NRC ডিকশনারি ব্যবহার করে টেক্সটের মোট সেনটিমেন্ট স্কোর বের করবে এবং আমরা দেখব প্রতি সেনটিমেন্টের স্কোর (যেমন, রেগুলার, পজিটিভ, নেগেটিভ, ইত্যাদি)।
৩. Text Classification for Sentiment Analysis
Sentiment Analysis-এর একটি প্রক্রিয়া হলো Text Classification যেখানে আমরা বিভিন্ন শ্রেণীতে (যেমন, positive, negative, neutral) টেক্সটকে শ্রেণীবদ্ধ করি। আর-এ এই কাজটি করতে Naive Bayes, Support Vector Machines (SVM), অথবা Decision Trees ব্যবহার করা হয়।
উদাহরণ: Sentiment Classification with Naive Bayes
# e1071 প্যাকেজ লোড করা
install.packages("e1071")
library(e1071)
# ট্রেনিং ডেটা তৈরি
training_data <- data.frame(
text = c("I love R programming", "I hate bugs in code", "R is very fun"),
sentiment = factor(c("positive", "negative", "positive"))
)
# Naive Bayes মডেল তৈরি
model <- naiveBayes(sentiment ~ text, data = training_data)
# নতুন টেক্সটের জন্য প্রেডিকশন করা
new_text <- data.frame(text = c("I enjoy coding in R"))
prediction <- predict(model, new_text)
print(prediction)
এখানে, Naive Bayes মডেল তৈরি করা হয়েছে এবং এটি positive বা negative হিসেবে নতুন টেক্সটকে শ্রেণীবদ্ধ করবে।
সারাংশ
Tokenization এবং Sentiment Analysis হল Natural Language Processing এর দুটি গুরুত্বপূর্ণ অংশ যা আর প্রোগ্রামিংয়ে অত্যন্ত সহজে করা যায়। Tokenization টেক্সটকে ছোট ছোট অংশে ভাগ করে, যা পরবর্তী বিশ্লেষণের জন্য প্রয়োজনীয়, এবং Sentiment Analysis একটি টেক্সটের অনুভূতি বা মানসিক অবস্থাকে চিহ্নিত করে, যা বিভিন্ন ব্যবসায়িক সমস্যা যেমন গ্রাহক প্রতিক্রিয়া, সেন্টিমেন্ট অ্যানালাইসিস, এবং ব্র্যান্ড মনিটরিং এর জন্য ব্যবহৃত হয়। tidytext, syuzhet, এবং e1071 প্যাকেজগুলির মাধ্যমে এই বিশ্লেষণগুলো খুবই কার্যকরীভাবে করা যায়।
Read more