- 調査・研究
IBM Watson®を使って社内手続きのことを教えてくれるbotを作成してみた①
弊社の人事総務部門には、社員から社内手続きに関する問い合わせがよく来るそうです。
そこで、人事総務部門の問い合わせ対応を少しでも軽減するために
Slackbotの概要
このSlackbotは、社員からの社内手続きに関する問い合わ
問い合わせの内容を解釈する処理は、IBM Cloud™にて提供されているIBM Watson® NaturalLanguageClassifierを利用することでフリーのテキスト入力にも対応できるような仕組みにしました。処理の流れは以下のようなイメージです。
NaturalLanguageClassifier(以下NLC)は、テキスト文を事前に準備したクラスに分類してくれます。社員からの問い合わせ(テキスト)が、どのイベント(クラス)のことなのかを判断(分類)するために、事前にデータを準備し、NLCに学習させる必要があります。以下、事前準備について説明します。
事前準備①:イベントを洗い出す
まず、社員から問い合わせがくるイベントを洗い出します。
洗い出しは、実際に問い合わせがあった内容を人事総務部門の方に
対象のイベント(一部)は、 以下の通りとなります。
事前準備②:問い合わせを学習させる
続いて、NLCに対象となるイベントに対しての想定される問い合わせを学習させます。
学習を行う際に、偏った文章構成にならないよう、幅広い文章の構成を学習させることに気をつけました。
①対象イベントに対する問い合わせを学習させる
1つのイベントにつき想定される問い合わせ文(10個~20個)を学習させることにしました。
事前に準備した問い合わせ文(一部)は以下の通りです。
②問い合わせ結果を確認する
①にて学習させたNLCに対して、実際に問い合わせを行い、それぞれのイベントに一致する割合を確認します。
問い合わせに対して、想定していたイベントの割合が一番高く、7割を超えていれば対象とし、
想定していたイベントより他のイベントの割合のほうが高い場合または、想定していたイベントの割合が7割以下の場合は対象外としました。
実際に問い合わせを行うと以下のようなjsonデータが返ってきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
curl -G -u [NLC-ID]:[NLC-pass] "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/[classifier_id]/classify" --data-uriencode [textfile] { "classifier_id" : [classifier_id], "url" : "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/[classifier_id]/classify" "text" : "子供が生まれそうです。", "top_class" : "出生", "classes" : [ { "class_name" : "出生", "confidence" : 0.9066658052600268 }, { "class_name" : "小学校入学", "confidence" : 0.03705040029645482 }, { "class_name" : "備品", "confidence" : 0.018748221713341912 }, { "class_name" : "休暇", "confidence" : 0.0037052941771315655 }, { "class_name" : "資格取得", "confidence" : 0.0029404091947773485 }, { "class_name" : "通勤費", "confidence" : 0.002734466826852119 }, { "class_name" : "健康診断", "confidence" : 0.002509568460998325 }, { "class_name" : "住所変更", "confidence" : 0.0023430360778050217 }, { "class_name" : "結婚", "confidence" : 0.0022657303563943876 }, { "class_name" : "勤務地変更", "confidence" : 0.0022511848972454093 } ] } |
③調整を行う
②の問い合わせ結果が対象外になった場合、新たに問い合わせ文を追加して再度①の学習をさせます。問い合わせ結果が対象になるまで①と②を繰り返し行います。
途中ですが、今回はここまでとなります。次回はSlackと連携させて完成したものを紹介したいと思います。
(次回に続く)