Text Suggest APIでオリジナルモデルを作ってみた
タナカ
こんにちは、A3RT担当のタナカです。
この度、弊社が一般公開している機械学習API群A3RTのText Suggets APIにモデル作成機能が追加されました!
さっそく私もモデル作成に挑戦してみましたので、その様子をご紹介したいと思います!
Text Suggest APIとは
Text Suggest APIは、文章の自動生成および入力補助を行うAPIです。
学習したテキストデータをもとに、投げられた言葉に続く文章を生成してくれます。
例えば、現在のデフォルトモデルに「髪の」と送ると、「長い男性が立っています。」といったような返答が返ってきます。
今までは既存モデルのみ公開していましたが、
今回の新機能ではユーザーの皆さんが学習データをアップロードして独自のモデルを作ることができるようになりました。
(詳しくはText Suggest APIのリファレンスに書かれていますので、そちらもご覧ください。)
0.準備
まずは以下のものを準備しましょう!
1.Text Suggest APIのAPI Key:API Key発行画面から取得してください
2.学習データ:日本語の文章が書かれたテキストファイル
(文字コードUTF-8、適度に改行されていること、単語単位での分かち書きは不要)
私は学習データに青空文庫で公開されている夏目漱石の名作「門」「こころ」「坊っちゃん」「三四郎」をまとめたファイルを使いました。
実用的なレベルのモデルには1MB以上のデータ量が望ましいそうです。
また、文章の表現に幅がありすぎると学習が難しくなる傾向にあります。
1.学習データをアップロードしましょう
① まず、ファイルをアップロードする先のURLとデータセットIDを取得します。
1 |
$ curl -X POST https://api.a3rt.recruit-tech.co.jp/text_suggest/v2/dataset -d apikey=AAAAAAAAAAAAAA |
レスポンスには「dataset_url」と「dataset_id」が返されます。
dataset_urlはデータをアップロードするためのURLで、dataset_idはアップロードされたデータに割り振られ、学習を開始する際に使用します。
1 2 3 4 5 6 |
{ "status": 0, "message": "ok", "dataset_url": "https://a3rt-text-suggest.s3.amazonaws.com/.....", "dataset_id": "66b52636-a2aa-45b7-8fd7-5c3e1e2961aa" } |
この時発行されるURLの期限は数分なので、早めに次のデータアップロードを行ってくださいね!
② 次に、用意したデータを取得したURLにアップロードします。
1 |
$ curl -D - -X PUT --upload-file /Users/.../.../XXXX.txt 'https://a3rt-text-suggest.s3.amazonaws.com/.....' |
2.学習を開始しましょう!
学習開始のリクエストを送りましょう。
1 2 3 |
$ curl -X POST https://api.a3rt.recruit-tech.co.jp/text_suggest/v2/model\ -d apikey=AAAAAAAAAAAAAA\ -d dataset_id=66b52636-a2aa-45b7-8fd7-5c3e1e2961aa |
レスポンスでモデルIDが発行され、サーバー上では学習が開始されます。
1 2 3 4 5 |
{ "status": 0, "message": "ok", "model_id": "xxxxxxxxxx" } |
ちなみに、1つのAPIキーで複数のモデルを作ることができますが、既に作ったモデルの更新はできません。
3.学習ステータスを確認しましょう
学習には長くて数時間かかる場合があるため、実際にモデルを使えるようになるまでのステータスを確認する機能があります。
確認には下記のようなリクエストを送ります。
1 |
$ curl -X GET 'https://api.a3rt.recruit-tech.co.jp/text_suggest/v2/check_status?apikey=AAAAAAAAAAAAAA&model_id=xxxxxxxxxx' |
学習が終わっている場合は以下のレスポンスが返されます。
1 2 3 4 5 |
{ "status": 0, "message": "ok", "model_status": "finish" } |
学習が終わっていない場合は以下のレスポンスが返されます。
1 2 3 4 |
{ "status": 1404, "message": "not found model [info:Training Is Not Finished.]" } |
1.6MBのデータを学習するのに1時間くらいかかるそうです。
4.いよいよ、自分のモデルを使ってみましょう!
previous_descriptionに続きを考えて欲しい単語や文章、styleにはモデルIDを入れてリクエストを送ります。
1 |
$ curl -X GET 'https://api.a3rt.recruit-tech.co.jp/text_suggest/v2/predict?apikey=AAAAAAAAAAAAAA&previous_description=向上心&style=' |
私の夏目漱石モデルに「向上心」と入れてみたところ以下のようなレスポンスが来ました。
1 2 3 4 5 |
{ "status": 0, "message": "ok", "suggestion": ["がないかと思っていた。", "のない男であるから、それを、自分の眼に残った。", "があるんだと思っている。" } |
今回の場合、”向上心がないかと思っていた。”, “向上心のない男であるから、それを、自分の眼に残った。”, “向上心があるんだと思っている。”という文章が生成できたことになります。
「向上心のないものはばかだ」というあの有名なフレーズは返ってこなかったですが、それも機械学習ゆえ。
オリジナルの文章を返してくれるのです。
みなさんも是非、自分だけのモデルを作成してみてくださいね!
これからもA3RTをよろしくお願いいたします!