NLP I — テキスト前処理と古典手法
テキストの前処理と、BoW / TF-IDF による特徴量化+線形モデルの強いベースラインを学びます。
まず軽い手法でベースライン#
NLP コンペでも、いきなり大型モデルではなく、TF-IDF + 線形モデルで 強いベースラインを作るのが定石です。速く、安定し、アンサンブルの素材にもなります。
テキスト前処理#
- 小文字化・記号や空白の正規化
- (言語により)トークン化。日本語は分かち書きが必要
- 不要語の除去はタスク次第(過度な除去は情報を落とす)
BoW / TF-IDF#
- BoW(Bag of Words):単語の出現回数を特徴にする
- TF-IDF:頻出しすぎる語を抑え、その文書に特徴的な語を重視する
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
tfidf = TfidfVectorizer(max_features=50000, ngram_range=(1, 2))
X = tfidf.fit_transform(train_text) # 訓練データだけで fit
X_test = tfidf.transform(test_text) # テストは transform のみ
model = LogisticRegression(max_iter=1000).fit(X, y)注意
ヒント
TF-IDF は大量の疎な特徴を生みます。ロジスティック回帰や線形 SVM、LightGBM が相性良く、 次レッスンの Transformer 系とアンサンブルすると多様性が出ます。
理解度チェック#
次のステップ#
次は Transformer / BERT と Hugging Face によるファインチューニングを学びます。