Amazon SageMakerを使用して電子メールのスパム検出器を構築する

Amazon SageMakerでスパム検出器を作る

スパムメール、または迷惑メールとも呼ばれるものは、一度に大量のユーザーに送信され、しばしば詐欺、フィッシング内容、または難解なメッセージを含んでいます。スパムメールは、時には人間によって手動で送信されますが、ほとんどの場合はボットを使用して送信されます。スパムメールの例には、偽の広告、連鎖メール、なりすましの試みなどがあります。特にうまく偽装されたスパムメールが受信トレイに入るリスクがあります。クリックされると危険です。デバイスと機密情報を保護するために追加の注意を払うことが重要です。

技術の進歩に伴い、スパムメールの検出はその変化する性質のために課題となっています。スパムは他のセキュリティ脅威とはかなり異なります。最初は迷惑なメッセージに見えるだけでなく脅威ではないように見えるかもしれませんが、即効性があります。また、スパマーは頻繁に新しい技術を採用します。メールサービスを提供する組織は、エンドユーザーに損害を与えないためにスパムをできるだけ最小限に抑えたいと考えています。

この投稿では、Amazon SageMakerを使用して電子メールのスパム検出器を構築する方法を紹介します。組み込みのBlazingTextアルゴリズムは、Word2vecとテキスト分類のアルゴリズムの最適化された実装を提供しています。Word2vecは、感情分析、固有表現認識、機械翻訳などのさまざまな自然言語処理(NLP)のタスクに役立ちます。テキスト分類は、ウェブ検索、情報検索、ランキング、ドキュメント分類などのアプリケーションに不可欠です。

ソリューションの概要

この投稿では、SageMakerを使用して電子メールのスパム検出器を設定し、スパムメールをフィルタリングする方法を示します。次の図に示すように、スパム検出器は電子メールを送信します。スパム検出器がスパムとして検出した場合、電子メールはスパムフォルダに送信されます。それ以外の場合は、顧客の受信トレイに送信されます。

次の手順でスパム検出器モデルを設定するために進めます:

  1. GitHubリポジトリからサンプルデータセットをダウンロードします。
  2. Amazon SageMaker Studioノートブックでデータをロードします。
  3. モデルのためのデータを準備します。
  4. モデルのトレーニング、デプロイ、テストを行います。

前提条件

このユースケースに取り組む前に、次の前提条件を満たしてください:

  1. AWSアカウントをセットアップします。
  2. SageMakerドメインを設定します。
  3. Amazon Simple Storage Service(Amazon S3)バケットを作成します。手順については、「最初のS3バケットを作成する」を参照してください。

データセットのダウンロード

GitHubからemail_dataset.csvをダウンロードし、ファイルをS3バケットにアップロードします。

BlazingTextアルゴリズムは、スペースで区切られたトークンを持つ単一の前処理済みテキストファイルを想定しています。ファイルの各行には単一の文が含まれている必要があります。複数のテキストファイルでトレーニングする必要がある場合は、それらを1つのファイルに連結して、該当するチャネルにファイルをアップロードしてください。

SageMaker Studioでデータをロードする

データのロードを行うために、次の手順を実行してください:

  1. GitHubからspam_detector.ipynbファイルをダウンロードし、SageMaker Studioにファイルをアップロードします。
  2. Studioノートブックで、spam_detector.ipynbノートブックを開きます。
  3. カーネルを選択するように求められた場合は、Python 3(Data Science 3.0)カーネルを選択し、選択を選択します。そうでない場合は、適切なカーネルが自動的に選択されていることを確認してください。

  1. 必要なPythonライブラリをインポートし、ロールとS3バケットを設定します。email_dataset.csvをアップロードしたS3バケットとプレフィックスを指定します。

  1. ノートブックでデータロードステップを実行します。

  1. カテゴリーラベルに基づいてデータセットがバランスしているかどうかを確認します。

データセットがバランスしていることがわかります。

データの準備

BlazingTextアルゴリズムでは、データを以下の形式で期待しています:

__label__<label> "<features>"

以下は例です:

__label__0 “This is HAM"
__label__1 "This is SPAM"

BlazingTextアルゴリズムのトレーニングデータとバリデーションデータの形式を確認してください。

ノートブックでデータ準備ステップを実行します。

  1. まず、Category列を整数に変換する必要があります。次のセルでは、SPAM値を1に置き換え、HAM値を0に置き換えています。

  1. 次のセルでは、各Category値にプレフィックス__label__を追加し、Message列をトークン化しています。

  1. 次のステップは、データセットをトレーニングデータとバリデーションデータに分割し、ファイルをS3バケットにアップロードすることです。

モデルのトレーニング

モデルのトレーニングには、ノートブックで以下の手順を完了します:

  1. BlazingText推定器をセットアップし、コンテナイメージを渡して推定器インスタンスを作成します。

  1. 学習モードのハイパーパラメータをsupervisedに設定します。

BlazingTextには、教師なし学習モードと教師あり学習モードの両方があります。私たちのユースケースはテキスト分類であり、教師あり学習です。

  1. トレーニングデータとバリデーションデータのチャネルを作成します。

  1. モデルのトレーニングを開始します。

  1. トレーニングデータとバリデーションデータの精度を取得します。

モデルの展開

このステップでは、トレーニング済みのモデルをエンドポイントとしてデプロイします。お好きなインスタンスを選択してください。

モデルのテスト

以下は予測を取得したい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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AIニュース

AIはモバイルネットワークをより効率的にする

新しい人工知能モデルは、英国の通信業者の帯域幅効率を向上させ、モバイルネットワークの環境持続可能性を向上させる可能性...

機械学習

このMITのAI論文では、ロボット操作に革新的な方法を紹介しています:エンコードされた特徴フィールドとビジョン言語モデルによる2Dから3Dのギャップの橋渡し

MITとAIおよび基礎相互作用研究所(IAIFI)の研究チームは、ロボットの操作に革新的なフレームワークを紹介し、予測不可能な...

AI研究

Airbnbの研究者がChrononを開発:機械学習モデルの本番用機能を開発するためのフレームワーク

機械学習の絶え間なく進化する風景において、特徴管理はAirbnbのMLエンジニアにとって重要な課題となっています。彼らはさま...

AI研究

中国からのニューエーアイ研究は、GLM-130Bを紹介しますこれは、13兆のパラメータを持つバイリンガル(英語と中国語)のプリトレーニング言語モデルです

最近、大規模言語モデル(LLM)のゼロショットおよびフューショットの能力は大幅に向上し、100Bパラメータ以上を持つモデルは...

データサイエンス

「RAGを紹介します データソースから自然言語を使用してRAGパイプラインを作成するStreamlitアプリ」

GPTはNLPタスクにおいて人工知能の分野で際立っています。ただし、GPTを使用して構築および展開されるパイプラインは長く複雑...

AI研究

ETHチューリッヒとマイクロソフトの研究者が、大規模な言語モデルの推論を強化するための人工知能フレームワーク「SCREWS」を紹介しました

大型言語モデル(LLM)は、さまざまな推論タスクで成功しています。意図した目的が達成されることを保証するために、LLMの結...