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)의 텍스트를 사용합니다. 아가멤논은 부부 간의 불륜과 살인을 다룬 이야기입니다. 여기에서 원문을 내려받을 수 있습니다.
이 연습은 강의의 일부입니다
R을 활용한 감성 분석
연습 안내
이번 연습 문제를 위해 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부분에서 자주 등장하는 단어를 확인할 수 있습니다.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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[___, ]