단어를 넘어서: 토큰화 (1)
텍스트 마이닝의 대표적 활용 예로는 쇼핑 리뷰를 분석해 구매자의 제품에 대한 감정을 파악하거나, 금융 뉴스를 분석해 주가와 관련된 감성을 예측하는 작업이 있어요. 텍스트 데이터를 분석하려면 일반적으로 소문자로 변환(참고: tolower())하고 문장을 개별 단어로 분할하는 전처리 과정을 거칩니다.
ft_tokenizer()는 이 두 단계를 수행합니다. 사용 방법은 지금까지 보신 다른 변환 함수들과 동일한 패턴이며, 추가 인수가 필요 없어요.
shop_reviews %>%
ft_tokenizer("review_text", "review_words")
출력은 각 행마다 포함된 단어 수가 다를 수 있으므로, output.col은 리스트 열이며 각 원소가 문자열 리스트입니다. 텍스트 데이터를 분석할 때는 보통 한 행에 한 단어를 두는 형태가 더 다루기 쉽습니다. 이러한 리스트-오브-리스트-오브-스트링 형태는 tidyr 패키지의 unnest()로 단일 문자 벡터로 변환할 수 있어요. 현재 Spark 상에서 직접 unnest하는 메서드는 없기 때문에, 변환 전에 R로 collect() 해야 합니다. 이를 위한 코드 패턴은 아래와 같습니다.
library(tidyr)
text_data %>%
ft_tokenizer("sentences", "word") %>%
collect() %>%
mutate(word = lapply(word, as.character)) %>%
unnest(word)
tidyr 패키지 사용법을 더 배우고 싶다면 Cleaning Data in R 강의를 참고하세요.
이 연습은 강의의 일부입니다
R에서 sparklyr로 시작하는 Spark
연습 안내
spark_conn으로 Spark 연결이 생성되어 있습니다. Spark에 저장된 트랙 메타데이터에 연결된 티블은 track_metadata_tbl로 미리 정의되어 있어요.
track_metadata_tbl에서title_text라는 변수를 만드세요.artist_name과title필드를 선택하세요.ft_tokenizer()를 사용해 제목을 단어로 분할한 새 필드word를 생성하세요.- 결과를 수집하세요.
lapply와as.character를 사용해word열을 문자 벡터 리스트로 평탄화하도록 변환하세요.unnest()를 사용해 리스트 열을 펼쳐 한 행에 한 단어가 오도록 만드세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# track_metadata_tbl has been pre-defined
track_metadata_tbl
title_text <- track_metadata_tbl %>%
# Select artist_name, title
___ %>%
# Tokenize title to words
___ %>%
# Collect the result
___ %>%
# Flatten the word column
___ %>%
# Unnest the list column
___