(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024120233
(43)【公開日】2024-09-05
(54)【発明の名称】バッチデータ生成プログラム、バッチデータ生成装置、及びバッチデータ生成方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20240829BHJP
【FI】
G06F9/50 150Z
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023026890
(22)【出願日】2023-02-24
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】岩川 明則
(57)【要約】
【課題】時系列に受け付けられる複数のデータから、情報処理の効率を向上させるバッチデータを生成する。
【解決手段】コンピュータは、時系列に受け付けられる複数のデータ各々のデータ長に基づいて、複数のデータ各々を複数のグループのうち何れかのグループに割り当てる。コンピュータは、複数のグループ各々について、割り当てられた複数のデータのデータ長を揃えることで、グループ毎に異なるデータ長を有するバッチデータを生成する。
【選択図】
図6
【特許請求の範囲】
【請求項1】
時系列に受け付けられる複数のデータ各々のデータ長に基づいて、前記複数のデータ各々を複数のグループのうち何れかのグループに割り当て、
前記複数のグループ各々について、割り当てられた複数のデータのデータ長を揃えることで、グループ毎に異なるデータ長を有するバッチデータを生成する、
処理をコンピュータに実行させるためのバッチデータ生成プログラム。
【請求項2】
前記複数のグループは、第1グループ及び第2グループを含み、
前記複数のデータ各々を複数のグループのうち何れかのグループに割り当てる処理は、
前記時系列に受け付けられる複数のデータのうち、閾値よりも短いデータ長を有するデータを前記第1グループに割り当てる処理と、
前記時系列に受け付けられる複数のデータのうち、前記閾値よりも長いデータ長を有するデータを前記第2グループに割り当てる処理と、
を含み、
前記バッチデータを生成する処理は、前記第1グループ及び前記第2グループのうち、前記割り当てられた複数のデータの個数が所定値に達したグループに属するデータに対して、パディング処理を行うことで、前記バッチデータを生成する処理を含み、
前記バッチデータ生成プログラムは、前記バッチデータに対する情報処理を前記コンピュータにさらに実行させることを特徴とする請求項1記載のバッチデータ生成プログラム。
【請求項3】
前記時系列に受け付けられる複数のデータのうち、所定期間内に受け付けられる複数のデータそれぞれのデータ長に関する統計情報に基づいて、前記閾値を決定する処理を、前記コンピュータにさらに実行させることを特徴とする請求項2記載のバッチデータ生成プログラム。
【請求項4】
前記パディング処理を行うことで前記バッチデータを生成する処理は、前記第1グループ及び前記第2グループのうち、前記割り当てられた複数のデータの個数が前記所定値に達していない一方のグループについて、前記一方のグループに割り当てられたデータが受け付けられてから経過した経過時間と、前記一方のグループに割り当てられたデータに対する許容遅延時間と、前記情報処理の推定処理時間と、の関係に基づいて、前記バッチデータを生成する処理を含むことを特徴とする請求項2記載のバッチデータ生成プログラム。
【請求項5】
前記経過時間と前記許容遅延時間と前記推定処理時間との関係に基づいて、前記バッチデータを生成する処理は、
前記経過時間が前記許容遅延時間と前記推定処理時間との差以上である場合、前記第1グループ及び前記第2グループのうち他方のグループに割り当てられたデータを、前記一方のグループに移動させることで、不足分のデータを補完する処理と、
補完された前記一方のグループに属するデータに対して、前記パディング処理を行うことで、前記バッチデータを生成する処理と、
を含むことを特徴とする請求項4記載のバッチデータ生成プログラム。
【請求項6】
前記第1グループに割り当てられた複数のデータの個数が前記所定値に達したことを契機として前記バッチデータが生成された回数と、前記第1グループに割り当てられたデータの前記経過時間が前記差以上になったことを契機として前記バッチデータが生成された回数と、前記第2グループに割り当てられた複数のデータの個数が前記所定値に達したことを契機として前記バッチデータが生成された回数と、前記第2グループに割り当てられたデータの前記経過時間が前記差以上になったことを契機として前記バッチデータが生成された回数と、に基づいて、前記閾値を決定する処理を、前記コンピュータにさらに実行させることを特徴とする請求項5記載のバッチデータ生成プログラム。
【請求項7】
前記第1グループ又は前記第2グループに割り当てられた複数のデータから前記バッチデータが生成された回数のうち、前記第1グループ又は前記第2グループに割り当てられたデータの前記経過時間が前記差以上になったことを契機として前記バッチデータが生成された回数の比率に基づいて、前記所定値を変更する処理を、前記コンピュータにさらに実行させることを特徴とする請求項5記載のバッチデータ生成プログラム。
【請求項8】
前記第1グループ又は前記第2グループについて生成された前記バッチデータにおいて、前記パディング処理により付加されたデータの比率に基づいて、前記所定値を変更する処理を、前記コンピュータにさらに実行させることを特徴とする請求項5記載のバッチデータ生成プログラム。
【請求項9】
時系列に受け付けられる複数のデータ各々のデータ長に基づいて、前記複数のデータ各々を複数のグループのうち何れかのグループに割り当てる割当部と、
前記複数のグループ各々について、割り当てられた複数のデータのデータ長を揃えることで、グループ毎に異なるデータ長を有するバッチデータを生成する生成部と、
を備えることを特徴とするバッチデータ生成装置。
【請求項10】
時系列に受け付けられる複数のデータ各々のデータ長に基づいて、前記複数のデータ各々を複数のグループのうち何れかのグループに割り当て、
前記複数のグループ各々について、割り当てられた複数のデータのデータ長を揃えることで、グループ毎に異なるデータ長を有するバッチデータを生成する、
処理をコンピュータが実行することを特徴とするバッチデータ生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バッチデータ生成技術に関する。
【背景技術】
【0002】
カスタマーサポートにおけるQ&Aシステムのように、従来ではオペレータが処理していた業務においても、自然言語処理に対する深層学習の適用によって、処理を自動化することが可能になってきている。自然言語処理では、情報処理装置(コンピュータ)を用いてテキストデータに対する情報処理が行われる。
【0003】
テキストデータに対する情報処理に関して、音声認識結果を用いながら発話単位等の長さに依らない所定の限られた遅延時間で、認識結果を修正してテキストとして逐次出力するテキスト修正装置が知られている(例えば、特許文献1を参照)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
深層学習を適用したQ&Aシステムのような自然言語処理システムでは、リアルタイムに発生する複数の問い合わせ文それぞれのテキストデータが、時系列に入力される。これらの複数のテキストデータをまとめてバッチデータを生成し、バッチデータを一括して処理する場合、パディング処理によって、システム全体としてのスループットが低下することがある。
【0006】
なお、かかる問題は、深層学習を適用した自然言語処理に限らず、時系列に受け付けられる複数のデータに対する様々な情報処理において生ずるものである。
【0007】
1つの側面において、本発明は、時系列に受け付けられる複数のデータから、情報処理の効率を向上させるバッチデータを生成することを目的とする。
【課題を解決するための手段】
【0008】
1つの案では、バッチデータ生成プログラムは、以下の処理をコンピュータに実行させる。
【0009】
コンピュータは、時系列に受け付けられる複数のデータ各々のデータ長に基づいて、複数のデータ各々を複数のグループのうち何れかのグループに割り当てる。コンピュータは、複数のグループ各々について、割り当てられた複数のデータのデータ長を揃えることで、グループ毎に異なるデータ長を有するバッチデータを生成する。
【発明の効果】
【0010】
1つの側面によれば、時系列に受け付けられる複数のデータから、情報処理の効率を向上させるバッチデータを生成することができる。
【図面の簡単な説明】
【0011】
【
図2】バッチデータに対する並列処理を示す図である。
【
図4】入力されるテキストデータに対する遅延時間を示す図である。
【
図5】実施形態のバッチデータ生成装置の機能的構成図である。
【
図6】バッチデータ生成処理のフローチャートである。
【
図9】文章の長さの分布を示すヒストグラムである。
【
図10】受け付け順に保存されたテキストデータを示す図である。
【
図11】テキストデータに対する推論期間を示す図である。
【
図12】データ長の分布を示すヒストグラムである。
【
図14】第1の閾値決定処理のフローチャートである。
【
図16】第2の閾値決定処理のフローチャートである。
【
図18】パラメータ制御処理のフローチャートである。
【
図19】バッチサイズ調整処理のフローチャートである。
【
図20】情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら、実施形態を詳細に説明する。
【0013】
図1は、カスタマーサポートにおける自然言語処理システムの例を示している。推定モデル101は、深層学習によって生成された学習済みの機械学習モデルである。推定器102は、チャット111又はメール112による顧客からの問い合わせ文に対して、推定モデル101を用いてリアルタイムで推論を行い、適切な回答113を推定する。そして、推定器102は、回答113を示すFAQ(Frequently Asked Questions)又はURL(Uniform Resource Locator)へ顧客を誘導する。
【0014】
このような自然言語処理システムでは、問い合わせを行うことに対する敷居の低さにより、今後、大量の問い合わせ文が入力されることが想定される。このため、大量の問い合わせ文のテキストデータを短時間で処理できるように、システム全体としてのスループットの向上が望まれる。
【0015】
自然言語処理システムにおけるスループットを向上させる技術としては、入力される文を1文ずつ処理する代わりに、複数の文をまとめてバッチデータを生成し、バッチデータを一括して処理する方法が一般的である。この場合、GPU(Graphics Processing Unit)等の並列演算機能に優れた演算処理装置を用いて、バッチデータが並列に処理される。
【0016】
図2は、バッチデータに対する並列処理の例を示している。
図2のバッチデータは、テキストデータ201-1~テキストデータ201-5を含む。各テキストデータ201-i(i=1~5)は、問い合わせ文に対応する。
【0017】
テキストデータ201-1は、文末の“?”を含めて7個の単語からなる。したがって、テキストデータ201-1のデータ長は7である。テキストデータ201-2のデータ長は9であり、テキストデータ201-3のデータ長は4である。テキストデータ201-4のデータ長は6であり、テキストデータ201-5のデータ長は5である。
【0018】
GPUのメモリは矩形状に確保されるため、バッチデータのデータ長は、最も長いテキストデータ201-2のデータ長である9に合わせられる。テキストデータ201-1及びテキストデータ201-3~テキストデータ201-5については、パディング処理により不足分を適当なデータ“[PAD]”で穴埋めすることで、データ長が9に揃えられる。
【0019】
テキストデータ201-1には2個の“[PAD]”が付加されており、テキストデータ201-3には5個の“[PAD]”が付加されている。テキストデータ201-4には3個の“[PAD]”が付加されており、テキストデータ201-5には4個の“[PAD]”が付加されている。
【0020】
GPU202-i(i=1~5)は、テキストデータ201-iを処理して処理結果203-iを生成する。これにより、テキストデータ201-1~テキストデータ201-5が並列に処理される。
【0021】
このような並列処理では、並列度を大きくすれば、サービス単体のスループットを向上させることができる。しかし、パディング処理は、テキストデータに適当なデータを付加することによって、GPUの演算時間と使用されるメモリ領域を含む計算資源を余分に消費するため、他のプロセスによる計算資源の利用機会を奪うことになる。このため、パディング処理は、システム全体としてのスループットを低下させる原因となる。
【0022】
パディング処理によって付加されるデータをなるべく少なくするためには、文が入力された順序でバッチデータを生成するのではなく、互いに類似するデータ長を有する複数の文を含むバッチデータを生成することが有効である。例えば、一定期間に入力される文をバッファリングし、バッファリングされた文をデータ長の順にソーティングすることで、互いに類似するデータ長を有する複数の文を含むバッチデータを生成することができる。
【0023】
図3は、このようなソーティング処理の例を示している。
図3(a)は、バッファリングされたテキストデータを示している。この例では、テキストデータ301-1から順に入力され、テキストデータ301-1~テキストデータ301-16がバッファリングされている。したがって、バッファリングされたテキストデータの個数は16個である。
【0024】
バッチデータに含まれるテキストデータの個数を表すバッチサイズは4である。したがって、バッファリングされたテキストデータの個数は、バッチサイズの4倍である。
【0025】
仮に文が入力された順序でバッチデータを生成する場合、最初に、テキストデータ301-1~テキストデータ301-4を含むバッチデータが生成される。この場合、バッチデータのデータ長は、最も長いテキストデータ301-1のデータ長である12に合わせられる。
【0026】
同様にして、テキストデータ301-5~テキストデータ301-8を含むバッチデータのデータ長は、テキストデータ301-6のデータ長である16に合わせられる。テキストデータ301-9~テキストデータ301-12を含むバッチデータのデータ長は、テキストデータ301-10のデータ長である16に合わせられる。テキストデータ301-13~テキストデータ301-16を含むバッチデータのデータ長は、テキストデータ301-16のデータ長である13に合わせられる。
【0027】
各テキストデータ301-i(i=1~16)において、斜線で示された矩形は、単語を表し、白の矩形は、パディング処理によって付加される“[PAD]”を表す。4個のバッチデータに含まれる矩形の総数は228個であり、白の矩形の総数は90個であるため、パディング率Rは、次式のように計算される。
【0028】
R=90/228=0.39 (1)
【0029】
パディング率Rは、バッチデータに含まれる全データに対する、パディング処理により付加されたデータの比率を表す。この場合、4個のテキストデータ301-iが入力されるまでバッチデータが生成されないため、バッチデータの生成に伴う遅延は、テキストデータ301-iの個数で表すと4になる。
【0030】
図3(b)は、
図3(a)のテキストデータ301-1~テキストデータ301-16を、データ長が短い順にソーティングした結果を示している。
【0031】
ソーティングされた順序でバッチデータを生成する場合、テキストデータ301-13、テキストデータ301-2、テキストデータ301-11、及びテキストデータ301-14を含むバッチデータが生成される。この場合、バッチデータのデータ長は、最も長いテキストデータ301-2、テキストデータ301-11、及びテキストデータ301-14のデータ長である5に合わせられる。
【0032】
テキストデータ301-5、テキストデータ301-12、テキストデータ301-4、及びテキストデータ301-8を含むバッチデータのデータ長は、テキストデータ301-4及びテキストデータ301-8のデータ長である7に合わせられる。テキストデータ301-3、テキストデータ301-7、テキストデータ301-15、及びテキストデータ301-9を含むバッチデータのデータ長は、テキストデータ301-9のデータ長である10に合わせられる。
【0033】
テキストデータ301-1、テキストデータ301-16、テキストデータ301-6、及びテキストデータ301-10を含むバッチデータのデータ長は、テキストデータ301-6及びテキストデータ301-10のデータ長である16に合わせられる。
【0034】
4個のバッチデータに含まれる矩形の総数は152個であり、白の矩形の総数は14個であるため、パディング率Rは、次式のように計算される。
【0035】
R=14/152=0.09 (2)
【0036】
この場合、16個のテキストデータ301-iが入力されるまでバッチデータが生成されないため、バッチデータの生成に伴う遅延は、テキストデータ301-iの個数で表すと16になる。
【0037】
したがって、
図3(b)のバッチデータ生成処理によれば、
図3(a)のバッチデータ生成処理よりも遅延が増加するが、パディング率は約1/4に減少する。これにより、計算資源の余分な消費を抑制することができるため、システム全体としてのスループットが向上する。
【0038】
しかしながら、カスタマーサポートにおけるQ&Aシステムのように、リアルタイム性の高い自然言語処理システムの場合、互いに類似するデータ長を有する複数の文がバッファリングされるまでに時間がかかる。さらに、バッファリングされる文の個数に比例して推論時間も増加するため、顧客に回答が提示されるまでの遅延時間が長くなる。
【0039】
図4は、入力されるテキストデータに対する遅延時間の例を示している。受信期間401-1~受信期間401-4各々は、バッチサイズに相当する個数のテキストデータが入力される期間を表し、受信期間401-1~受信期間401-4を併せた期間は、バッファリング期間を表す。推論期間402-1~推論期間402-4各々は、バッチサイズに相当する個数のテキストデータに対する推論が行われる期間を表す。
【0040】
この場合、受信期間401-4が終了した時点で、バッファリングされたテキストデータに対するソーティング処理が行われて4個のバッチデータが生成され、推論が開始される。したがって、受信期間401-1において入力されたテキストデータに対する推論が、推論期間402-4において行われた場合、受信期間401-1~受信期間401-4及び推論期間402-1~推論期間402-4を併せた期間が最大遅延時間になる。
【0041】
このように、バッファリングされるテキストデータの個数が増加するとともに、推論結果が得られるまでの遅延時間が長くなる。
【0042】
図5は、実施形態のバッチデータ生成装置の機能的構成例を示している。
図5のバッチデータ生成装置501は、割当部511及び生成部512を含む。
【0043】
図6は、
図5のバッチデータ生成装置501が行うバッチデータ生成処理の例を示すフローチャートである。まず、割当部511は、時系列に受け付けられる複数のデータ各々のデータ長に基づいて、複数のデータ各々を複数のグループのうち何れかのグループに割り当てる(ステップ601)。次に、生成部512は、複数のグループ各々について、割り当てられた複数のデータのデータ長を揃えることで、グループ毎に異なるデータ長を有するバッチデータを生成する(ステップ602)。
【0044】
図5のバッチデータ生成装置501によれば、時系列に受け付けられる複数のデータから、情報処理の効率を向上させるバッチデータを生成することができる。
【0045】
図7は、
図5のバッチデータ生成装置501を含む情報処理システムの構成図である。
図7の情報処理システムは、端末装置701-1~端末装置701-N(Nは2以上の整数)及び推定装置702を含む。推定装置702は、
図5のバッチデータ生成装置501に対応する。
【0046】
端末装置701-i(i=1~N)は、i番目の顧客の情報処理装置であり、通信ネットワーク703を介して、推定装置702と通信する。推定装置702は、例えば、カスタマーサポートにおけるQ&Aシステムのような自然言語処理システムである。通信ネットワーク703は、例えば、WAN(Wide Area Network)又はLAN(Local Area Network)である。
【0047】
端末装置701-iは、例えば、チャット又はメールによる問い合わせ文を推定装置702へ送信する。推定装置702は、受信した問い合わせ文に対して、深層学習を適用した自然言語処理を行うことで、適切な回答を推定し、推定された回答又はその回答が掲載されているWebサイトのURLを、端末装置701-iへ送信する。
【0048】
図8は、
図7の推定装置702の第1の機能的構成図である。
図8の推定装置702は、決定部811、割当部812、生成部813、推定部814、通信部815、及び記憶部816を含む。割当部812及び生成部813は、
図5の割当部511及び生成部512にそれぞれ対応する。
【0049】
記憶部816は、推定モデル821を記憶する。推定モデル821は、訓練データを機械学習モデルに与えて機械学習を行うことで生成された、学習済みの機械学習モデルである。推定モデル821は、例えば、ニューラルネットワーク、ロジスティック回帰モデル、サポートベクタマシン、又は決定木である。推定モデル821がニューラルネットワークである場合、機械学習は深層学習であってもよい。
【0050】
機械学習に用いられる訓練データは、複数のテキストデータと、各テキストデータに対する回答情報とを含む。回答情報は、例えば、テキストデータが示す問い合わせへの回答、又はその回答が掲載されているWebサイトのURLである。推定モデル821は、入力されたテキストデータから、そのテキストデータに対する回答情報を推定して出力する。
【0051】
記憶部816は、さらにバッファ822-1及びバッファ822-2を含む。バッファ822-1は、第1グループのテキストデータを記憶する記憶領域であり、バッファ822-2は、第2グループのテキストデータを記憶する記憶領域である。第1グループのテキストデータは、閾値Xよりも短いデータ長を有し、第2グループのテキストデータは、閾値X以上のデータ長を有する。
【0052】
通信部815は、通信ネットワーク703を介して、各端末装置701-iと通信する。割当部812は、通信部815を介して、端末装置701-1~端末装置701-Nから時系列に送信される複数の問い合わせ文それぞれのテキストデータを受信し、受信したテキストデータを受け付ける。複数の問い合わせ文それぞれのテキストデータは、時系列に受け付けられる複数のデータに対応する。
【0053】
割当部812は、所定期間内に時系列に受け付けられる各テキストデータのデータ長を、統計情報823として記憶部816に格納する。したがって、統計情報823には、所定期間内に受け付けられた複数のテキストデータそれぞれのデータ長が記録される。
【0054】
割当部812は、受け付けられた各問い合わせ文のテキストデータのデータ長を閾値Xと比較し、閾値Xよりも短いデータ長を有するテキストデータを第1グループに割り当てて、バッファ822-1に格納する。また、割当部812は、閾値X以上のデータ長を有するテキストデータを第2グループに割り当てて、バッファ822-2に格納する。
【0055】
データ長の閾値Xを用いて、受け付けられたテキストデータを第1グループ又は第2グループに割り当てることで、テキストデータをバッファ822-1又はバッファ822-2に容易に振り分けることができる。
【0056】
生成部813は、何れかのバッファ822-k(k=1,2)内のグループkに属するテキストデータの個数がバッチサイズBに達した場合、そのバッファ822-kが充足されたと判定する。この場合、生成部813は、バッファ822-k内のB個のテキストデータに対してパディング処理を行うことで、バッファ822-k内にバッチデータを生成する。バッチデータのデータ長は、B個のテキストデータのうち最も長いテキストデータのデータ長に合わせられる。
【0057】
バッチサイズBは、例えば、4以上の整数である。バッチサイズBは、32、64、128、256、512等の整数であってもよい。バッチサイズBは、所定値の一例である。
【0058】
生成部813は、パディング処理において、最も長いテキストデータのデータ長と他のテキストデータのデータ長との差分に相当する適当なデータを、他のテキストデータに付加することで、不足分を穴埋めして、B個のテキストデータのデータ長を揃える。
【0059】
グループ2には、グループ1よりも長いデータ長を有するテキストデータが割り当てられるため、バッファ822-2内のバッチデータのデータ長は、バッファ822-1内のバッチデータのデータ長よりも長くなる。したがって、グループ毎に異なるデータ長を有するバッチデータが生成される。
【0060】
推定部814は、バッチデータに含まれるB個のテキストデータに対して、並列に自然言語処理を行うことで、各テキストデータに対する回答情報824を推定し、記憶部816に格納する。推定部814は、自然言語処理において、推定モデル821を用いてテキストデータに対する推論を行うことで、回答情報824を生成する。自然言語処理は、バッチデータに対する情報処理の一例であり、推定部814は、情報処理部の一例である。
【0061】
何れかのバッファ822-kが充足された時点でパディング処理を行ってバッチデータを生成することで、推定部814は、他方のバッファ822-kが充足されるまで待つことなく、直ちに推論を開始することができる。
【0062】
推定部814は、例えば、複数のテキストデータに対する並列処理を行う複数の演算処理装置を含む。演算処理装置は、GPUであってもよく、CPU(Central Processing Unit)であってもよい。
【0063】
推定部814は、通信部815を介して、各テキストデータに対する回答情報824を、そのテキストデータを送信した端末装置701-iへ送信する。これにより、端末装置701-iは、送信したテキストデータが示す問い合わせへの回答を取得することができる。
【0064】
チャット又はメールによる問い合わせ文等の文章の長さを分析すると、比較的短い文章が多く、文章が長くなるにつれて発生頻度は低くなる、という統計的な特徴が認められる。
【0065】
図9は、英語で記述された文章の長さの分布を示すヒストグラムの例を示している。横軸は、文章に含まれる単語の個数を表し、縦軸は、文章の発生頻度を表す。この例では、単語数が20個程度の文章の発生頻度が最大となっており、単語数が20個よりも多くなるにつれて発生頻度が小さくなる傾向が認められる。単語数が20個よりも少ない文章の場合、互いに類似する長さの文章の発生頻度が高く、単語数が20個よりも多い文章の場合、互いに類似する長さの文章の発生頻度が低い。
【0066】
したがって、受け付けられた問い合わせ文のテキストデータを、受け付け順に保存してバッチデータを生成した場合、まれに発生する長いテキストデータに合わせてバッチデータのデータ長が設定されてしまう。その結果、パディング処理によって付加されるデータが増加して、計算資源が余分に消費されるため、自然言語処理の効率が低下する。
【0067】
図10は、受け付け順に保存されたテキストデータの例を示している。
図10(a)は、短いテキストデータの例を示している。各テキストデータ1001-i(i=1~4)において、斜線で示された矩形は、単語を表し、白の矩形は、パディング処理によって付加される“[PAD]”を表す。
【0068】
テキストデータ1001-1のデータ長は4であり、テキストデータ1001-2~テキストデータ1001-4のデータ長は5である。この場合、生成されるバッチデータのデータ長は5であり、付加される“[PAD]”の個数は1個である。
【0069】
図10(b)は、短いテキストデータ及び長いテキストデータの例を示している。テキストデータ1002-1のデータ長は7であり、テキストデータ1002-2のデータ長は6であり、テキストデータ1002-3のデータ長は16であり、テキストデータ1002-4のデータ長は9である。この場合、生成されるバッチデータのデータ長は16であり、付加される“[PAD]”の個数は26個である。
【0070】
したがって、
図10(b)のテキストデータ1002-1~テキストデータ1002-4を含むバッチデータを生成した場合、多くの計算資源が余分に消費されるため、自然言語処理の効率が低下する。
【0071】
これに対して、
図8の推定装置702では、受け付けられた問い合わせ文のテキストデータが、データ長に応じてバッファ822-1又はバッファ822-2に振り分けられ、バッファ822-k毎にバッチデータが生成される。これにより、各バッファ822-kには、互いに類似するデータ長を有するテキストデータが蓄積されるため、パディング処理によって付加される“[PAD]”の個数が削減され、自然言語処理の効率が向上する。
【0072】
図11は、バッファ822-1及びバッファ822-2内のテキストデータに対する推論期間の例を示している。推論期間1101-1~推論期間1101-6各々は、バッファ822-1内のB個のテキストデータに対する推論が行われる期間を表す。推論期間1102-1及び推論期間1102-2各々は、バッファ822-2内のB個のテキストデータに対する推論が行われる期間を表す。
【0073】
データ長が短く、かつ、発生頻度が高いテキストデータの方が速く蓄積されるため、バッファ822-1内のテキストデータの個数が先にバッチサイズBに達し、それらのテキストデータに対する推論が先行して行われる。一方、データ長が長く、かつ、発生頻度が低いテキストデータはゆっくり蓄積されるため、バッファ822-2内のテキストデータに対する推論は、別途まとめて行われる。
【0074】
このような自然言語処理によれば、
図4に示したバッファリング期間の経過を待つことなく、バッファ822-1内にB個のテキストデータが蓄積された時点で推論を開始することができるため、遅延時間が削減される。
【0075】
決定部811は、テキストデータのデータ長に対する閾値Xを、統計情報823に基づいて決定し、決定された閾値Xを割当部812へ出力する。決定部811は、例えば、統計情報823から、所定期間内に受け付けられた各テキストデータのデータ長のヒストグラムを生成し、ヒストグラムの特徴から閾値Xを決定する。
【0076】
図12は、所定期間内に受け付けられた各テキストデータのデータ長の分布を示すヒストグラムの例を示している。
図12のヒストグラムは、
図9のヒストグラムと同様である。横軸は、テキストデータのデータ長を表し、縦軸は、テキストデータの発生頻度を表す。この例では、テキストデータのデータ長として、テキストデータに含まれる単語の個数が用いられている。
【0077】
決定部811は、発生頻度の最大値Mと、0よりも大きく、かつ、1よりも小さい実数aとを用いて、ヒストグラムから閾値Xを決定する。決定部811は、最大値Mからデータ長の昇順に発生頻度をチェックし、最初に見つかった発生頻度aMに対応するデータ長を閾値Xに決定する。例えば、a=0.5の場合、Mに対応するデータ長よりも長いデータ長のうち、発生頻度0.5Mに対応するデータ長は、約35である。したがって、閾値Xは約35となる。
【0078】
統計情報823に基づいて閾値Xを決定することで、受け付けられたテキストデータを適切なバッファ822-kに振り分けることが可能になる。
【0079】
ところで、テキストデータが受け付けられて何れかのバッファ822-kに格納された後、バッファ822-k内のテキストデータの個数がバッチサイズBに達しない間に時間が経過して、遅延時間が増加することも想定される。
【0080】
そこで、生成部813は、バッファ822-k内のテキストデータに対する許容遅延時間Lを設定する。許容遅延時間Lは、例えば、推定装置702を運用するサービス提供者によって、ユーザビリティを考慮して決定される。許容遅延時間Lは、数分~数十分の範囲の時間であってもよい。
【0081】
バッチサイズBは、例えば、許容遅延時間L内に発生する問い合わせ文の個数に基づいて決定される。許容遅延時間L内に発生する複数の問い合わせ文それぞれのテキストデータが、バッファ822-1又はバッファ822-2に振り分けられることから、バッチサイズBは、発生する問い合わせ文の個数の数分の1程度に設定されることが好ましい。例えば、発生する問い合わせ文の個数が1200個である場合、1200の約1/5に相当する256を、バッチサイズBとして用いてもよい。
【0082】
生成部813は、テキストデータの個数がバッチサイズBに達していないバッファ822-kを処理対象として、処理対象のバッファ822-k内の各テキストデータが受け付けられてから経過した経過時間を求める。
【0083】
そして、生成部813は、テキストデータの個数がバッチサイズBに達するまで待つことなく、各テキストデータの経過時間と、許容遅延時間Lと、推定部814が行う自然言語処理の推定処理時間Tとの間の関係に基づいて、バッチデータを生成する。推定処理時間Tは、数分~数十分の範囲の時間であってもよい。ただし、許容遅延時間Lは、推定処理時間Tよりも長い時間に設定される。
【0084】
例えば、B個のダミーテキストデータに対する自然言語処理を推定部814に行わせ、回答情報824が生成されるまでにかかった時間を測定することで、推定処理時間Tを決定することができる。
【0085】
テキストデータの経過時間と許容遅延時間Lと推定処理時間Tとの間の関係に基づいてバッチデータを生成することで、受け付けられてから長時間が経過したテキストデータに対する自然言語処理を、バッファ822-kが充足される前に行うことが可能になる。
【0086】
生成部813は、例えば、テキストデータの経過時間が許容遅延時間Lと推定処理時間Tとの差であるL-T以上である場合、そのテキストデータのタイムアウトが発生したと判定する。この場合、生成部813は、他方のバッファ822-k内のテキストデータを処理対象のバッファ822-kに移動させることで、不足分のテキストデータを補完する。そして、生成部813は、補完されたバッファ822-k内のテキストデータに対してパディング処理を行うことで、バッチデータを生成する。
【0087】
これにより、受け付けられてからL-T以上の時間が経過したテキストデータに対して、直ちに自然言語処理が行われるため、回答情報824が返信されるまでの遅延時間を許容遅延時間L程度に抑えることができる。
【0088】
図13は、
図8の推定装置702が行う推定処理の例を示すフローチャートである。バッファD1及びバッファD2は、それぞれ、バッファ822-1及びバッファ822-2を表す。
【0089】
まず、割当部812は、要求元の端末装置701-iから受信した問い合わせ文のテキストデータを受け付け、そのテキストデータに、受付時刻を示すタイムスタンプを付加する(ステップ1301)。そして、割当部812は、受け付けられたテキストデータのデータ長を、統計情報823に記録する(ステップ1302)。
【0090】
次に、割当部812は、受け付けられたテキストデータのデータ長を閾値Xと比較し(ステップ1303)、データ長がXよりも短い場合(ステップ1303,YES)、そのテキストデータをバッファD1に格納する(ステップ1304)。
【0091】
次に、生成部813は、バッファD1内のテキストデータの個数をバッチサイズBと比較する(ステップ1305)。テキストデータの個数がBに達した場合(ステップ1305,YES)、生成部813は、バッファD1内のB個のテキストデータに対してパディング処理を行うことで、バッチデータを生成する(ステップ1306)。
【0092】
次に、推定部814は、バッファD1内のバッチデータに含まれるB個のテキストデータに対して、並列に自然言語処理を行うことで、各テキストデータに対する回答情報824を生成する(ステップ1307)。そして、推定部814は、通信部815を介して、各テキストデータに対する回答情報824を、そのテキストデータを送信した要求元の端末装置701-iへ送信する。
【0093】
次に、推定部814は、バッファD1をクリアすることで、バッファD1内のバッチデータを消去する(ステップ1308)。そして、推定装置702は、次のテキストデータについて、ステップ1301以降の処理を繰り返す。テキストデータの個数がB未満である場合(ステップ1305,NO)、推定装置702は、次のテキストデータについて、ステップ1301以降の処理を繰り返す。
【0094】
受け付けられたテキストデータのデータ長がX以上である場合(ステップ1303,NO)、生成部813は、そのテキストデータをバッファD2に格納する(ステップ1309)。
【0095】
次に、生成部813は、バッファD2内のテキストデータの個数をバッチサイズBと比較する(ステップ1310)。テキストデータの個数がBに達した場合(ステップ1310,YES)、生成部813は、バッファD2内のB個のテキストデータに対してパディング処理を行うことで、バッチデータを生成する(ステップ1311)。
【0096】
次に、推定部814は、バッファD2内のバッチデータに含まれるB個のテキストデータに対して、並列に自然言語処理を行うことで、各テキストデータに対する回答情報824を生成する(ステップ1312)。そして、推定部814は、通信部815を介して、各テキストデータに対する回答情報824を、そのテキストデータを送信した要求元の端末装置701-iへ送信する。
【0097】
次に、推定部814は、バッファD2をクリアすることで、バッファD2内のバッチデータを消去する(ステップ1313)。そして、推定装置702は、次のテキストデータについて、ステップ1301以降の処理を繰り返す。テキストデータの個数がB未満である場合(ステップ1310,NO)、推定装置702は、次のテキストデータについて、ステップ1301以降の処理を繰り返す。
【0098】
図14は、
図8の推定装置702が行う第1の閾値決定処理の例を示すフローチャートである。
図14の閾値決定処理は、所定期間毎に起動される。所定期間としては、例えば、許容遅延時間Lと所定の繰り返し回数Wの積であるWLが用いられる。Wは、数回から数十回の範囲の整数であってもよい。
【0099】
まず、決定部811は、統計情報823から、直前の所定期間内に受け付けられた各テキストデータのデータ長のヒストグラムを生成する(ステップ1401)。そして、決定部811は、発生頻度の最大値Mからデータ長の昇順に発生頻度をチェックし、最初に見つかった発生頻度aMに対応するデータ長を閾値Xに決定する(ステップ1402)。
【0100】
次に、決定部811は、統計情報823に記録されているデータ長の総数をWで除算することで、許容遅延時間L内に受け付けられたテキストデータの個数の平均値Yを求める(ステップ1403)。そして、決定部811は、バッチサイズB、許容遅延時間L、及び推定処理時間Tを用いて、YをLB/Tと比較する(ステップ1404)。
【0101】
B/Tは、推定部814によって単位時間当たりに処理されるテキストデータの個数を表し、LB/Tは、許容遅延時間L内に処理されるテキストデータの個数を表す。YがLB/Tよりも小さい場合(ステップ1404,YES)、決定部811は、テキストデータの処理速度がテキストデータの入力速度よりも速いと判定し、Yを最小バッチサイズB0と比較する(ステップ1405)。B0は、例えば、1以上の整数を4に乗算して得られる値であってもよい。
【0102】
YがB0よりも大きい場合(ステップ1405,YES)、決定部811は、統計情報823をクリアすることで、統計情報823に記録されたデータ長を消去する(ステップ1406)。
【0103】
YがLB/T以上である場合(ステップ1404,NO)、決定部811は、テキストデータの入力速度がテキストデータの処理速度以上であると判定し、処理能力超過を示す警告情報を、管理者に対して出力する(ステップ1408)。そして、推定装置702は、推定処理を停止して(ステップ1409)、ステップ1406の処理を行う。
【0104】
処理能力超過を示す警告情報が出力された場合、管理者は、テキストデータの処理速度を向上させるか、又はテキストデータの入力速度を低下させる対策を取る。
【0105】
例えば、推定部814がB個の演算処理装置を含んでいる場合、管理者は、各演算処理装置のハードウェアをより高速なものに交換することで、処理速度を向上させることができる。推定部814がB個未満の演算処理装置を含んでいる場合、管理者は、演算処理装置の個数を増やすことで、処理速度を向上させることができる。管理者は、推定部814の入力側にロードバランサを追加することで、入力速度を低下させることもできる。
【0106】
管理者は、バッチサイズBを増やすことで、処理速度を向上させることもできる。しかし、
図8の推定装置702では、先にB個のテキストデータが蓄積されたバッファ822-kに対する推論を先行して行うことで、遅延時間が削減される。このため、許容遅延時間L内に受け付けられるテキストデータの個数がバッチサイズBの数倍以上でなければ、遅延時間を十分に削減することは難しい。したがって、最初から大きなバッチサイズBを用いることは望ましくない。
【0107】
YがB0以下である場合(ステップ1405,NO)、決定部811は、計算資源の利用効率低下を示す警告情報を、管理者に対して出力する(ステップ1407)。そして、推定装置702は、ステップ1406の処理を行う。計算資源の利用効率低下を示す警告情報は、テキストデータの入力速度が低過ぎて、自然言語処理の効率の向上及び遅延時間の削減が見込めないことを示す。
【0108】
図14の閾値決定処理が最初に起動されるまでは、閾値Xが初期値に設定され、閾値決定処理が起動される度に、統計情報823に基づいて閾値Xが更新される。初期値は、0又は最大データ長である。
【0109】
最大データ長は、入力されるすべてのテキストデータのデータ長よりも大きな値を表す。最大データ長は、実験によって決定されてもよく、バッファ822-kの記憶容量に基づいて決定されてもよい。
【0110】
閾値Xが0に設定された場合、受け付けられたテキストデータはすべてバッファ822-2に振り分けられ、受け付け順にB個のテキストデータからバッチデータが生成される。閾値Xが最大データ長に設定された場合、受け付けられたテキストデータはすべてバッファ822-1に振り分けられ、受け付け順にB個のテキストデータからバッチデータが生成される。
【0111】
図15は、
図8の推定装置702が行う遅延監視処理の例を示すフローチャートである。
図15の遅延監視処理は、所定時間Pをカウントするタイマによって、所定時間P毎に起動される。所定時間Pは、1秒~数秒の範囲の時間であってもよい。
【0112】
まず、生成部813は、テキストデータの個数がバッチサイズBに達していないバッファ822-kを処理対象として、処理対象のバッファ822-k内の各テキストデータが受け付けられてから経過した経過時間を求める(ステップ1501)。生成部813は、テキストデータに付加されたタイムスタンプが示す時刻を、現在時刻から減算することで、経過時間を求めることができる。
【0113】
次に、生成部813は、各テキストデータの経過時間を、許容遅延時間Lと推定処理時間Tとの差であるL-Tと比較する(ステップ1502)。
【0114】
何れかのテキストデータの経過時間がL-T以上である場合(ステップ1502,YES)、生成部813は、処理対象のバッファ822-kがバッファD1であるか否かをチェックする(ステップ1503)。
【0115】
処理対象のバッファ822-kがバッファD1である場合(ステップ1503,YES)、生成部813は、バッファD1及びバッファD2内のテキストデータの総数をバッチサイズBと比較する(ステップ1504)。
【0116】
テキストデータの総数がBよりも多い場合(ステップ1504,YES)、生成部813は、バッファD2内のテキストデータのうち、経過時間がL-T未満のテキストデータを、データ長が短い順に不足分だけ選択する。不足分は、BとバッファD1内のテキストデータの個数との差を表す。そして、生成部813は、選択されたテキストデータをバッファD1に移動させる(ステップ1505)。
【0117】
次に、生成部813は、バッファD1内のテキストデータに対してパディング処理を行うことで、バッチデータを生成する(ステップ1506)。
【0118】
次に、推定部814は、バッファD1内のバッチデータに含まれるB個のテキストデータに対して、並列に自然言語処理を行うことで、各テキストデータに対する回答情報824を生成する(ステップ1507)。そして、推定部814は、通信部815を介して、各テキストデータに対する回答情報824を、そのテキストデータを送信した要求元の端末装置701-iへ送信する。
【0119】
次に、推定部814は、バッファD1をクリアすることで、バッファD1内のバッチデータを消去する(ステップ1508)。
【0120】
テキストデータの総数がB以下である場合(ステップ1504,NO)、生成部813は、バッファD2内のすべてのテキストデータをバッファD1に移動させる(ステップ1509)。そして、生成部813は、バッファD1のバッチサイズを、一時的に、Bからテキストデータの総数に変更し(ステップ1510)、推定装置702は、ステップ1506以降の処理を行う。
【0121】
処理対象のバッファ822-kがバッファD2である場合(ステップ1503,NO)、生成部813は、バッファD1及びバッファD2内のテキストデータの総数をバッチサイズBと比較する(ステップ1511)。
【0122】
テキストデータの総数がBよりも多い場合(ステップ1511,YES)、生成部813は、バッファD1内のテキストデータのうち、経過時間がL-T未満のテキストデータを、データ長が長い順に不足分だけ選択する。不足分は、BとバッファD2内のテキストデータの個数との差を表す。そして、生成部813は、選択されたテキストデータをバッファD2に移動させる(ステップ1512)。
【0123】
次に、生成部813は、バッファD2内のテキストデータに対してパディング処理を行うことで、バッチデータを生成する(ステップ1513)。
【0124】
次に、推定部814は、バッファD2内のバッチデータに含まれるB個のテキストデータに対して、並列に自然言語処理を行うことで、各テキストデータに対する回答情報824を生成する(ステップ1514)。そして、推定部814は、通信部815を介して、各テキストデータに対する回答情報824を、そのテキストデータを送信した要求元の端末装置701-iへ送信する。
【0125】
次に、推定部814は、バッファD2をクリアすることで、バッファD2内のバッチデータを消去する(ステップ1515)。
【0126】
テキストデータの総数がB以下である場合(ステップ1511,NO)、生成部813は、バッファD1内のすべてのテキストデータをバッファD2に移動させる(ステップ1516)。そして、生成部813は、バッファD2のバッチサイズを、一時的に、Bからテキストデータの総数に変更し(ステップ1517)、推定装置702は、ステップ1513以降の処理を行う。
【0127】
図16は、
図8の推定装置702が行う第2の閾値決定処理の例を示すフローチャートである。
図16の閾値決定処理は、例えば、
図14の閾値決定処理の代わりに、所定期間毎に起動される。
【0128】
まず、決定部811は、更新後の閾値を表す変数XNに現在の閾値Xを設定する(ステップ1601)。そして、決定部811は、次式により、タイムアウト率RT1及びタイムアウト率RT2を計算する(ステップ1602)。
【0129】
RT1=ET1/(ET1+EF1) (11)
RT2=ET2/(ET2+EF2) (12)
【0130】
ET1は、バッファ822-1内のテキストデータのタイムアウトが発生したことを契機として、バッファ822-1内のテキストデータからバッチデータが生成された回数を表す。EF1は、バッファ822-1が充足されたことを契機として、バッファ822-1内のテキストデータからバッチデータが生成された回数を表す。
図13の推定処理が開始されたときのET1及びEF1の初期値は、0である。
【0131】
ET2は、バッファ822-2内のテキストデータのタイムアウトが発生したことを契機として、バッファ822-2内のテキストデータからバッチデータが生成された回数を表す。EF2は、バッファ822-2が充足されたことを契機として、バッファ822-2内のテキストデータからバッチデータが生成された回数を表す。
図13の推定処理が開始されたときのET2及びEF2の初期値は、0である。
【0132】
次に、決定部811は、RT1を閾値Fと比較する(ステップ1603)。RT1がFよりも大きい場合(ステップ1603,YES)、決定部811は、RT2をFと比較する(ステップ1604)。RT2がFよりも大きい場合(ステップ1604,YES)、決定部811は、XにXNを設定する(ステップ1605)。この場合、閾値Xは、閾値決定処理の前後で変化しない。
【0133】
RT2がF以下である場合(ステップ1604,NO)、決定部811は、Xと変更量ΔXの和であるX+ΔXを、上限値Xmaxと比較する(ステップ1606)。X+ΔXがXmax以下である場合(ステップ1606,YES)、決定部811は、XNをX+ΔXに変更して(ステップ1607)、ステップ1605の処理を行う。
【0134】
この場合、閾値XがX+ΔXに変更されるため、バッファ822-1に振り分けられるテキストデータが増加し、バッファ822-1におけるタイムアウトの発生を抑えることができる。
【0135】
X+ΔXがXmaxよりも大きい場合(ステップ1606,NO)、決定部811は、ステップ1605の処理を行う。この場合、閾値Xは、閾値決定処理の前後で変化しない。
【0136】
RT1がF以下である場合(ステップ1603,NO)、決定部811は、RT2をFと比較する(ステップ1608)。RT2がFよりも大きい場合(ステップ1608,YES)、決定部811は、Xと変更量ΔXの差であるX-ΔXを、下限値Xminと比較する(ステップ1609)。X-ΔXがXmin以上である場合(ステップ1609,YES)、決定部811は、XNをX-ΔXに変更して(ステップ1610)、ステップ1605の処理を行う。
【0137】
この場合、閾値XがX-ΔXに変更されるため、バッファ822-2に振り分けられるテキストデータが増加し、バッファ822-2におけるタイムアウトの発生を抑えることができる。
【0138】
RT2がF以下である場合(ステップ1608,NO)、又はX-ΔXがXminよりも小さい場合(ステップ1609,NO)、決定部811は、ステップ1605の処理を行う。この場合、閾値Xは、閾値決定処理の前後で変化しない。
【0139】
図17は、
図7の推定装置702の第2の機能的構成図である。
図17の推定装置702は、
図8の推定装置702に調整部1711を追加した構成を有する。決定部811、割当部812、生成部813、及び推定部814は、
図8の推定装置702と同様の処理を行う。
【0140】
バッチサイズBは、必ずしも固定されている必要はなく、推定処理が行われている間に動的に変更することも可能である。調整部1711は、バッチサイズ調整処理を行うことで、バッチサイズBを動的に変更する。
【0141】
端末装置701-1~端末装置701-Nから受信する問い合わせ文の受信間隔、又は受信した問い合わせ文のデータ長に偏りがある場合、バッファ822-k内のテキストデータのタイムアウトが発生しやすくなる。タイムアウトが発生した場合、
図15の遅延監視処理によって、他方のバッファ822-kから移動させたテキストデータを含めてバッチデータが生成されるため、パディング処理により付加されるデータの個数が多くなる。
【0142】
そこで、調整部1711は、タイムアウト率RT又はパディング率RPのうち、少なくとも一方に基づいて、バッチサイズBを調整する。
【0143】
タイムアウト率RTは、バッファ822-1又はバッファ822-2内のテキストデータからバッチデータが生成された回数のうち、テキストデータのタイムアウトが発生したことを契機としてバッチデータが生成された回数の比率を表す。パディング率RPは、バッファ822-1又はバッファ822-2内のテキストデータから生成されたすべてのバッチデータにおいて、パディング処理により付加されたデータの比率を表す。
【0144】
調整部1711は、例えば、タイムアウト率RT又はパディング率RPのうち、少なくとも一方が閾値よりも大きくなった場合、バッチサイズBを小さくする。バッチサイズBを小さくすることで、タイムアウトが発生する確率が低くなり、パディング率RPが減少するため、自然言語処理の効率が向上する。
【0145】
図18は、
図17の推定装置702が行うパラメータ制御処理の例を示すフローチャートである。
図18のパラメータ制御処理は、
図13のステップ1307及びステップ1312と、
図15のステップ1507及びステップ1514とにおいて行われる。
【0146】
Eは、バッファ822-1又はバッファ822-2内のテキストデータからバッチデータが生成された回数を表す。ETは、バッファ822-1又はバッファ822-2内のテキストデータのタイムアウトが発生した回数を表す。
図13の推定処理が開始されたときのE及びETの初期値は、0である。
【0147】
NDは、自然言語処理が行われたバッチデータに含まれる単語及び“[PAD]”の総数を表す。“[PAD]”は、パディング処理によってテキストデータに付加されたデータである。NPは、自然言語処理が行われたバッチデータに含まれる“[PAD]”の総数を表す。
図13の推定処理が開始されたときのND及びNPの初期値は、0である。
【0148】
まず、生成部813は、Eを1だけインクリメントし(ステップ1801)、直前の処理においてバッチデータが生成された契機が、テキストデータのタイムアウトの発生であるか否かをチェックする(ステップ1802)。直前の処理は、ステップ1306、ステップ1311、ステップ1506、又はステップ1513の処理を指す。
【0149】
バッチデータが生成された契機がタイムアウトの発生である場合(ステップ1802,YES)、生成部813は、ETを1だけインクリメントする(ステップ1803)。そして、生成部813は、生成されたバッチデータに含まれる単語及び“[PAD]”の個数をNDに加算し(ステップ1804)、生成されたバッチデータに含まれる“[PAD]”の個数をNPに加算する(ステップ1805)。
【0150】
次に、推定部814は、生成されたバッチデータに含まれるB個のテキストデータに対して、並列に自然言語処理を行うことで、各テキストデータに対する回答情報824を生成する(ステップ1806)。そして、推定部814は、通信部815を介して、各テキストデータに対する回答情報824を、そのテキストデータを送信した要求元の端末装置701-iへ送信する。
【0151】
バッチデータが生成された契機がバッファ822-1又はバッファ822-2の充足である場合(ステップ1802,NO)、推定装置702は、ステップ1804以降の処理を行う。
【0152】
図19は、
図17の推定装置702が行うバッチサイズ調整処理の例を示すフローチャートである。
図19のバッチサイズ調整処理は、
図14の閾値決定処理と同様に、所定期間毎に起動される。
【0153】
まず、調整部1711は、次式により、タイムアウト率RTを計算する(ステップ1901)。
【0154】
RT=ET/E (21)
【0155】
次に、調整部1711は、RTを閾値RT0と比較する(ステップ1902)。RTがRT0よりも大きい場合(ステップ1902,YES)、調整部1711は、次式により、パディング率RPを計算する(ステップ1903)。
【0156】
RP=NP/ND (22)
【0157】
次に、調整部1711は、RPを閾値RP0と比較する(ステップ1904)。RPがRP0よりも大きい場合(ステップ1904,YES)、調整部1711は、バッチサイズBと変更量ΔBの差であるB-ΔBを、B0と比較する(ステップ1905)。B-ΔBがB0以上である場合(ステップ1905,YES)、調整部1711は、BをB-ΔBに変更する(ステップ1906)。
【0158】
RTがRT0以下である場合(ステップ1902,NO)、RPがRP0以下である場合(ステップ1904,NO)、又はB-ΔBがB0よりも小さい場合(ステップ1905,NO)、調整部1711は、処理を終了する。
【0159】
図7の情報処理システムは、カスタマーサポートにおけるQ&Aシステム以外の情報処理に適用することも可能である。この場合、推定装置702は、特定の情報処理を行う情報処理装置に置き換えられる。情報処理装置は、推定部814の代わりに、バッチデータに含まれるB個のテキストデータに対して、並列に特定の情報処理を行う情報処理部を含む。特定の情報処理は、例えば、端末装置701-1~端末装置701-Nから受信するクエリを用いてデータベース検索又はウェブ検索を行う検索処理であってもよい。
【0160】
図5のバッチデータ生成装置501の構成は一例に過ぎず、バッチデータ生成装置501の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0161】
図7の情報処理システムの構成は一例に過ぎず、情報処理システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
図8及び
図17の推定装置702の構成は一例に過ぎず、情報処理システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、閾値Xを変更する必要がない場合は、
図8及び
図17の決定部811を省略することができる。推定装置702は、入力されるテキストデータを3個以上のバッファ822-kに振り分けてもよい。
【0162】
図6、
図13~
図16、
図18、及び
図19のフローチャートは一例に過ぎず、バッチデータ生成装置501又は情報処理システムの構成又は条件に応じて、一部の処理を省略又は変更してもよい。例えば、
図8及び
図17の推定装置702において、閾値Xを変更する必要がない場合は、
図14及び
図16の閾値決定処理を省略することができる。
【0163】
図19のバッチサイズ調整処理において、パディング率RPを用いない場合は、ステップ1903及びステップ1904の処理を省略することができる。タイムアウト率RTを用いない場合は、ステップ1901及びステップ1902の処理を省略することができる。
【0164】
図1に示した自然言語処理システムは一例に過ぎず、実施形態の情報処理システムは、他の自然言語処理に対しても適用可能である。
図2、
図3、及び
図10に示したテキストデータは一例に過ぎず、入力されるテキストデータは、情報処理システムの用途又は条件に応じて変化する。
図4に示した受信期間及び推論期間は一例に過ぎず、受信期間及び推論期間は、入力されるテキストデータに応じて変化する。
【0165】
図9及び
図12に示したヒストグラムは一例に過ぎず、文章の長さ又はデータ長の分布は、入力されるテキストデータに応じて変化する。
図11に示した推論期間は一例に過ぎず、推論期間は、入力されるテキストデータに応じて変化する。
【0166】
式(1)~式(22)は一例に過ぎず、推定装置702は、別の計算式に基づいて閾値決定処理又はバッチサイズ調整処理を行ってもよい。
【0167】
図20は、
図5のバッチデータ生成装置501、
図8の推定装置702、及び
図17の推定装置702として用いられる情報処理装置のハードウェア構成例を示している。
図20の情報処理装置は、CPU2001、メモリ2002、入力装置2003、出力装置2004、補助記憶装置2005、媒体駆動装置2006、ネットワーク接続装置2007、及び並列処理装置2008を含む。これらの構成要素はハードウェアであり、バス2009により互いに接続されている。
【0168】
メモリ2002は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)等の半導体メモリであり、処理に用いられるプログラム及びデータを記憶する。メモリ2002は、
図3の記憶部816として動作してもよい。
【0169】
CPU2001(プロセッサ)は、例えば、メモリ2002を利用してプログラムを実行することにより、
図5の割当部511及び生成部512として動作する。CPU2001は、メモリ2002を利用してプログラムを実行することにより、
図8及び
図17の決定部811、割当部812、及び生成部813としても動作する。CPU2001は、メモリ2002を利用してプログラムを実行することにより、
図17の調整部1711としても動作する。
【0170】
入力装置2003は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示又は情報の入力に用いられる。出力装置2004は、例えば、表示装置、プリンタ等であり、ユーザ又はオペレータへの問い合わせ又は指示、及び処理結果の出力に用いられる。処理結果は、回答情報824であってもよい。
【0171】
補助記憶装置2005は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置2005は、ハードディスクドライブ又はSSD(Solid State Drive)であってもよい。情報処理装置は、補助記憶装置2005にプログラム及びデータを格納しておき、それらをメモリ2002にロードして使用することができる。補助記憶装置2005は、
図8及び
図17の記憶部816として動作してもよい。
【0172】
媒体駆動装置2006は、可搬型記録媒体2010を駆動し、その記録内容にアクセスする。可搬型記録媒体2010は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体2010は、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等であってもよい。ユーザ又はオペレータは、可搬型記録媒体2010にプログラム及びデータを格納しておき、それらをメモリ2002にロードして使用することができる。
【0173】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ2002、補助記憶装置2005、又は可搬型記録媒体2010のような、物理的な(非一時的な)記録媒体である。
【0174】
ネットワーク接続装置2007は、通信ネットワーク703に接続され、通信に伴うデータ変換を行う通信インタフェース回路である。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置2007を介して受信し、それらをメモリ2002にロードして使用することができる。ネットワーク接続装置2007は、
図8及び
図17の通信部815として動作してもよい。
【0175】
並列処理装置2008は、例えば、複数の演算処理装置を含み、複数のテキストデータに対する並列処理を行う。並列処理装置2008は、
図8及び
図17の推定部814として動作してもよい。
【0176】
なお、情報処理装置が
図20のすべての構成要素を含む必要はなく、情報処理装置の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、ユーザ又はオペレータとのインタフェースが不要な場合は、入力装置2003及び出力装置2004を省略することができる。可搬型記録媒体2010を使用しない場合は、媒体駆動装置2006を省略することができる。情報処理装置がバッチデータ生成装置501である場合は、並列処理装置2008を省略することができる。
【0177】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0178】
図1乃至
図20を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
時系列に受け付けられる複数のデータ各々のデータ長に基づいて、前記複数のデータ各々を複数のグループのうち何れかのグループに割り当て、
前記複数のグループ各々について、割り当てられた複数のデータのデータ長を揃えることで、グループ毎に異なるデータ長を有するバッチデータを生成する、
処理をコンピュータに実行させるためのバッチデータ生成プログラム。
(付記2)
前記複数のグループは、第1グループ及び第2グループを含み、
前記複数のデータ各々を複数のグループのうち何れかのグループに割り当てる処理は、
前記時系列に受け付けられる複数のデータのうち、閾値よりも短いデータ長を有するデータを前記第1グループに割り当てる処理と、
前記時系列に受け付けられる複数のデータのうち、前記閾値よりも長いデータ長を有するデータを前記第2グループに割り当てる処理と、
を含み、
前記バッチデータを生成する処理は、前記第1グループ及び前記第2グループのうち、前記割り当てられた複数のデータの個数が所定値に達したグループに属するデータに対して、パディング処理を行うことで、前記バッチデータを生成する処理を含み、
前記バッチデータ生成プログラムは、前記バッチデータに対する情報処理を前記コンピュータにさらに実行させることを特徴とする付記1記載のバッチデータ生成プログラム。
(付記3)
前記時系列に受け付けられる複数のデータのうち、所定期間内に受け付けられる複数のデータそれぞれのデータ長に関する統計情報に基づいて、前記閾値を決定する処理を、前記コンピュータにさらに実行させることを特徴とする付記2記載のバッチデータ生成プログラム。
(付記4)
前記パディング処理を行うことで前記バッチデータを生成する処理は、前記第1グループ及び前記第2グループのうち、前記割り当てられた複数のデータの個数が前記所定値に達していない一方のグループについて、前記一方のグループに割り当てられたデータが受け付けられてから経過した経過時間と、前記一方のグループに割り当てられたデータに対する許容遅延時間と、前記情報処理の推定処理時間と、の関係に基づいて、前記バッチデータを生成する処理を含むことを特徴とする付記2記載のバッチデータ生成プログラム。
(付記5)
前記経過時間と前記許容遅延時間と前記推定処理時間との関係に基づいて、前記バッチデータを生成する処理は、
前記経過時間が前記許容遅延時間と前記推定処理時間との差以上である場合、前記第1グループ及び前記第2グループのうち他方のグループに割り当てられたデータを、前記一方のグループに移動させることで、不足分のデータを補完する処理と、
補完された前記一方のグループに属するデータに対して、前記パディング処理を行うことで、前記バッチデータを生成する処理と、
を含むことを特徴とする付記4記載のバッチデータ生成プログラム。
(付記6)
前記第1グループに割り当てられた複数のデータの個数が前記所定値に達したことを契機として前記バッチデータが生成された回数と、前記第1グループに割り当てられたデータの前記経過時間が前記差以上になったことを契機として前記バッチデータが生成された回数と、前記第2グループに割り当てられた複数のデータの個数が前記所定値に達したことを契機として前記バッチデータが生成された回数と、前記第2グループに割り当てられたデータの前記経過時間が前記差以上になったことを契機として前記バッチデータが生成された回数と、に基づいて、前記閾値を決定する処理を、前記コンピュータにさらに実行させることを特徴とする付記5記載のバッチデータ生成プログラム。
(付記7)
前記第1グループ又は前記第2グループに割り当てられた複数のデータから前記バッチデータが生成された回数のうち、前記第1グループ又は前記第2グループに割り当てられたデータの前記経過時間が前記差以上になったことを契機として前記バッチデータが生成された回数の比率に基づいて、前記所定値を変更する処理を、前記コンピュータにさらに実行させることを特徴とする付記5記載のバッチデータ生成プログラム。
(付記8)
前記第1グループ又は前記第2グループについて生成された前記バッチデータにおいて、前記パディング処理により付加されたデータの比率に基づいて、前記所定値を変更する処理を、前記コンピュータにさらに実行させることを特徴とする付記5記載のバッチデータ生成プログラム。
(付記9)
前記情報処理は、機械学習によって生成された学習済みの機械学習モデルを用いて、前記バッチデータに含まれるデータに対する推論を行う処理であることを特徴とする付記2乃至8の何れか1項に記載のバッチデータ生成プログラム。
(付記10)
時系列に受け付けられる複数のデータ各々のデータ長に基づいて、前記複数のデータ各々を複数のグループのうち何れかのグループに割り当てる割当部と、
前記複数のグループ各々について、割り当てられた複数のデータのデータ長を揃えることで、グループ毎に異なるデータ長を有するバッチデータを生成する生成部と、
を備えることを特徴とするバッチデータ生成装置。
(付記11)
前記複数のグループは、第1グループ及び第2グループを含み、
前記割当部は、前記時系列に受け付けられる複数のデータのうち、閾値よりも短いデータ長を有するデータを前記第1グループに割り当て、前記時系列に受け付けられる複数のデータのうち、前記閾値よりも長いデータ長を有するデータを前記第2グループに割り当て、
前記生成部は、前記第1グループ及び前記第2グループのうち、前記割り当てられた複数のデータの個数が所定値に達したグループに属するデータに対して、パディング処理を行うことで、前記バッチデータを生成する、
前記バッチデータ生成装置は、前記バッチデータに対する情報処理を行う情報処理部をさらに備えることを特徴とする付記10記載のバッチデータ生成装置。
(付記12)
前記時系列に受け付けられる複数のデータのうち、所定期間内に受け付けられる複数のデータそれぞれのデータ長に関する統計情報に基づいて、前記閾値を決定する決定部をさらに備えることを特徴とする付記11記載のバッチデータ生成装置。
(付記13)
前記生成部は、前記第1グループ及び前記第2グループのうち、前記割り当てられた複数のデータの個数が前記所定値に達していない一方のグループについて、前記一方のグループに割り当てられたデータが受け付けられてから経過した経過時間と、前記一方のグループに割り当てられたデータに対する許容遅延時間と、前記情報処理の推定処理時間と、の関係に基づいて、前記バッチデータを生成することを特徴とする付記11記載のバッチデータ生成装置。
(付記14)
前記生成部は、前記経過時間が前記許容遅延時間と前記推定処理時間との差以上である場合、前記第1グループ及び前記第2グループのうち他方のグループに割り当てられたデータを、前記一方のグループに移動させることで、不足分のデータを補完し、補完された前記一方のグループに属するデータに対して、前記パディング処理を行うことで、前記バッチデータを生成することを特徴とする付記13記載のバッチデータ生成装置。
(付記15)
時系列に受け付けられる複数のデータ各々のデータ長に基づいて、前記複数のデータ各々を複数のグループのうち何れかのグループに割り当て、
前記複数のグループ各々について、割り当てられた複数のデータのデータ長を揃えることで、グループ毎に異なるデータ長を有するバッチデータを生成する、
処理をコンピュータが実行することを特徴とするバッチデータ生成方法。
(付記16)
前記複数のグループは、第1グループ及び第2グループを含み、
前記複数のデータ各々を複数のグループのうち何れかのグループに割り当てる処理は、
前記時系列に受け付けられる複数のデータのうち、閾値よりも短いデータ長を有するデータを前記第1グループに割り当てる処理と、
前記時系列に受け付けられる複数のデータのうち、前記閾値よりも長いデータ長を有するデータを前記第2グループに割り当てる処理と、
を含み、
前記バッチデータを生成する処理は、前記第1グループ及び前記第2グループのうち、前記割り当てられた複数のデータの個数が所定値に達したグループに属するデータに対して、パディング処理を行うことで、前記バッチデータを生成する処理を含み、
前記バッチデータに対する情報処理を、前記コンピュータがさらに実行することを特徴とする付記15記載のバッチデータ生成方法。
(付記17)
前記時系列に受け付けられる複数のデータのうち、所定期間内に受け付けられる複数のデータそれぞれのデータ長に関する統計情報に基づいて、前記閾値を決定する処理を、前記コンピュータがさらに実行することを特徴とする付記16記載のバッチデータ生成方法。
(付記18)
前記パディング処理を行うことで前記バッチデータを生成する処理は、前記第1グループ及び前記第2グループのうち、前記割り当てられた複数のデータの個数が前記所定値に達していない一方のグループについて、前記一方のグループに割り当てられたデータが受け付けられてから経過した経過時間と、前記一方のグループに割り当てられたデータに対する許容遅延時間と、前記情報処理の推定処理時間と、の関係に基づいて、前記バッチデータを生成する処理を含むことを特徴とする付記16記載のバッチデータ生成方法。
(付記19)
前記経過時間と前記許容遅延時間と前記推定処理時間との関係に基づいて、前記バッチデータを生成する処理は、
前記経過時間が前記許容遅延時間と前記推定処理時間との差以上である場合、前記第1グループ及び前記第2グループのうち他方のグループに割り当てられたデータを、前記一方のグループに移動させることで、不足分のデータを補完する処理と、
補完された前記一方のグループに属するデータに対して、前記パディング処理を行うことで、前記バッチデータを生成する処理と、
を含むことを特徴とする付記18記載のバッチデータ生成方法。
【符号の説明】
【0179】
101、821 推定モデル
102 推定器
111 チャット
112 メール
113 回答
201-1~201-5、301-1~301-16、1001-1~1001-4、1002-1~1002-4 テキストデータ
202-1~202-5 GPU
203-1~203-5 処理結果
401-1~401-4 受信期間
402-1~402-4、1101-1~1101-6、1102-1、1102-2 推論期間
501 バッチデータ生成装置
511、812 割当部
512、813 生成部
701-1~701-N 端末装置
702 推定装置
703 通信ネットワーク
811 決定部
814 推定部
815 通信部
816 記憶部
822-1~822-2 バッファ
823 統計情報
824 回答情報
1711 調整部
2001 CPU
2002 メモリ
2003 入力装置
2004 出力装置
2005 補助記憶装置
2006 媒体駆動装置
2007 ネットワーク接続装置
2008 並列処理装置
2009 バス
2010 可搬型記録媒体