より長い n-gram を使う
ここまでは、各テキストの個々の単語をもとに特徴量を作成してきました。この手法は機械学習モデルで大きな効果を発揮しますが、単語を個別に見ることで文脈が失われてしまうという懸念もあります。この問題に対処するために、n-gram(連続する n 個の単語のまとまり)を使う方法があります。たとえば:
- バイグラム(bigram):連続する 2 単語のまとまり
- トライグラム(trigram):連続する 3 単語のまとまり
ngram_range 引数にタプル (n1, n2) を指定することで、n1 から n2 の範囲に含まれるすべての n-gram をデータセットに自動的に追加できます。
この演習はコースの一部です
Python で学ぶ Machine Learning のための特徴量エンジニアリング
演習の手順
sklearn.feature_extraction.textからCountVectorizerをインポートしましょう。- トライグラムのみを対象に
CountVectorizerをインスタンス化しましょう。 - ベクトライザーをフィットさせ、
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.____)