불용어 제거와 해싱
다음 단계에서는 stopwords를 제거한 뒤 해싱 트릭을 적용하고, 결과를 TF-IDF로 변환하겠습니다.
개념을 간단히 다시 정리해 볼게요.
- 해싱 트릭은 매우 큰(경우에 따라 무한한) 항목 집합(여기서는 SMS 메시지에 포함된 모든 단어)을 더 작고 유한한 값의 집합으로 빠르고 공간 효율적으로 매핑하는 방법입니다.
- TF-IDF 행렬은 각 문서에서 단어가 얼마나 중요한지를 반영합니다. 각 문서 내에서의 단어 빈도뿐 아니라, 코퍼스 전체에서의 단어 빈도도 함께 고려합니다.
토큰화된 SMS 데이터는 sms의 words라는 열에 저장되어 있어요. 공백 처리를 정리해서 토큰화된 텍스트가 더 깔끔해졌습니다.
이 연습은 강의의 일부입니다
PySpark로 하는 Machine Learning
연습 안내
StopWordsRemover,HashingTF,IDF클래스를 임포트하세요.StopWordsRemover객체를 생성하세요(입력 열은words, 출력 열은terms).sms에 적용하세요.HashingTF객체를 생성하세요(이전 단계의 결과를 입력으로, 출력 열은hash).wrangled에 적용하세요.IDF객체를 생성하세요(이전 단계의 결과를 입력으로, 출력 열은features).wrangled에 적용하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
from pyspark.ml.____ import ____, ____, ____
# Remove stopwords
wrangled = ____(inputCol=____, outputCol=____)\
.____(sms)
# Apply the hashing trick
wrangled = ____(____, ____, numFeatures=1024)\
.____(wrangled)
# Convert hashed symbols to TF-IDF
tf_idf = ____(____, ____)\
.____(wrangled).____(wrangled)
tf_idf.select('terms', 'features').show(4, truncate=False)