使用較長的 n-gram
到目前為止,你是基於每段文字中的單字來建立特徵。這在機器學習模型中相當有用,不過你可能會擔心只看單字會忽略許多語境。為了在建立模型時兼顧語境,你可以使用 n-gram,也就是把連續的 n 個單字視為一個序列。例子如下:
- bigram:兩個連續單字所組成的序列
- trigram:三個連續單字所組成的序列
在你的資料集中,可以透過將 ngram_range 參數指定為 (n1, n2) 這樣的 tuple,來自動建立這些特徵;其中會包含從 n1 到 n2 的所有 n-gram。
本練習屬於課程
Feature Engineering for Machine Learning in Python
練習說明
- 從
sklearn.feature_extraction.text匯入CountVectorizer。 - 建立
CountVectorizer實例,且僅考慮 trigram。 - 將向量化器一次性擬合並套用到
text_clean欄位。 - 列印向量化器所產生的特徵名稱。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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.____)