1. 학습
  2. /
  3. 강의
  4. /
  5. R을 활용한 감성 분석

Connected

연습 문제

감정 내면 탐구

이번 연습 문제에서는 긍정·부정 언어에만 국한하지 않고, Plutchik의 감정 바퀴에 있는 8가지 감정 각각을 기준으로 텍스트를 분류하여 시각화를 구성합니다. 단순히 긍정·부정으로 나누는 것보다 특정 감정에 매핑함으로써 단어 사용 방식을 더 명확하게 파악할 수 있습니다.

tidytext 주관성 어휘 사전(subjectivity lexicon)인 "nrc"를 사용하여 텍스트와 inner_join()을 수행합니다. "nrc" 어휘 사전에는 8가지 감정 외에 긍정(positive)과 부정(negative) 범주도 포함되어 있습니다. 따라서 inner_join() 이후 긍정·부정 단어를 제거해야 합니다. 이를 위해 부정 연산자 !와 grepl()을 함께 사용할 수 있습니다.

"Global Regular Expression Print Logical" 함수인 grepl()은 각 행에서 문자열 패턴이 발견되면 TRUE, 그렇지 않으면 FALSE를 반환합니다. 이번 연습 문제에서는 아래와 같이 | 연산자를 사용해 positive 또는 negative를 검색합니다. 이 세로 막대 기호는 키보드에서 보통 Enter 키 위에 위치합니다. ! 부정 연산자가 grepl() 앞에 오면 TRUE와 FALSE가 바뀌어, "positive|negative"에 해당하는 항목이 유지되는 것이 아니라 제거됩니다.

Object <- tibble %>%
  filter(!grepl("positive|negative", column_name))

다음으로 식별된 단어에 count()를 적용하고, pivot_wider()를 사용하여 데이터 프레임을 정리합니다.

comparison.cloud()는 입력 데이터에 행 이름(row names)이 필요합니다. 따라서 row.names 인수를 지정하여 data.frame()을 호출해 기본 R data.frame으로 변환해야 합니다.

지침 1/2

undefined XP
    1
    2
  • moby와 nrc를 inner_join()으로 결합하세요.
  • filter()에 부정 연산자(!)와 grepl()을 함께 사용하여 "positive|negative"를 검색하세요. 검색할 열의 이름은 sentiment입니다.
  • count()를 사용하여 sentiment와 term별로 빈도를 계산하세요.
  • pivot_wider()를 사용하여 데이터 프레임을 재구성하고, names_from = sentiment, values_from = n, values_fill = 0을 전달하세요.
  • data.frame()으로 일반 데이터 프레임으로 변환하고, term 열을 행 이름으로 지정하세요.
  • head()를 사용하여 moby_tidy를 확인하세요.