시작하기무료로 시작하기

스케일링된 비교 워드 클라우드

임대 리뷰의 극성 점수에서 발생하는 "점수 인플레이션" 현상을 기억하시나요? 때로는 점수를 0으로 스케일링한 뒤 코퍼스를 분리하는 방법이 새로운 인사이트를 발견하는 데 도움이 됩니다. 평균이 0으로 조정되므로, 이전에 긍정으로 분류되었던 댓글 일부가 부정 섹션으로 이동하거나 그 반대가 될 수 있습니다. 이 연습 문제에서는 점수를 스케일링한 뒤 comparison.cloud()를 다시 시각화해 봅니다. "점수 인플레이션"을 제거하면 추가적인 인사이트를 얻는 데 도움이 됩니다.

이전에는 bos_reviews$commentspolarity()를 적용하여 comparison.cloud()를 생성했습니다. 이번 연습 문제에서는 comparison.cloud()를 만들기 전에 scale()을 적용해 결과를 스케일링합니다. 시각화 결과가 어떻게 달라지는지 확인해 보세요!

이 연습 문제는 복습 위주로 구성되어 있어 코드 대부분이 이미 작성되어 있습니다. 올바른 객체와 매개변수만 채워 넣으면 됩니다!

이 연습은 강의의 일부입니다

R을 활용한 감성 분석

강의 보기

연습 안내

  • 미리 불러온 bos_pol$all에서 [1:6,1:3]으로 인덱싱하여 일부 데이터를 확인합니다.
  • bos_pol$all$polarity 열에 scale()을 적용한 결과를 scaled_polarity라는 새 열로 추가합니다.
  • 긍정 댓글은 새 열 bos_reviews$scaled_polarity가 0보다 (>) 경우를 subset()으로 추출합니다.
  • 부정 댓글은 새 열 bos_reviews$scaled_polarity가 0보다 작은 (<) 경우를 subset()으로 추출합니다.
  • pos_commentspaste()를 적용하여 pos_terms를 생성합니다.
  • neg_commentspaste()를 적용하여 neg_terms를 생성합니다.
  • 축소된 문서인 pos_termsneg_termsall_terms라는 단일 코퍼스로 정리합니다.
  • tm 워크플로우에 따라 all_termsVectorSource()를 적용한 뒤, 이를 VCorpus() 안에 중첩시킵니다.
  • all_corpus 객체를 사용하여 TermDocumentMatrix()를 생성합니다. 이 TDM은 TfIdf 가중치와 기본 정제 함수가 적용되어 있습니다.
  • as.matrix()를 사용하여 all_tdmall_tdm_m으로 변환합니다. 그런 다음 기존 코드에서 열 이름을 "positive""negative"로 변경합니다.
  • 드디어! 행렬 객체 all_tdm_mcomparison.cloud()를 적용합니다. 새롭게 등장한 가장 빈번한 부정 단어들을 살펴보세요. 예상치 못한 인사이트를 발견할 수도 있습니다!

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Review
___

# Scale/center & append
bos_reviews$___ <- scale(___)

# Subset positive comments
pos_comments <- subset(bos_reviews$comments, ___)

# Subset negative comments
neg_comments <- subset(bos_reviews$comments, ___)

# Paste and collapse the positive comments
pos_terms <- paste(___, collapse = " ")

# Paste and collapse the negative comments
neg_terms <- paste(___, collapse = " ")

# Organize
all_terms<- c(___, ___)

# VCorpus
all_corpus <- ___(VectorSource(___))

# TDM
all_tdm <- TermDocumentMatrix(
  ___, 
  control = list(
    weighting = weightTfIdf, 
    removePunctuation = TRUE, 
    stopwords = stopwords(kind = "en")
  )
)

# Column names
___ <- as.matrix(___)
colnames(all_tdm_m) <- c("___", "___")

# Comparison cloud
comparison.cloud(
  ___, 
  max.words = 100,
  colors = c("darkgreen", "darkred")
)
코드 편집 및 실행