なんか日本語を機械学習させようと思いました。
自動的に日本語を学習させる方法として、クローリングするかなぁ
と思っていたのですが、色々と邪魔な情報もあるので、もう少しきれいなものを集める方法はないかと考えていたところ、
Sendgridが素敵な機能を持っていました。
※Sendgridの日本語のページ( https://sendgrid.kke.co.jp/ )
Inboud Parse Webhookです。
これを使えば、Sendgridがメールを受信して、それをHTTPでPOSTしてくれるという、最高のサービスです。
しかも、POSTに失敗してもRetryしてくれるというすぐれもの。
これを使って、
色々なメールマガジン => [Inbound Parse Webhook] => [ AWS Elastic Beanstalk ]=> [ AWS Elastic Beanstalk (worker tier)] => [ Amazon DynamoDB]
という構成で、機械学習させていこうと決めました。
まず今回はSendgridのInbound Parse Webhookを使って、送られてくるメールマガジンをパースして、HTTPで送ってもらうところまで試してみます。
api_nameとapi_keyはたぶんSendgridのアカウントのユーザ名とパスワードがそのまま
api_nameとapi_keyになっていそう。(試していないけど、、)
けど、なんかアカウントそのままのパスワードとかを使うのは嫌なので、専用に一つCredential作ります。
ここから新しいCredentialが作れます。(ログインしていないと見れないかも)
https://sendgrid.com/credentials
緑色のボタンを押すとフォーム出てくる
適当に入れると出来上がり
Nameで入力したものがapi_user,Passwordで入力したものがapi_keyになっているようです。
というわけで
curl -XPOST https://api.sendgrid.com/api/parse.set.json -d "api_user=${USERNAME}&api_key=${APIKEY}&hostname=${HOSTNAME}&url=${URL}&spam_check=0"
とやると
{"message":"success"}
これで出来たようです。
確認してみます。
curl "https://api.sendgrid.com/api/parse.get.json?api_user=${USERNAME}&api_key=$APIKEY"
{ "parse": [ { "spam_check": 0, "url": "http://example.com/fuga/hoge", "hostname": "hostname.example.com" } ] }
いい感じです。
hostnameで指定したメールアドレス(なんでもOK@hostname)にメールを送ってみると
POSTのパラメータで
[headers]
[dkim]
[to]
[from]
[text]
[sender_ip]
[envelope]
[attachments]
[subject]
[charsets]
[SPF]
という項目が送られて来ています。
multipartのメールは試していませんが、おそらくいい感じにやってくれそうです。
詳しくはこちら( https://sendgrid.com/docs/API_Reference/Webhooks/parse.html )
日本語も完璧です。
何通受信したかなんかの統計もちゃんと見れます。
これで、色々なメルマガを受信して、テキストを解析する準備が出来ました。