더 긴 n-gram 사용하기
지금까지는 각 텍스트에서 개별 단어를 기반으로 피처를 생성했습니다. 이 방법은 Machine Learning 모델에서 꽤 효과적이지만, 단어를 하나씩 따로 살펴보다 보면 문맥 정보가 많이 손실될 수 있습니다. 이 문제를 해결하기 위해 n-gram을 활용할 수 있습니다. n-gram은 연속된 n개의 단어를 하나의 단위로 묶은 것입니다. 예를 들면 다음과 같습니다.
- 바이그램(bigrams): 연속된 두 단어의 시퀀스
- 트라이그램(trigrams): 연속된 세 단어의 시퀀스
ngram_range 인수를 튜플 (n1, n2) 형태로 지정하면, n1부터 n2 범위에 해당하는 모든 n-gram이 데이터셋에 자동으로 생성됩니다.
이 연습은 강의의 일부입니다
Python으로 배우는 Machine Learning 특성 공학
연습 안내
sklearn.feature_extraction.text에서CountVectorizer를 임포트하세요.- 트라이그램만 고려하도록
CountVectorizer를 인스턴스화하세요. - 벡터라이저를
text_clean열에 한 번에 학습(fit)하고 변환(transform)을 적용하세요. - 벡터라이저가 생성한 피처 이름을 출력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Import CountVectorizer
from sklearn.feature_extraction.text import ____
# Instantiate a trigram vectorizer
cv_trigram_vec = CountVectorizer(max_features=100,
stop_words='english',
____)
# Fit and apply trigram vectorizer
cv_trigram = ____(speech_df['text_clean'])
# Print the trigram features
print(cv_trigram_vec.____)