1. 학습
  2. /
  3. 강의
  4. /
  5. R에서 sparklyr로 시작하는 Spark

Connected

연습 문제

단어를 넘어서: 토큰화 (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 강의를 참고하세요.

지침

100 XP

spark_conn으로 Spark 연결이 생성되어 있습니다. Spark에 저장된 트랙 메타데이터에 연결된 티블은 track_metadata_tbl로 미리 정의되어 있어요.

  • track_metadata_tbl에서 title_text라는 변수를 만드세요.
    • artist_name과 title 필드를 선택하세요.
    • ft_tokenizer()를 사용해 제목을 단어로 분할한 새 필드 word를 생성하세요.
    • 결과를 수집하세요.
    • lapply와 as.character를 사용해 word 열을 문자 벡터 리스트로 평탄화하도록 변환하세요.
    • unnest()를 사용해 리스트 열을 펼쳐 한 행에 한 단어가 오도록 만드세요.