NLP Academy · レッスン

迷惑メール検出器を作る

ラベル付きメッセージで学習する

レッスン 2/413 ステップ

「迷惑メール検出器を作る」はCoddyKit上の無料NLP Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはNLP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 NLP Academyコースには全4レッスンが含まれています。

初めての本格的なモデル

役に立つもの、つまり迷惑メールフィルターを作る時間です。ラベル付きメッセージで分類器を学習させ、新しいメッセージを判定させます。

ラベル付きデータから始める

教師ありモデルには、正解付きの例が必要です。ここでは各メッセージに、迷惑メールを表す spam、または迷惑メールではないものを親しみを込めて呼ぶ ham というラベルが付いています。

messages = ["win cash now", "lunch at noon?", "free prize click"]
labels = ["spam", "ham", "spam"]
print(len(messages), len(labels))

テキストを数値に変換する

モデルは生の単語を読めないため、まず単語を数えます。CountVectorizerは、各メッセージを単語の出現回数の行に変換します。

from sklearn.feature_extraction.text import CountVectorizer
vec = CountVectorizer()
X = vec.fit_transform(messages)

MultinomialNBの紹介

単語のカウントにはMultinomialNBが適しています。これは scikit-learn に組み込まれた、カウントベースの Naive Bayes です。

from sklearn.naive_bayes import MultinomialNB
model = MultinomialNB()

モデルを学習させる

学習は1行で行えます。特徴量とラベルをモデルに渡してください。fitの呼び出しによって、クラスごとの単語数が数えられ、確率が保存されます。

model.fit(X, labels)
print("trained on", X.shape[0], "messages")

新しいメールを予測する

新しいメッセージを判定するには、同じ方法でベクトル化して predict を呼び出します。モデルは spam か ham かについて、最も適切な推測を返します。

new = vec.transform(["free cash prize"])
print(model.predict(new))

Vectorizerを再利用する

新しいテキストには、モデルが学習したものと同じ語彙を使う必要があります。列が揃わなくなるため、もう一度 fit するのではなく、必ずtransformを呼び出してください。

確信度を確認する

ラベルだけでなく、モデルがどの程度確信しているかも確認できます。predict_probaメソッドは、各クラスの確率を返します。

print(model.predict_proba(new))

テストセットを分けておく

モデルが学習に使ったデータで評価してはいけません。未知のメッセージに対する性能を測定できるよう、テストセットを分けておきます。

フィルターを評価する

取り置いたメッセージに対して予測を行い、正解と比較します。その正解率によって、スパムフィルターが実際に機能しているかどうかが分かります。📬

改善のために反復する

より多くのクリーンなデータと、より優れた前処理によって、結果はすぐに向上します。このフィルターは完成品ではなく、継続的に改善できるベースラインとして扱ってください。

簡単な確認

新しいメッセージに対して予測する前に、どのような準備をすべきでしょうか。

まとめ

メッセージをベクトル化し、MultinomialNBを学習させ、新しいテキストがスパムかどうかを予測しました。学習済みのベクトライザーを再利用することで、特徴量の対応を保てます。✅

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「迷惑メール検出器を作る」レッスンは無料ですか?

はい。「迷惑メール検出器を作る」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、NLP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 NLP Academyコースには全4レッスンが含まれています。

「迷惑メール検出器を作る」で何を学びますか?

ラベル付きメッセージで学習する ブラウザで直接実行するハンズオンコードでNLP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

NLP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのNLP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「迷惑メール検出器を作る」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このNLP Academyレッスンでコードを書いて実行できますか?

はい。すべてのNLP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Naive Bayes の直感的な理解
  2. 迷惑メール検出器を作る
  3. 多項モデルと Bernoulli モデル
  4. モデルの予測を読み解く
← NLP Academyに戻る