시작하기무료로 시작하기

DTM vs. tidytext 행렬

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

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

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

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

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

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

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

tidy_format <- tidy(Document_Term_Matrix)

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

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

R을 활용한 감성 분석

강의 보기

연습 안내

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

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

실습형 인터랙티브 연습

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

# As matrix
ag_dtm_m <- ___

# Examine line 2206 and columns 245:250
ag_dtm_m[___, 245:250]

# Tidy up the DTM
ag_tidy <- ___

# Examine tidy with a word you saw
ag_tidy[___, ]
코드 편집 및 실행