unnest_tokens () 함수

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) 기본 매개변수:

  1. data: 토큰화할 데이터 프레임.
  2. output_column: 토큰을 저장할 새 열의 이름.
  3. input_column: 토큰화할 텍스트가 들어 있는 열의 이름.
  4. token: 토큰의 유형 (예: “words”, “characters”, etc.)

2) 추가적인 옵션:

  1. drop: 논리형. 입력 열을 결과에서 제거할지 여부. 기본값은 TRUE.
  2. to_lower: 논리형. 모든 문자를 소문자로 변환할지 여부. 기본값은 TRUE.
  3. strip_numeric: 논리형. 숫자를 제거할지 여부. 기본값은 FALSE.
  4. strip_punct: 논리형. 구두점을 제거할지 여부. 기본값은 FALSE.
  5. 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() 함수에서 inputoutput 매개변수는 생략 가능하긴 하지만, 그 경우 함수는 데이터 프레임의 첫 번째 열을 input으로, wordoutput 열 이름으로 기본 설정을 사용하게 됩니다. 따라서 다음과 같은 형태로도 사용할 수 있습니다:

text %>%
  unnest_tokens(token = "sentences")

하지만 이렇게 할 경우, 어떤 열이 토큰화되는지와 토큰이 어떤 열에 저장되는지 명확하게 코드만으로 이해하기 어려울 수 있습니다. 코드의 가독성과 유지 보수를 위해 명시적으로 inputoutput을 지정하는 것이 좋습니다.

명시적으로 열 이름을 지정해주면 코드를 읽는 사람이나 나중에 코드를 수정할 때 해당 열이 무엇을 의미하는지 더 쉽게 알 수 있기 때문에 추천되는 방식입니다.

R 프로그램을 다운로드하려면 R 프로그램 공식 웹사이트(https://www.r-project.org/)에서 다운로드 링크를 클릭하여 다운로드할 수 있습니다.

R 프로그램 모두보기 :