Amazon SageMakerを使用して電子メールのスパム検出器を構築する
Amazon SageMakerでスパム検出器を作る
スパムメール、または迷惑メールとも呼ばれるものは、一度に大量のユーザーに送信され、しばしば詐欺、フィッシング内容、または難解なメッセージを含んでいます。スパムメールは、時には人間によって手動で送信されますが、ほとんどの場合はボットを使用して送信されます。スパムメールの例には、偽の広告、連鎖メール、なりすましの試みなどがあります。特にうまく偽装されたスパムメールが受信トレイに入るリスクがあります。クリックされると危険です。デバイスと機密情報を保護するために追加の注意を払うことが重要です。
技術の進歩に伴い、スパムメールの検出はその変化する性質のために課題となっています。スパムは他のセキュリティ脅威とはかなり異なります。最初は迷惑なメッセージに見えるだけでなく脅威ではないように見えるかもしれませんが、即効性があります。また、スパマーは頻繁に新しい技術を採用します。メールサービスを提供する組織は、エンドユーザーに損害を与えないためにスパムをできるだけ最小限に抑えたいと考えています。
この投稿では、Amazon SageMakerを使用して電子メールのスパム検出器を構築する方法を紹介します。組み込みのBlazingTextアルゴリズムは、Word2vecとテキスト分類のアルゴリズムの最適化された実装を提供しています。Word2vecは、感情分析、固有表現認識、機械翻訳などのさまざまな自然言語処理(NLP)のタスクに役立ちます。テキスト分類は、ウェブ検索、情報検索、ランキング、ドキュメント分類などのアプリケーションに不可欠です。
ソリューションの概要
この投稿では、SageMakerを使用して電子メールのスパム検出器を設定し、スパムメールをフィルタリングする方法を示します。次の図に示すように、スパム検出器は電子メールを送信します。スパム検出器がスパムとして検出した場合、電子メールはスパムフォルダに送信されます。それ以外の場合は、顧客の受信トレイに送信されます。
- メタからのLlama 2基盤モデルは、Amazon SageMaker JumpStartで利用可能になりました
- 「太陽エネルギーが新たな展開を迎える」
- 「ロボットが外科医よりも正確に眼球の裏に薬剤を注入する」
次の手順でスパム検出器モデルを設定するために進めます:
- GitHubリポジトリからサンプルデータセットをダウンロードします。
- Amazon SageMaker Studioノートブックでデータをロードします。
- モデルのためのデータを準備します。
- モデルのトレーニング、デプロイ、テストを行います。
前提条件
このユースケースに取り組む前に、次の前提条件を満たしてください:
- AWSアカウントをセットアップします。
- SageMakerドメインを設定します。
- Amazon Simple Storage Service(Amazon S3)バケットを作成します。手順については、「最初のS3バケットを作成する」を参照してください。
データセットのダウンロード
GitHubからemail_dataset.csvをダウンロードし、ファイルをS3バケットにアップロードします。
BlazingTextアルゴリズムは、スペースで区切られたトークンを持つ単一の前処理済みテキストファイルを想定しています。ファイルの各行には単一の文が含まれている必要があります。複数のテキストファイルでトレーニングする必要がある場合は、それらを1つのファイルに連結して、該当するチャネルにファイルをアップロードしてください。
SageMaker Studioでデータをロードする
データのロードを行うために、次の手順を実行してください:
- GitHubから
spam_detector.ipynb
ファイルをダウンロードし、SageMaker Studioにファイルをアップロードします。 - Studioノートブックで、
spam_detector.ipynb
ノートブックを開きます。 - カーネルを選択するように求められた場合は、Python 3(Data Science 3.0)カーネルを選択し、選択を選択します。そうでない場合は、適切なカーネルが自動的に選択されていることを確認してください。
- 必要なPythonライブラリをインポートし、ロールとS3バケットを設定します。email_dataset.csvをアップロードしたS3バケットとプレフィックスを指定します。
- ノートブックでデータロードステップを実行します。
- カテゴリーラベルに基づいてデータセットがバランスしているかどうかを確認します。
データセットがバランスしていることがわかります。
データの準備
BlazingTextアルゴリズムでは、データを以下の形式で期待しています:
__label__<label> "<features>"
以下は例です:
__label__0 “This is HAM"
__label__1 "This is SPAM"
BlazingTextアルゴリズムのトレーニングデータとバリデーションデータの形式を確認してください。
ノートブックでデータ準備ステップを実行します。
- まず、Category列を整数に変換する必要があります。次のセルでは、SPAM値を1に置き換え、HAM値を0に置き換えています。
- 次のセルでは、各Category値にプレフィックス
__label__
を追加し、Message列をトークン化しています。
- 次のステップは、データセットをトレーニングデータとバリデーションデータに分割し、ファイルをS3バケットにアップロードすることです。
モデルのトレーニング
モデルのトレーニングには、ノートブックで以下の手順を完了します:
- BlazingText推定器をセットアップし、コンテナイメージを渡して推定器インスタンスを作成します。
- 学習モードのハイパーパラメータをsupervisedに設定します。
BlazingTextには、教師なし学習モードと教師あり学習モードの両方があります。私たちのユースケースはテキスト分類であり、教師あり学習です。
- トレーニングデータとバリデーションデータのチャネルを作成します。
- モデルのトレーニングを開始します。
- トレーニングデータとバリデーションデータの精度を取得します。
モデルの展開
このステップでは、トレーニング済みのモデルをエンドポイントとしてデプロイします。お好きなインスタンスを選択してください。
モデルのテスト
以下は予測を取得したい3つの電子メールメッセージの例です:
- 下のリンクをクリックし、詳細を入力してこの賞を獲得してください
- 最高の夏のお得情報がここにあります
- 金曜日にオフィスでお会いしましょう
電子メールメッセージをトークン化し、REST APIを呼び出す際に使用するペイロードを指定します。
これで、各電子メールの分類を予測することができます。テキスト分類器の予測メソッドを呼び出し、トークン化された文のインスタンス(ペイロード)をデータ引数に渡します。
クリーンアップ
最後に、予期しない費用を避けるためにエンドポイントを削除することができます。
また、S3バケットからデータファイルを削除してください。
結論
この記事では、SageMaker BlazingTextアルゴリズムを使用して電子メールスパム検出器を作成する手順を説明しました。BlazingTextアルゴリズムでは、大規模なデータセットにスケールすることができます。BlazingTextはテキスト分析とテキスト分類の問題に使用され、教師あり学習と教師なし学習の両方のモードを持っています。このアルゴリズムは、顧客の感情分析やテキスト分類などのユースケースに使用することができます。
BlazingTextアルゴリズムの詳細については、BlazingTextアルゴリズムをご覧ください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles