前回の記事では、NNConsole でメールを学習させるんは、メールを CSV に変換するというところまで書きました。
NNConsole 学習用 CSV
NNConsole が読み込む CSV は2種類です。データ CSV とデータセット CSV です。これらには、次のような条件があります。この条件は、他にもあるのですが、私が学習させてメールをCSVに変換した時の条件として書きます。
- 1メールを 1CSV ファイルにする → これをデータ CSV と言います
- 学習には数万のメールを使うので、CSV も数万ファイルになります
- 数万のメールすべてが、Spam か正常メールかあらかじめわかっている必要があります。この判定は、私がコツコツコツコツコツコツコツコツと振り分けたものです
- その数万ファイルの一覧を別な1つの CSV にする→データセット CSV と言います
- データセット CSV1 つとデータ CSV 数万(数百でもいいのです)全体で1つのデータセットとして NNConsole に登録します
- データ CSV は、すべて同じ行数、列数でなければなりません。私が今回作成したのは、1行x約100列のものです。
- データ CSV の各列には、そのメールの属性を数値化していれます
- NNConsoleの推奨数値は、-1.0~1.0 なので、メールの各属性をこの数値に変換することになります
- データセット CSV は、数万行x2列のものです
- データセット CSV の1列目は、データ CSV のパスです
- データセット CSV の2列目は、そのデータ CSV の元となったメールが Spam か正常なメールかと言う2値(1または0)が入ります。
このデータセットの塊をどう作るかが AI 学習の要です。データセットさえできてしまえが、学習させる時間は、3分でした。いや、その前にニューラルネットワークを定義しなければならなかったです。このニューラルネットワークの定義と言うか設計は、素人にはかなり敷居が高いです。プロに聞いても、経験と勘が物を言うと言われるくらいです。
学習用 CSV の中身
データセット CSV の中身については、すでに上で説明しました。データ CSV の行/列数も説明しましたが、メールの属性がどう変換されて CSV に配置されているかと言うことについてはまだ説明していませんので、ここで簡単に説明します。簡単というのは、この中身が実は試行錯誤で苦労したノウハウであり、大っぴらにはできない部分なので、さわりだけ説明します。
メールの構造としては、ヘッダー、本文、添付ファイルの大きく3つに分けることができます。ヘッダーには、宛先、送信者、Subject、送信日付などが入っています。本文には、普通に文章が入っています。添付ファイルは、ファイル名とエンコードされたファイルの中身が入っています。これらの情報を数値化するのです。
例えば、「送信者のドメインは、jpか」と言ったことをデータCSVに落とすわけです。jpドメインであれば、1。それ以外であれば0と言った具合です。このように様々な観点でメールの中身を0~1に置き換えるのです。データCSVに落とした属性を一部ご紹介します。
- 添付ファイルの有無
- 添付ファイルが実行形式か
- Subject は日本語か
- 本文はあるか
- 本文は日本語か
- 本文は HTML か
- 本文に URL が記述されているか
などなど、全部で100項目くらいをデータ CSV に落としています。例示はしましたが、他の項目については企業ノウハウなので、ここでは開示することはできません。悪しからず。
今回は、ここまでです。いかがでしたでしょうか。AI や 人口知能に興味はわいてきましたでしょうか。