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

Connected

연습 문제

DTM vs. tidytext 행렬

tidyverse는 공통된 철학을 공유하고 함께 사용하도록 설계된 R 패키지 모음입니다. 이 챕터에서는 데이터를 다루기 위한 tidy 함수를 다룹니다. 이번 연습 문제에서는 DTM과 tibble이라 불리는 tidy 텍스트 데이터 프레임을 비교해 보겠습니다.

tidyverse에서는 각 관측값이 데이터 프레임의 한 행에 해당합니다. 기본 데이터 구조가 동일하기 때문에 서로 다른 패키지를 훨씬 쉽게 사용할 수 있습니다. 이 강의의 일부 내용은 이러한 데이터 구조를 활용하는 tidytext 패키지를 중심으로 구성되어 있습니다.

예를 들어, magrittr 패키지의 %>% 연산자에 이미 익숙하실 수도 있습니다. 이 연산자는 왼쪽의 객체를 오른쪽 함수의 첫 번째 인수로 전달합니다.

아래 예시에서는 data 객체를 function1()에 전달합니다. 괄호가 비어 있는 점에 주목하세요. 그 결과는 다시 function2()로 전달됩니다. 마지막 함수에서는 data 객체를 다시 넣을 필요가 없습니다. function1()의 출력이 자동으로 전달되기 때문입니다. 단, 가상의 매개변수인 some_parameter를 TRUE로 지정합니다. 이러한 파이프 전달을 통해 최종적으로 object가 생성됩니다.

object <- data %>% 
           function1() %>%
           function2(some_parameter = TRUE)

%>% 연산자를 사용하기 위해 반드시 magrittr 패키지를 불러올 필요는 없습니다. dplyr 패키지에서도 동일하게 사용할 수 있습니다. dplyr에는 inner_join()(이후 자세히 다룹니다)과 데이터를 집계하는 count() 함수도 포함되어 있습니다. 마지막으로 mutate()를 사용하면 새 변수를 생성하거나 기존 변수를 수정할 수 있습니다.

object <- data %>%
  mutate(new_Var_name = Var1 - Var2)

또는 변수를 수정할 때는 다음과 같이 사용합니다.

object <- data %>%
  mutate(Var1 = as.factor(Var1))

또한 tidyr의 pivot_wider() 함수를 사용하여 각 행이 책의 한 줄에 해당하고 긍정 및 부정 값이 열로 구성된 형태로 데이터를 정리합니다.

index negative positive
42 2 0
43 0 1
44 1 0

DTM을 tidy 형식으로 변환하려면 broom 패키지의 tidy()를 사용하세요.

tidy_format <- tidy(Document_Term_Matrix)

이번 연습 문제에서는 그리스 비극 아가멤논(Agamemnon)의 텍스트를 사용합니다. 아가멤논은 부부 간의 불륜과 살인을 다룬 이야기입니다. 여기에서 원문을 내려받을 수 있습니다.

지침

100 XP

이번 연습 문제를 위해 ag_dtm이라는 정제된 DTM을 미리 준비해 두었습니다.

  • ag_dtm에 as.matrix()를 적용하여 ag_dtm_m을 생성하세요.
  • [와 ] 괄호를 사용하여 ag_dtm_m의 2206번 행을 인덱싱하세요.
  • ag_dtm에 tidy()를 적용하세요. 새 객체의 이름은 ag_tidy로 지정합니다.
  • ag_tidy의 [831:835, ] 행을 확인하여 tidy 형식과 비교해 보세요. 2단계에서 살펴본 ag_dtm_m 부분에서 자주 등장하는 단어를 확인할 수 있습니다.