膨大なメールを深層学習して運用効率化ツールを作る方法紹介の続きとなります。前回のエピソードで記載させて頂いた1人で撮影したプリクラについてですが、社内で自慢したいので常にプリクラを持ち歩きながら仕事をしておりましたら、同僚の机の上に置き忘れてしまっておりました。社内で落としたと勘違いし探しまわっておりましたら、後日同僚が私の元に直接届けてくれました。ポータル上の落とし物リストに掲載されるところでした。ポータルに掲載された場合のイメージこれはこれで社内全体に自慢できるのでよかったのかもしれません。運用効率化ツールのお話に戻りたいと思います。これまでの記事では動作させる事を優先し、中身については触れておりませんでしたが、中身に触れつつ、カスタマイズする方法をご紹介したいと思います。ファイルの中にございますスクリプトの解説及びカスタマイズ方法となります。学習を行う際に必要な品詞のみを選択し、精度をあげていく事ができます。品詞体系という表を参考にできるだけ必要な単語を出せるようにします。内の58行目にて対象としたい品詞を指定します。学習対象としたい場合は配列に追加してください。内の60行目にて除外したい品詞(詳細)を指定しています。指定し、前方一致で判別されます。...]必要に応じて追加してください。内の63行目にて除外したい単語を指定しています。不要と思われる単語やよく使われる単語を除外します。...]公開したソースコードでは”これが良さそう”と思うものを入れていますが、ご自身の文章にあわせてカスタマイズする事で類似判定の精度向上が見込めます。上のメールから件名、本文のみを取得していますが、差出人や受信日時やメールヘッダーなど、様々な情報をPythonから取得できますのでご紹介しておきます。以下のソースコードを参考にして頂ければと思います。以外でもツールを作る事が可能です。学習を行う際のオプション設定を変更できます。学習したい文章に合わせて変更していくと精度の向上が見込めます。詳しくはソースコード内のコメントに書いております。高いほど収束が速いが高すぎると発散する。低いほど精度が高いが収束が遅くなる。46行目で学習する回数を変更する事ができます。こちらも精度によって増やしたり減らしたりしながら調整していきます。189行目についての説明となります。用に用意された関数ではなく、全文章のベクトルをあらかじめ正規化(数字を変換する下準備のようなイメージ)したものをキャッシュとして保存しております。いう関数でファイルに書き出しています。関数で行う場合は以下の行は不要となります。圧縮した形で入っています。doc_file_tensor.close()このコードにより出力されるファイルです。左右にスクロールしてご覧ください。word_tensor.tsv.gz単語のベクトルデータが入ったファイルです。各単語の位置情報を表す数値が入っています。word_metadata.tsv.gz単語の情報詳細が入ったファイルです。以下のようなデータが入っています。-doc_tensor.tsv.gz文章のベクトルデータが入ったファイルです。各文章の位置情報を表す数値が入っています。doc_metadata.tsv.gz文章の情報詳細が入ったファイルです。よる可視化を行わない場合は不要となります。ファイルの中にございますスクリプトの解説及びカスタマイズ方法となります。33行目の部分で返す文章/単語の数と、立ち上げるサーバーポートを指定できます。立ち上げと学習時に作成されたファイルを読み込んでいます。このあたりの行でエラーが出ましたら学習の際のモデル作成に失敗している可能性があります。「膨大なメールを深層学習して運用効率化ツールを作る3」で掲載した学習モデル作成を再度実行し、エラーが発生していないかを確認いただければと思います。機能で作成した学習モデルデータが読み込まれます。全メールの件名が配列の形で読み込まれます。全メールのベクトルを正規化したデータが配列の形で読み込まれます。pickle.load(f)237行目でサーバの起動そのものが行われます。サーバが応答する部分を書いています。いう関数が呼び出されるようになっています。関数の中の75行目の部分で”学習データから類似した単語を返す”という関数が呼び出されます。関数を使用する事で、近い単語のリストを受け取る事ができます。いうような結果を返す事ができます。94~130行目で文章を返す部分を定義しています。関数が呼び出されます。未知の文章から単語のみを抽出します。関数を呼んでいるので、学習時と同じルールで単語化されています。学習データが知らない単語に分けています。いう事を行っています。現在)では未知の文章から類似文章を直接抽出する関数が用意されていませんが、以下のような仕組みで未知の文章から類似文章の抽出を行っています。サーバが起動しているので早いレスポンスが期待できます。動作する事を確認しております。192行目部分で要求されたファイルをそのまま返す関数を定義しています。経由で返すようにしています。ファイルのロード用に215-224行目で工夫を加えています。フォルダの中身についてです。取得して表示するという事のみを行っています。いうイメージを持っていただければと思い作りました。学習モデルデータから以下のような単語出現頻度を可視化する事が可能となります。別の画像を指定する事で変更が可能です。足す事で表示を除外したい単語を指定できます。ご利用の際は是非一度試して頂きたいです。入れるべきだったと後悔しています。5.まとめ膨大なメールを深層学習して運用効率化ツールを作るについての記事は以上となります。運用効率化を担当としている方々に機械学習の入口となるようなモノをお伝え出来れば...と思いかなり具体的なレベルにかみ砕いて公開させて頂きました。次回以降も同じように小話をはさみながらかなり具体的に実装可能な形で公開していきたいと思います。運用効率化できないか?」という上司からお題を頂き、四苦八苦しました。今では様々な取り組みを行う事ができ、あのお題をくれた上司に感謝しています。【総合】お問い合わせソリューションに関する全般的なお問い合わせはお気軽にご相談ください。