(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023180592
(43)【公開日】2023-12-21
(54)【発明の名称】選択装置、選択方法および選択プログラム
(51)【国際特許分類】
G06F 16/335 20190101AFI20231214BHJP
【FI】
G06F16/335
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022094017
(22)【出願日】2022-06-09
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】山田 真徳
(72)【発明者】
【氏名】久保 祐喜
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA01
5B175HA01
5B175HA02
(57)【要約】
【課題】チャットボットの特定の命令であるskillの拡張性を実現した上で、高精度にskill選択を可能とする。
【解決手段】選択部15bが、既知の命令を表すskill文14aのうち、ユーザの属性情報を用いた所定の条件を表すフィルタ14bに合致した候補のskill文を選択する。算出部15cが、ユーザにより入力された入力文の意味を表すベクトルと、選択された候補のskill文の意味を表すベクトルとの間の距離を算出する。特定部15dが、算出された距離が最短である候補のskill文に対応する命令を特定する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
既知の命令を表す文のうち、ユーザの属性情報を用いた所定の条件に合致した命令を表す文の候補を選択する選択部と、
前記ユーザにより入力された文の意味を表すベクトルと、選択された前記候補の意味を表すベクトルとの間の距離を算出する算出部と、
算出された前記距離が最短である前記候補に対応する命令を特定する特定部と、
を有することを特徴とする選択装置。
【請求項2】
前記選択部は、さらに状況情報を用いた前記所定の条件に合致した候補を選択することを特徴とする請求項1に記載の選択装置。
【請求項3】
前記選択部は、前記ユーザの属性情報として、該ユーザによる前記命令の利用履歴を用いることを特徴とする請求項1に記載の選択装置。
【請求項4】
前記選択部は、前記状況情報として、前記命令の利用される時間を用いることを特徴とする請求項2に記載の選択装置。
【請求項5】
前記算出部は、Sentence BERTを用いて前記ベクトルを生成することを特徴とする請求項1に記載の選択装置。
【請求項6】
前記算出部は、前記距離として、前記ベクトルの間のコサイン距離を算出することを特徴とする請求項5に記載の選択装置。
【請求項7】
選択装置が実行する選択方法であって、
既知の命令を表す文のうち、ユーザの属性情報を用いた所定の条件に合致した命令を表す文の候補を選択する選択工程と、
前記ユーザにより入力された文の意味を表すベクトルと、選択された前記候補の意味を表すベクトルとの間の距離を算出する算出工程と、
算出された前記距離が最短である前記候補に対応する命令を特定する特定工程と、
を含んだことを特徴とする選択方法。
【請求項8】
既知の命令を表す文のうち、ユーザの属性情報を用いた所定の条件に合致した命令を表す文の候補を選択する選択ステップと、
前記ユーザにより入力された文の意味を表すベクトルと、選択された前記候補の意味を表すベクトルとの間の距離を算出する算出ステップと、
算出された前記距離が最短である前記候補に対応する命令を特定する特定ステップと、
をコンピュータに実行させるための選択プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、選択装置、選択方法および選択プログラムに関する。
【背景技術】
【0002】
近年、自然言語処理の性能が大幅に上昇したことにより、チャットボットのビジネス利用が拡がっている。チャットボットは、雑談を目的としたものと、特定の命令(skill)を実行するものとに大別される。
【0003】
従来、skillが増えると、skillを呼び出すキーワードを人間が覚えるのは大変なため、自然言語の意味を捉えて柔軟にskill選択を行えるように、機械学習が用いられる。その場合に、skillが追加されるたびに再学習を行うことは、運用上困難である。そこで、再学習に依らずにskillを追加するskillの拡張性を実現するために、言語全体の関係において、任意の文同士の意味の距離を推定する学習を行うSentence BERTと呼ばれる技術が用いられる(非特許文献1参照)。これにより、入力文と既知のskill文との間の意味の距離が最短のskillを選択することにより、skillの拡張性を実現することが可能となる。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Nils Reimers, Iryna Gurevych, “Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks”, [online], [2022年4月20日検索]、インターネット<URL:https://arxiv.org/abs/1908.10084>
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、skillの拡張性を実現するためには、言語(日本語)全体を学習対象とするため、skill選択の精度が低下するという問題があった。例えば、「勤務開始」「勤務終了」という2つのskillがある場合に、「イルカ」という単語と比較すると相対的に2つのskillの意味の距離が近いために区別が困難であり、その結果、2つのいずれかのskill選択が困難であった。
【0006】
本発明は、上記に鑑みてなされたものであって、チャットボットの特定の命令であるskillの拡張性を実現した上で、高精度にskill選択を可能とすることを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するために、本発明に係る選択装置は、既知の命令を表す文のうち、ユーザの属性情報を用いた所定の条件に合致した命令を表す文の候補を選択する選択部と、前記ユーザにより入力された文の意味を表すベクトルと、選択された前記候補の意味を表すベクトルとの間の距離を算出する算出部と、算出された前記距離が最短である前記候補に対応する命令を特定する特定部と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、チャットボットの特定の命令であるskillの拡張性を実現した上で、高精度にskill選択を行うことが可能となる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、選択装置の概要を説明するための図である。
【
図2】
図2は、選択装置の概略構成を例示する模式図である。
【
図3】
図3は、選択装置の処理を説明するための図である。
【
図4】
図4は、選択処理手順を示すフローチャートである。
【
図7】
図7は、選択プログラムを実行するコンピュータを例示する図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【0011】
[選択装置の概要]
図1は、選択装置の概要を説明するための図である。本実施形態の選択装置は、Sentence BERTを用いて選択されたskillの候補を、命令を行うユーザの属性情報および状況情報を利用したフィルタリングで限定することにより、skill選択の精度を向上させる。
【0012】
具体的には、
図1に示すように、選択装置は、まず、Sentence BERTを用いて、任意の文同士の意味の距離を推定する。例えば、選択装置は、入力文(ユーザ発話文)と既知のskill文とをそれぞれSentence BERTを用いて意味を表すベクトルに変換し、入力文のベクトルとskill文のベクトルとの間の距離を表すcosine lossを算出する。そして、選択装置は、入力文のうち、算出した距離が所定の閾値以下であるskill文をskillの候補として選択する。これにより、選択装置は、skillの拡張性を実現する。
【0013】
一方、ここで選択されたskillの候補は、「勤務開始」、「勤務終了」のように異なるskillであっても、言語(日本語)全体においては意味の距離が近く区別が困難な場合があり、skill選択の精度を低下させる原因となっている。
【0014】
そこで、本実施形態の選択装置は、
図1に波線で囲んで示すように、命令を行うユーザの属性情報および状況情報を利用してskillのフィルタリングを行って、skill選択の候補を限定することにより、skill選択の精度を向上させる。
【0015】
ここで、ユーザの属性情報とは、例えば、ユーザの過去のskill選択履歴である。ユーザごとに利用するskillが限られている場合が多いことから、このユーザが過去の利用回数が多いskillに限定することは有効である。また、状況情報とは、例えば、skillが利用される時間である。「勤務開始」というskillが利用されるのは朝の時間帯、「勤務終了」というskillが利用されるのは夕方以降の時間帯というように、時間により利用されるskillを限定することは有効である。
【0016】
このようにして、選択装置は、命令を行うユーザの属性情報および状況情報を利用したフィルタリングで、選択されたskill候補を限定することにより、skill選択の精度を向上させる。
【0017】
[選択装置の構成]
図2は、選択装置の概略構成を例示する模式図である。また、
図3は、選択装置の処理を説明するための図である、まず、
図2に例示するように、選択装置10は、パソコン等の汎用コンピュータで実現され、入力部11、出力部12、通信制御部13、記憶部14、および制御部15を備える。
【0018】
入力部11は、キーボードやマウス等の入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部15に対して処理開始などの各種指示情報を入力する。出力部12は、液晶ディスプレイなどの表示装置、プリンター等の印刷装置等によって実現される。
【0019】
通信制御部13は、NIC(Network Interface Card)等で実現され、ネットワークを介したサーバ等の外部の装置と制御部15との通信を制御する。例えば、通信制御部13は、後述する選択処理に用いられる入力文やskill文、ユーザの属性情報等を管理する管理装置等と制御部15との通信を制御する。
【0020】
記憶部14は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現され、後述する選択処理に用いられるSentence BERTのモデル、skill文14a、フィルタ14b等が記憶される。なお、記憶部14は、通信制御部13を介して制御部15と通信する構成でもよい。
【0021】
制御部15は、CPU(Central Processing Unit)等を用いて実現され、メモリに記憶された処理プログラムを実行する。これにより、制御部15は、
図2に例示するように、取得部15a、選択部15b、算出部15cおよび特定部15dとして機能して、選択処理を実行する。なお、これらの機能部は、それぞれあるいは一部が異なるハードウェアに実装されてもよい。例えば、選択部15bと算出部15cとは異なる装置に実装されてもよい。また、制御部15は、その他の機能部を備えてもよい。
【0022】
取得部15aは、ユーザによる入力文を取得する。例えば、取得部15aは、入力部11あるいは通信制御部13を介して、bolt apiと呼ばれるslack公式のapiを用いてslackで入力された文を入力文として受け付ける。
【0023】
また、取得部15aは、入力文を入力したユーザの属性情報を取得する。取得部15aは、当該ユーザの状況情報を取得してもよい。取得部15aは、これらの情報を、入力部11あるいは通信制御部13を介して取得する。また、取得部15aは、
図3に例示するように、選択処理に先立って予め、属性情報や状況情報を取得して記憶部14に記憶させてもよい。その場合には、属性情報や状況情報は、追加することも可能である。あるいは、取得部15aは、これらの情報を記憶部14に記憶させずに、以下に説明する選択部15bに転送してもよい。
【0024】
また、取得部15aは、skill文を、入力部11あるいは通信制御部13を介して取得して、記憶部14のskill文14aに記憶させる。skill文とは、既知のskillを表す文であり、skillとして利用可能な自然言語情報である。skill文は、例えば学習によりskillとして利用可能と判定された情報である。skill文は、
図3に例示するように、追加することが可能である。なお、取得部15aは、取得したskill文を記憶部14に記憶させずに、選択部15bに転送してもよい。
【0025】
選択部15bは、既知の命令を表すskill文14aのうち、ユーザの属性情報を用いた所定の条件を表すフィルタ14bに合致した候補のskill文を選択する。また、選択部15bは、さらに状況情報を用いたフィルタ14bに合致した候補のskill文を選択する。
【0026】
具体的には、選択部15bは、ユーザの属性情報として、該ユーザによるskillの利用履歴を用いる。また、選択部15bは、状況情報として、skillの利用される時間を用いる。
【0027】
その場合に、フィルタ14bとは、例えば、入力文のユーザが過去に所定回数以上利用したskillというような、ユーザの属性情報を用いた条件である。フィルタ14bは、ある役職のユーザが過去に利用したskillというような、ユーザの属性情報を用いたユーザのグループに対する条件であってもよい。
【0028】
あるいは、フィルタ14bは、朝の時間帯に利用されるskill、夕方以降の時間帯に利用されるskillというような、skillの利用される時間等の状況情報を用いた条件である。選択部15bは、入力文が受け付けられた時間と状況情報とを対比してフィルタ14bの条件に合致するか否かを判定すればよい。
【0029】
また、属性情報や状況情報は、別途機械学習を用いて推定した情報を利用してもよい。例えば、カメラによる画像認識結果の服装の情報を用いて、外出用の服装であると推定された場合に、外出用の服装という状況情報を用いて、「勤務終了」および「物品購入」から「物品情報」をフィルタリングにより選択してもよい。
【0030】
算出部15cは、ユーザにより入力された文の意味を表すベクトルと、選択された候補のskill文の意味を表すベクトルとの間の距離を算出する。
【0031】
具体的には、算出部15cは、Sentence BERTを用いて文の意味を表すベクトルを生成する。すなわち、算出部15cは、学習済みのSentence BERTのモデルを用いて、文の意味を表すベクトルを生成する。例えば、算出部15cは、次式(1)に示すように、入力文をベクトルに変換し、次式(2)に示すように、skill文をベクトルに変換する。
【0032】
【0033】
そして、算出部15cは、ベクトルのコサイン距離を、入力文のベクトルとskill文のベクトルとの間の距離として、ベクトル間のコサイン距離を算出する。具体的には、算出部15cは、入力文のベクトルとskill文のベクトルとの間の距離として、次式(3)に示すように、ベクトル間のコサイン距離を算出する。
【0034】
【0035】
特定部15dは、算出された距離が最短である候補のskill文に対応する命令を特定する。特定部15dは、
図3に例示するように、特定したskill文を入力文に対応するskillとして出力する。例えば、特定部15dは、特定されたskill文に対応するskillを発動し、bolt apiを介してslackに返す。これにより、選択装置10は、入力文に対応するskillを高精度に選択することが可能となる。
【0036】
なお、特定部15dは、入力文を、特定したskill文に対応するskillの新たなskill文として、記憶部14のskill文14aを更新してもよい。
【0037】
[選択処理]
次に、
図4を参照して、本実施形態に係る選択装置10による選択処理について説明する。
図4は、選択処理手順を示すフローチャートである。
図4のフローチャートは、例えば、処理の開始を指示する操作入力があったタイミングで開始される。
【0038】
まず、取得部15aが、ユーザによる入力文、入力文を入力したユーザの属性情報、当該ユーザの状況情報を取得する(ステップS1)。例えば、取得部15aは、bolt apiを用いてslackで入力された文を入力文として受け付ける。また、取得部15aは、既知の命令を表すskill文14aを取得する。
【0039】
次に、選択部15bが、既知の命令を表すskill文14aのうち、ユーザの属性情報や状況情報を用いた所定の条件を表すフィルタ14bに合致した候補のskill文を選択する(ステップS2)。例えば、選択部15bは、入力文のユーザが過去に所定回数以上利用したskill、ある役職のユーザが過去に利用したskill、あるいはskillの利用される時間等の条件を示すフィルタ14bを用いて、skill文14aのフィルタリングを行う。
【0040】
算出部15cは、ユーザによる入力文の意味を表すベクトルと、選択された候補のskill文の意味を表すベクトルとの間の距離を算出する(ステップS3)。例えば、算出部15cは、Sentence BERTを用いて文の意味を表すベクトルを生成し、ベクトル間のコサイン距離を算出する。
【0041】
特定部15dは、算出された距離が最短である候補のskill文に対応する命令を特定する(ステップS4)。例えば、特定部15dは、特定したskill文に対応するskillを発動し、bolt apiを介してslackに返す。これにより、一連の選択処理が終了する。
【0042】
[効果]
以上、説明したように、選択装置10において、選択部15bが、既知の命令を表すskill文14aのうち、ユーザの属性情報を用いた所定の条件を表すフィルタ14bに合致した候補のskill文を選択する。また、算出部15cが、ユーザにより入力された入力文の意味を表すベクトルと、選択された候補のskill文の意味を表すベクトルとの間の距離を算出する。また、特定部15dが、算出された距離が最短である候補のskill文に対応する命令を特定する。
【0043】
具体的には、選択部15bは、ユーザの属性情報として、該ユーザによる命令の利用履歴を用いる。また、算出部15cは、Sentence BERTを用いてベクトルを生成する。また、算出部15cは、ベクトル間の距離として、ベクトル間のコサイン距離を算出する。
【0044】
これにより、選択装置10は、命令を行うユーザの属性情報および状況情報を利用したフィルタリングで、選択されたskill候補を限定することにより、skill選択の精度を向上させることが可能となる。このように、チャットボットの特定の命令であるskillの拡張性を実現した上で、高精度にskill選択を行うことが可能となる。
【0045】
また、選択部15bは、さらに状況情報を用いたフィルタ14bの条件に合致した候補のskill文を選択する。具体的には、選択部15bは、状況情報として、命令の利用される時間を用いる。これにより、さらにskill選択の精度が向上する。
【0046】
[実施例]
図5および
図6は、実施例を説明するための図である。本実施例では、Wikipediadで学習済みのSentence BERTを用いて、テストデータを入力し、入力文と既知のskillを表す文とをベクトルに変換して、入力文とskillを表す文との距離を算出した。
【0047】
なお、Sentence BERTの学習には、skillを使用するユーザを決定し、skillを連想しやすい100個の発話を学習データとして生成して用いた。また、検証のために、同様にskillを使用するユーザを決定し、skillを連想しにくい発話をテストデータとして生成した。学習データ、テストデータはそれぞれ、各skillに対応して10個の発話を生成した。
【0048】
そして、テストデータにおいて、距離が所定の閾値以下であるものを、選択するskillの候補とする。その際に、skillを使用するユーザによって、選択するskillは限定される。
【0049】
そこで、本実施例では、ユーザの属性情報として、過去のskill選択履歴と、ユーザの役職とを用いてフィルタリングを行った。具体的には、学習データから過去に選択されたskillを集計する。そして、
図5に例示するように、各ユーザが過去に選択したskillと、テストデータから選択するskillとを用いて、skill選択の正解率を求めた。その際に、
図6に例示するように、(1)フィルタリングを行わないケース(既存技術)、(2)ユーザごとに過去のskill選択でフィルタリングを行ったケース、(3)役職ごとに過去のskill選択でフィルタリングを行ったケースについて、skill選択の正解率を求めた。
【0050】
その結果、
図6に示すように、(2)ユーザごとのフィルタリング、(3)ユーザの役職ごとのフィルタリングにおいて、(1)の既存技術よりskill選択の精度が向上した。このように、ユーザの属性情報によるフィルタリングが有効であることが確認された。
【0051】
[プログラム]
上記実施形態に係る選択装置10が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。一実施形態として、選択装置10は、パッケージソフトウェアやオンラインソフトウェアとして上記の選択処理を実行する選択プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の選択プログラムを情報処理装置に実行させることにより、情報処理装置を選択装置10として機能させることができる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。また、選択装置10の機能を、クラウドサーバに実装してもよい。
【0052】
図7は、選択プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0053】
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1051およびキーボード1052が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1061が接続される。
【0054】
ここで、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各情報は、例えばハードディスクドライブ1031やメモリ1010に記憶される。
【0055】
また、選択プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1031に記憶される。具体的には、上記実施形態で説明した選択装置10が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
【0056】
また、選択プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
【0057】
なお、選択プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、選択プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0058】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【0059】
10 選択装置
11 入力部
12 出力部
13 通信制御部
14 記憶部
14a skill文
14b フィルタ
15 制御部
15a 取得部
15b 選択部
15c 算出部
15d 特定部