Xử lý văn bản Twitter

Phân tích dữ liệu mạng xã hội bằng R

Vivek Vijayaraghavan

Data Science Coach

Tổng quan bài học

  • Tại sao xử lý văn bản tweet?
  • Các bước xử lý văn bản tweet
    • loại bỏ thông tin dư thừa
    • Chuyển văn bản thành corpus
    • Loại bỏ từ dừng
Phân tích dữ liệu mạng xã hội bằng R

Vì sao xử lý văn bản tweet?

  • Văn bản tweet không cấu trúc, nhiễu, thô
  • Có biểu tượng cảm xúc, URL, số
  • Cần làm sạch để phân tích và có kết quả tin cậy
Phân tích dữ liệu mạng xã hội bằng R

Các bước xử lý văn bản

Bước 1: Loại bỏ thông tin dư thừa

Phân tích dữ liệu mạng xã hội bằng R

Các bước xử lý văn bản

Bước 2: Chuyển văn bản thành corpus

Phân tích dữ liệu mạng xã hội bằng R

Các bước xử lý văn bản

Bước 3: Chuyển thành chữ thường

Phân tích dữ liệu mạng xã hội bằng R

Các bước xử lý văn bản

Bước 4: Loại bỏ từ dừng

Phân tích dữ liệu mạng xã hội bằng R

Trích xuất văn bản tweet

# Extract 1000 tweets on "Obesity" in English and exclude retweets
tweets_df <- search_tweets("Obesity", n = 1000, include_rts = F, lang = 'en')
# Extract the tweet texts and save it in a data frame
twt_txt <- tweets_df$text
Phân tích dữ liệu mạng xã hội bằng R

Trích xuất văn bản tweet

head(twt_txt, 3)
[1] "@WeeaUwU for real, obesity should not be praised like it is in today's society" 

[2] "Great work by @DosingMatters in @AJHPOfficial on \"Vancomycin Vd estimation in 
adults with class III obesity\". As we continue to study/learn more about dosing in 
large body weight pts, we see that it's not a simple, one size, one level estimate 
that works https://t.co/KkYPqS6JzG" 

[3] "The Scottish Government have an ambition to halve childhood obesity by 2030. 
This means reducing obesity prevalence in 2-15yo children in Scotland to 7%. 
\n\n\U0001f449 In 2018, this figure was 16%\n\nFind out more in our latest blog: 
https://t.co/FWp56QWjQc https://t.co/XBK8Je7F1A"
Phân tích dữ liệu mạng xã hội bằng R

Loại bỏ URL

# Remove URLs from the tweet text
library(qdapRegex)
twt_txt_url <- rm_twitter_url(twt_txt)
Phân tích dữ liệu mạng xã hội bằng R

Loại bỏ URL

twt_txt_url[1:3]
[1] "@WeeaUwU for real, obesity should not be praised like it is in today's society"

[2] "Great work by @DosingMatters in @AJHPOfficial on \"Vancomycin Vd estimation in  adults 
with class III obesity\". As we continue to study/learn more about dosing in large body 
weight pts, we see that it's not a simple, one size, one level estimate that works"

[3] "The Scottish Government have an ambition to halve childhood obesity by 2030. 
This means reducing obesity prevalence in 2-15yo children in Scotland to 7%. 
\U0001f449In 2018, this figure was 16% Find out more in our latest blog:"  
Phân tích dữ liệu mạng xã hội bằng R

Ký tự đặc biệt, dấu câu & số

# Remove special characters, punctuation & numbers
twt_txt_chrs  <- gsub("[^A-Za-z]", " ", twt_txt_url)
Phân tích dữ liệu mạng xã hội bằng R

Ký tự đặc biệt, dấu câu & số

twt_txt_chrs[1:3]
[1] " WeeaUwU for real  obesity should not be praised like it is in today s society"

[2] "Great work by  DosingMatters in  AJHPOfficial on  Vancomycin Vd estimation in 
adults with class III obesity   As we continue to study learn more about dosing in 
large body weight pts  we see that it s not a simple  one size  one level estimate 
that works"

[3] "The Scottish Government have an ambition to halve childhood obesity by       This 
means reducing obesity prevalence in     yo children in Scotland to       In       this 
figure was     Find out more in our latest blog "   
Phân tích dữ liệu mạng xã hội bằng R

Chuyển thành corpus văn bản

# Convert to text corpus
library(tm)
twt_corpus <- twt_txt_chrs %>% 
                VectorSource() %>% 
                Corpus()
twt_corpus[[3]]$content
[1] "The Scottish Government have an ambition to halve childhood obesity by       
This means reducing obesity prevalence in     yo children in Scotland to       In  
     this figure was     Find out more in our latest blog "
Phân tích dữ liệu mạng xã hội bằng R

Chuyển thành chữ thường

  • Không nên tính một từ thành hai từ khác nhau chỉ vì khác chữ hoa/thường
# Convert text corpus to lowercase
twt_corpus_lwr <- tm_map(twt_corpus, tolower) 
twt_corpus_lwr[[3]]$content
[1] "the scottish government have an ambition to halve childhood obesity by     this 
means reducing obesity prevalence in     yo children in scotland to       in    this 
figure was     find out more in our latest blog "
Phân tích dữ liệu mạng xã hội bằng R

Từ dừng là gì?

  • Từ dừng là các từ thường gặp như a, an, and, but
# Common stop words in English
stopwords("english")

Danh sách từ dừng mặc định (tiếng Anh)

Phân tích dữ liệu mạng xã hội bằng R

Loại bỏ từ dừng

  • Cần loại bỏ từ dừng để tập trung vào từ quan trọng
# Remove stop words from corpus
twt_corpus_stpwd <- tm_map(twt_corpus_lwr, removeWords, stopwords("english"))
twt_corpus_stpwd[[3]]$content

[1] " scottish government   ambition  halve childhood obesity         means 
reducing obesity prevalence      yo children  scotland                figure      
find     latest blog "
Phân tích dữ liệu mạng xã hội bằng R

Xóa khoảng trắng thừa

  • Xóa khoảng trắng thừa để có corpus sạch
# Remove additional spaces
twt_corpus_final <- tm_map(twt_corpus_stpwd, stripWhitespace)
twt_corpus_final[[3]]$content
[1] " scottish government ambition halve childhood obesity means reducing obesity 
prevalence yo children scotland figure find latest blog "
Phân tích dữ liệu mạng xã hội bằng R

Ayo berlatih!

Phân tích dữ liệu mạng xã hội bằng R

Preparing Video For Download...