LoginSignup
9
7

More than 3 years have passed since last update.

【機械学習】AutoMLで文章分類

Posted at

本稿ではGCPサービスのAutoML Natural Languageを使って文章の分類を行います。

経緯

仕事でチャットボットの実装に携わる機会が増え、FAQの分類に使えるのでは?と思ったからです。
質問(Q)が分類できれば、それに紐づく回答(A)が分かるはずです。

AutoML Natural Languageとは?

カスタムの機械学習モデルを構築してデプロイし、ドキュメントの分析、分類、エンティティの識別、態度の評価を行えます。

公式ドキュメントより

今回はその中でも、分類モデルを作成するText & Document Classificationを利用します。

教師データを用意する

今回は飲食店のFAQ想定でデータを用意してみました。
Single-label-Classificationで学習させるのでDocumentとそのLabelだけ定義します。

Document Label
お手洗いはどこですか toilet
会計はクレジットカードでも良いですか credit
タバコは吸えますか tobacco
予約はできますか reservation
宴会で利用できますか party
何時から営業してますか starttime
何時まで営業してますか endtime
営業日はいつですか businessday
最寄駅からのルートを教えてください root
WiFiはありますか wifi

公式ドキュメントによると1Label当たり最低10Documentが必要で、推奨は1000Documentです。
今回は最低限の10Documentで学習させようと思うので、次のように表現を変えて1Labelに対するDocumentのバリエーションを作ります。

Document Label
タバコは吸えますか tobacco
タバコを吸いたい tobacco
喫煙所はありますか tobacco
喫煙できますか tobacco
最寄りの喫煙所を教えて tobacco
タバコ tobacco
喫煙できるか tobacco
喫煙可能か tobacco
タバコ吸えるか tobacco
喫煙ルームはありますか tobacco

教師データをインポートする

Natural Language productsAutoML Text & Document ClassificationGet startedをクリックする。
1.png

ヘッダーのNEW DATASETをクリックして次のダイアログを開く。
Dataset name:restaurant_faq
Location:任意
Select your model objective:Single-label-Classification
CREATE DATASETをクリックする。
2.png

今回はローカルのCSVをアップロードするので、Upload a CSV file from your computerを選択する。
SELECT FILESrestaurant_faq.csvで保存しておいたCSVデータを選択する。
最後にアップロード先のGSCバケットを指定して、IMPORTをクリックする。
3.png

インポートが始まります。同時に、インポート開始メールが送信されます。
このインポートにはめちゃくちゃ時間がかかります。
今回の100Document10Labelのデータでさえ10分以上かかりました。
4.png

インポートが終わるとITEMSタブからデータを確認することができます。
Documentの重複等のデータ不備があればこの画面でワーニングが出るので分かります。
5.png

学習を開始する

TRAINタブからトレーニング・バリデーション・テストに使うデータ数が確認できます。
Documentの80%がトレーニングに使われ、10%がバリデーション(ハイパーパラメータの調整)、残りの10%がテストに使われます。
START TRAININGボタンをクリックして学習を開始します。
6.png

待つこと5時間...無事学習が終わるとEVALUATEタブからモデルの評価を確認できます。
各種データが少ないからなのか、PrecisionとRecallが共に100%出ています。

学習は1時間3ドルかかります。今回だと15ドルかかった計算になります。GCP特有の無料枠があるかと思い、なくても今回のデータくらいならそんなにかからないだろうと思っていて、料金を調べず試していたら数千円の請求がきてしまいました。Predictは無料枠があるみたいです。

7.png

予測してみる

喫煙所ある? を試して見ます。
完全一致の文章は学習データに含まれてませんが、喫煙所という単語は含まれているため、見事にtabaccoのスコアが1.00!
8.png

次に全く学習データに含まれていない ニコチン最高! という文章を投げてみると、スコアは落ちるもののtabaccoであると言っています。凄い。タバコ=ニコチンという学習もしてくれていそうですね。
9.png

終わりに

FAQの分類に使えそうですね。
長い文章も学習できるので、より複雑なFAQにも対応できそうです。
ただし...お高い。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7