unnest_tokens ()
함수는 R 프로그래밍 언어의 tidytext
패키지에 포함되어 있는 함수로, 텍스트 데이터를 토큰 단위로 분리합니다. 이 함수는 ‘tidy data’ 형식에 적합하게 텍스트를 처리하므로, 텍스트 마이닝 및 자연어 처리에 유용합니다. 이 함수는 각 토큰을 새로운 행으로 만들며, 텍스트가 포함된 열 외의 다른 열은 그대로 유지됩니다.
1. unnest_tokens() 개념
unnest_tokens()
함수는 R의 tidytext
패키지에 포함되어 있으며, 텍스트 데이터를 토큰화(tokenization)하는 데 사용됩니다. 토큰화란 긴 텍스트 문자열을 더 작은 단위, 예를 들어 단어나 문장으로 분해하는 과정입니다.
이 함수는 텍스트 데이터를 처리하고 분석하기 쉬운 형태로 변환하는 데 유용합니다. 예를 들어, 하나의 문서나 문장을 구성하는 단어들을 분리할 수 있습니다.
1) 설치와 라이브러리 로딩
install.packages("tidytext")
library(tidytext)
2) unnest_tokens 기본 사용법
기본적인 함수의 형태는 다음과 같습니다.
unnest_tokens(data, output_column, input_column, token = "words", ...)
data
: 토큰화할 데이터 프레임.output_column
: 토큰을 저장할 새로운 열의 이름.input_column
: 토큰화할 텍스트가 들어있는 열의 이름.token
: 토큰의 유형 (기본값은 “words”).
예제
library(dplyr)
library(tibble)
# 예제 데이터
data <- tibble(id = c(1, 2), text = c("I love R", "Data science is awesome"))
# 단어로 토큰화
tokenized_data <- data %>%
unnest_tokens(word, text)
# 결과 확인
print(tokenized_data)
이 예제에서는 id
열과 text
열을 가진 tibble
데이터 프레임을 사용했습니다. unnest_tokens()
함수를 적용하여 text
열의 텍스트를 단어 단위로 토큰화했고, 그 결과를 새로운 word
열에 저장했습니다.
추가 옵션
drop
:FALSE
로 설정하면 입력 열을 결과에 포함합니다.to_lower
:FALSE
로 설정하면 대/소문자를 구분합니다.strip_numeric
,strip_punct
,strip_mark
,collapse
등: 추가적인 텍스트 클리닝 옵션들.
이 함수는 매우 유연하므로 다양한 텍스트 데이터에 적용할 수 있습니다. 여러 토큰화 옵션과 다른 tidytext
함수와 함께 사용하여 더 복잡한 텍스트 분석 작업을 수행할 수 있습니다.
- 토큰(Token): 텍스트를 분석할 때 기본 단위가 되는 것으로, 보통 단어나 구절, 문장 등이 될 수 있습니다.
- Tidy Text: 각 단어(토큰)가 하나의 행을 이루고, 문서나 다른 식별자와 함께 저장되는 텍스트 데이터 형식을 의미합니다.
2. unnest_tokens 매개변수
unnest_tokens()
함수는 여러 가지 옵션을 가지고 있어 텍스트를 토큰화하는 과정을 세밀하게 조절할 수 있습니다. 아래에 몇 가지 주요 옵션을 설명하겠습니다.
1) 기본 매개변수:
- data: 토큰화할 데이터 프레임.
- output_column: 토큰을 저장할 새 열의 이름.
- input_column: 토큰화할 텍스트가 들어 있는 열의 이름.
- token: 토큰의 유형 (예: “words”, “characters”, etc.)
2) 추가적인 옵션:
- drop: 논리형. 입력 열을 결과에서 제거할지 여부. 기본값은
TRUE
. - to_lower: 논리형. 모든 문자를 소문자로 변환할지 여부. 기본값은
TRUE
. - strip_numeric: 논리형. 숫자를 제거할지 여부. 기본값은
FALSE
. - strip_punct: 논리형. 구두점을 제거할지 여부. 기본값은
FALSE
. - collapse: 문자열. 이 문자열로 토큰을 연결할지 여부. 기본값은
NULL
.
[ 예시 코드 ]
library(dplyr)
library(tidytext)
# 예제 데이터
data <- tibble(id = c(1, 2), text = c("I love R", "Data science is awesome"))
# 단어로 토큰화, 원래 열을 유지, 대문자 유지
tokenized_data <- data %>%
unnest_tokens(word, text, drop = FALSE, to_lower = FALSE)
# 결과 확인
print(tokenized_data)
3) 비고
drop = FALSE
를 설정하면, 토큰화 후에도 원래의input_column
이 결과에 유지됩니다.to_lower = FALSE
를 설정하면, 대/소문자를 그대로 유지합니다.strip_numeric = TRUE
로 설정하면, 숫자가 제거됩니다.strip_punct = TRUE
로 설정하면, 구두점이 제거됩니다.
이러한 옵션을 조합하여 토큰화의 정밀도를 높이거나, 전처리 과정을 단순화할 수 있습니다.
- input: 토큰화할 텍스트가 들어있는 열의 이름입니다.
- output: 토큰화된 결과를 저장할 새로운 열의 이름입니다.
- token: 어떤 단위로 토큰화할지 결정하는 옵션입니다. ‘words’, ‘characters’, ‘ngrams’, ‘sentences’, ‘lines’, ‘paragraphs’, ‘regex’ 등이 있습니다.
4) 생략
unnest_tokens()
함수에서 input
과 output
매개변수는 생략 가능하긴 하지만, 그 경우 함수는 데이터 프레임의 첫 번째 열을 input
으로, word
를 output
열 이름으로 기본 설정을 사용하게 됩니다. 따라서 다음과 같은 형태로도 사용할 수 있습니다:
text %>%
unnest_tokens(token = "sentences")
하지만 이렇게 할 경우, 어떤 열이 토큰화되는지와 토큰이 어떤 열에 저장되는지 명확하게 코드만으로 이해하기 어려울 수 있습니다. 코드의 가독성과 유지 보수를 위해 명시적으로 input
과 output
을 지정하는 것이 좋습니다.
명시적으로 열 이름을 지정해주면 코드를 읽는 사람이나 나중에 코드를 수정할 때 해당 열이 무엇을 의미하는지 더 쉽게 알 수 있기 때문에 추천되는 방식입니다.
R 프로그램을 다운로드하려면 R 프로그램 공식 웹사이트(https://www.r-project.org/)에서 다운로드 링크를 클릭하여 다운로드할 수 있습니다.