目次
AIとRPAを組合せたシステムを考えてみる
すでにあらゆる業界で取り入れられている流行りのAI(人工知能)とRPA(Robotic Process Automation)。どちらかは導入していても、両方導入しているという企業はまだまだ少ないようです。
もし、このAIとRPAを組み合わせた業務システムがあったとしたら、どのようなものになるでしょうか?本記事ではそれを考えてみたいと思います。
仮想企業とその課題
業務システムを考えるにあたり、仮想企業は「宅食サービスMISO株式会社」という、個人宅向けの食品宅配事業を展開する企業としました。
この企業は、サービスユーザの過去の商品購入データから、ユーザそれぞれの好みを分析して、一人一人に合った商品の広告・PRをしたいと考えています。ユーザの過去の商品購入データや個人情報等は業務DBで管理していますが、今までそれらの情報を有効活用していなかったそうです。
A3RTとUiPathを組合せたシステム構成案
そこで考案したシステムが、名付けて「オススメ商品提案システム」です。
このシステムの動きを簡単に解説します。
① 業務DBから、ユーザの商品の購買履歴データを抽出(RPA)
②-1 ①のデータファイルをアップロード(RPA)
③ ユーザの商品の購入傾向からおすすめ商品を自動で算出(AI)
②-2 おすすめする商品の算出結果をダウンロード(RPA)
④ AIで算出したデータを、業務で活用できるよう整形し、再出力(RPA)
このシステムが想定通りに開発できれば、宅食サービスMISO株式会社は、ユーザそれぞれに合った商品の広告やPRができるようになるでしょう。
RPAツールには「UiPath」を使用します。UiPathは、RPAソフトウェアの世界的ベンダーであるUiPath株式会社が手掛けるRPA製品です。(UiPath公式サイト) 図の青点線四角部分が、UiPathによる実装部分です。
一方、図の緑点線四角部分が、AIによる実装部分です。AIには、「A3RT」(アート)という、株式会社リクルートテクノロジーズが提供する様々な種類のAIのWeb API群を使用します。(A3RT公式サイト)
A3RTのWeb API群の1つである「Listing API」を使用することで、あるユーザの購入傾向と似た、他のユーザの購入傾向を比較・分析し、ユーザが次に購入するのにおすすめな商品を提案できるようになります。
A3RT・Listing API の使い方
Listing API の使い方を簡単に解説します。
ちなみに、公式サイトのマニュアルにあるコマンドはWindows環境ではエラーになるものがあるので、Windows環境で動かしてみたい方は、本記事のコマンドをどうぞ参考にしてください。
STEP1:A3RTの会員登録をし、APIキーを発行する
A3RT公式サイトにアクセスし、無料会員登録を行い、APIキーを発行します。
STEP2:入力データファイルを準備
入力データを、CSV形式で作成します。項目は以下の通りとします。ヘッダとして一行目に以下のフィールド名を持たせます。
No. | フィールド名 | 説明 | 値サンプル |
---|---|---|---|
1 | user_id | ユーザを識別できるID | 01234567890123456789 |
2 | item_id | アイテムを識別できるID | 01234567 |
3 | time_stamp | 時刻(アクセス時間を想定) | 2017-01-10 21:11:41.990 |
例として、実際に作ってみたデータの一部がこちらです。
user_id,item_id,time_stamp USER_A,APPLE,2019-04-01 12:00:00.000 USER_A,BANANA,2019-04-01 12:00:00.000 USER_A,ORANGE,2019-04-01 12:00:00.000 USER_A,STRAWBERRY,2019-04-01 12:00:00.000 USER_A,APPLE,2019-04-02 12:00:00.000 USER_A,BANANA,2019-04-02 12:00:00.000 USER_A,ORANGE,2019-04-02 12:00:00.000 USER_A,STRAWBERRY,2019-04-02 12:00:00.000 |
この例では、ユーザID(user_id)はUSER_Aの1種類のみですが、実際は5種類のユーザIDを使っています。商品ID(item_id)は適当なIDを割り振っています。time_stampは、商品を購入した時のタイムスタンプで、適当に4月1日から4月30日を使っています。
これらを「train_data.csv」というファイル名で作成します。
STEP3:入力ファイルアップロード
コマンドプロンプトを立ち上げ、STEP2で作成した「train_data.csv」があるディレクトリまで移動します。
その後、以下のコマンドでアップロード先のURLを取得します。
1 |
curl "https://api.a3rt.recruit-tech.co.jp/listing/v1/get_upload_url" --get --data "apikey=取得したAPIキー" |
正常に実行されると、以下の結果が返ってきます。
1 |
{"status": 0, "message": "ok", "result": {"url": "アップロードURL"}} |
次に、上の「アップロードURL」を環境変数に設定します。
1 |
set UPLOAD_LOCATION="アップロードURL" |
train_data.csvをアップロードします。
1 |
curl -H 'Content-Type:text/plain' -X PUT --upload-file train_data.csv %UPLOAD_LOCATION% |
正常に実行されると、以下の結果が返ってきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "kind": "storage#object", "id": "a3rt-public-api-listing/APIキー/input_data/train_data.csv/1568298474361279", "selfLink": "https://www.googleapis.com/storage/v1/b/a3rt-public-api-listing/o/APIキー%2Finput_data%2Ftrain_data.csv", "name": "APIキー/input_data/train_data.csv", "bucket": "a3rt-public-api-listing", "generation": "1568298474361279", "metageneration": "1", "timeCreated": "2019-09-12T14:27:54.360Z", "updated": "2019-09-12T14:27:54.360Z", "storageClass": "REGIONAL", "timeStorageClassUpdated": "2019-09-12T14:27:54.360Z", "size": "297792", "md5Hash": "+MMnkHNIGAu5bwLP3BYoYg==", "mediaLink": "https://www.googleapis.com/download/storage/v1/b/a3rt-public-api-listing/o/APIキー%2Finput_data%2Ftrain_data.csv?generation=1568298474361279&alt=media", "crc32c": "eolO2A==", "etag": "CL+j3Yu/y+QCEAE=" } |
おすすめ商品の算出を開始します。
1 |
curl "https://api.a3rt.recruit-tech.co.jp/listing/v1/start_w2v" --get --data "apikey=APIキー" |
しばらく待った後、以下のコマンドで計算結果ファイルをダウンロードするURLを取得します。
1 |
curl "https://api.a3rt.recruit-tech.co.jp/listing/v1/get_download_url" --get --data "apikey=APIキー" |
正常に実行されると、以下の結果が返ってきます。
1 |
{"status": 0, "message": "ok", "result": {"url": "https://storage.googleapis.com/a3rt-public-api-listing/sample_dl_url"}} |
上で取得したURLにブラウザでアクセスすると、「listing_list.csv」というファイルをダウンロードできます。
listing_list.csvは以下のような様式になっています。
No. | フィールド名 | 説明 | 値サンプル | |
---|---|---|---|---|
1 | user_id | ユーザを識別できるID | 01234567890123456789 | |
2 | item_list | アイテムを識別できるID | 01234567 | |
item_id | アイテムを識別できるID(商品ID) | 01234567 | ||
スコア値 | 類似度(商品のおすすめ度) | 0.948221981525 | ||
, | リスト内もカンマ区切り | , |
※item_listでは、商品IDと商品のおすすめ度を組み合わせた結果がカンマ区切りで10件まで表示される
これではよくわからないので、実際に返ってきたlisting_list.csvを見てみましょう。
“USER_A”,”GRAPE:0.993405103683″ “USER_B”,”STRAWBERRY:0.997779250145,GRAPE:0.99342083931″ “USER_C”,”APPLE:0.998979926109,ORANGE:0.998331069946,STRAWBERRY:0.996503293514″ “USER_D”,”STRAWBERRY:0.998676359653,BANANA:0.998436748981,ORANGE:0.997370362282,STRAWBERRY:0.995654404163″ “USER_E”,”ORANGE:0.999711751938,STRAWBERRY:0.997676968575,GRAPE:0.993906497955″ |
以下のような項目の並びになります。
“ユーザID”,”商品ID1:商品のおすすめ度,商品ID2:商品のおすすめ度,・・・”
上のファイルはUSER_AからUSER_Eが存在し、それぞれに、商品であるAPPLE、ORAGE、BANANA、STRAWBERRY、GRAPEのどれがおすすめか ということを表しています。
おすすめ度が1に近いほどその商品がユーザに対して強くおすすめするということを表しています。
まとめ
これからの将来、活躍するであろうAIとRPAを組み合わせたシステムを考えてみました。今回は、システムの概要とA3RTのListing API中心にしかお話しをしましたので、UiPathによる自動化についてはお伝えできませんでした。実は現在このシステムを開発中なので、次回は自動化部分を含め、完成したシステムについて解説する・・・かもしれません。
なお、tdiはAIとRPAの導入サービスを提供しております。AIやRPAでお悩みの企業の方は、お気軽にご相談ください!
執筆者プロフィール
![Akaishi Kyousuke](https://www.tdi.co.jp/miso/wp-content/uploads/2020/02/0cd864550951e7111ba9ae1c4ab7c82a-1-500x280.jpg)
- tdi 中部公共サービスシステム部
- まだまだ経験は浅いですが、いろんなお客さまや技術に触れてきました。勉強することは尽きません。今は、RPAとAIについて勉強中です。AWSとかも気になります。
この執筆者の最新記事
RPA2020.05.11A3RTとUiPathによるAI・RPA組合せシステム構想