1

私は、私が関与しているネットワークから発信された虐待行為の詳細を記したかなりの数の電子メールを週に 1 通受け取ります。これらには通常、次のいずれかが含まれます。

a) 侵害されたとみなされる URL。

また

b) スパムと見なされる電子メールのコピー。

これらのほとんどは自動化されており、通常は ARF にうまく従いません。

必要なのは自動データ抽出ですが、メールの構造が変化して予測できない場合にどうすればよいか分からず、頭を悩ませています。

現時点で抽出しようとしているのは次のとおりです。

a) スパムの送信元メール サーバー (およびほとんどの Exim/Qmail 受信ヘッダーに表示される UID/ユーザー名)

b) ドメイン名

c) 侵害されたサイトの URL

d) メールアドレス

いくつかの正規表現やその他のがらくたを使用して汗をかかずにこれを行うことができますが、基本的に信頼性が低くなります。メール本文を解析すると、5 つの IP、3 つの URL、および 3 つのメール アドレスが得られる可能性があり、最適なものを自動的に選択する方法がわかりません。

正しいデータが何であるかについて最善の自動判断を行うために、何を調査/検索する必要があるかについて、何らかの方向性が必要です。過去のレポート メールは 100,000 件を超えているので、テスト データに不足はありません。この問題を解決するために、どのように開始し、何を調べればよいかを知る必要があります。

これを読んでくれてありがとう。何か見落としていたり​​、他に質問があれば教えてください :)

参考までに、私は次のことを検討しました。

  • 分類されたこの送信者からの過去のいくつかの電子メールを挿入し、新しい電子メールに対して一連の違いを実行します。python セット + リストを使用していくつかのアルゴリズムをハードコーディングすることを除けば、これを行う最善の方法についてはわかりません。

  • 以前のすべてのデータをさまざまな形式の ScatterPlot/Histogram にプロットします。次に、既存のデータに対して新しい各メールをテストし、グラフ内で最も普及していない詳細を選択することができます. 繰り返しますが、ここでどのライブラリを探すべきかわかりません。

  • サンプル データを使用して、以前に見た項目に重みを付けます。つまり、1000 の以前のサンプルのページを作成し、決して正しくない IP を「マークダウン」し、正しい可能性のある IP をマークアップするとします。

  • ホスト名を解決し、アイテムを一緒に一致させるためのソケット ルックアップを含むコードのもつれを記述します。これを実行すると負荷がかかることはわかっていますが、おそらく最良の結果が得られるでしょう。

乾杯!

4

1 に答える 1

0

あなたはすでに考えたアイデアのいくつかで正しい方向に進んでいます。

まず、「真実」であるか、すでに適切に分類されており、問題のあるIP、URL、電子メールアドレスなどをリストしたサンプルデータセットを作成する必要があります。したがって、いくつかのカテゴリといくつかの関連データを定義し、それを調べます。面白くありませんが、必要です。

この時点で、ベイジアンに行ってそれがどのように機能するかを確認するか、特徴工学を実行して他の方法を試すかを決定できます。

ベイジアン分類は、テストデータの束(たとえば1/2または2/3)を入力し、残りの部分で試して、トレーニングされた分類器がどのように機能するかを確認するブラックボックスです。90%以上の範囲で何かを取得した場合、それが十分に高速であれば、基本的に完了です。出力する必要がある1つの機能は、電子メール内のすべての「トークン」です。空白で分割します。ここから始めることができます:

http://nltk.googlecode.com/svn/trunk/doc/api/nltk.classify-module.html

特徴工学を行うことにした場合は、探索段階に入ります。機械学習やパターン分類を行う場合は常に、ソースデータから抽出できる「機能」を定義する必要があります。あなたが言ったように、あなたは電子メールアドレス、IP、そしてURLを取得するために正規表現を使うことができます。これらはすべて優れた機能です。他にどのような機能を見つけることができるでしょうか?おそらくいくつかのタイムスタンプ(時間的な関係はありますか?誰が知っていますか?)。MIMEバージョン、SenderID、ContentType、X-Spam-Level、文字セットなど、一部の電子メールヘッダーが役立つ場合があります。

何が起こっているかを判断するために個人的に使用するいくつかの機能を決定したら、上記と同じベイズ分類器を使用して、これらの決定を行う方法をコンピューターに教えることができます。

多数の新機能が定義されているので、50%でトレーニングを実行し、他の50%に対して結果を評価して、どのように実行されたかを確認できます。高レベルの精度が得られれば、すばらしいです。完了です。それでも低い場合は、分類器が適切に識別できるように他の機能を定義する必要があります。あなただけが、どれだけ高いか、どれだけ低いかを決めることができます。

于 2012-12-11T03:49:52.763 に答える