(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-27
(45)【発行日】2024-10-07
(54)【発明の名称】言語モデル処理システムおよび言語モデル処理方法
(51)【国際特許分類】
G06F 40/216 20200101AFI20240930BHJP
G06F 40/30 20200101ALI20240930BHJP
【FI】
G06F40/216
G06F40/30
(21)【出願番号】P 2020209886
(22)【出願日】2020-12-18
【審査請求日】2023-05-12
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】森尾 学
(72)【発明者】
【氏名】尾崎 太亮
(72)【発明者】
【氏名】森下 皓文
(72)【発明者】
【氏名】是枝 祐太
【審査官】長 由紀子
(56)【参考文献】
【文献】米国特許出願公開第2020/0050667(US,A1)
【文献】特開2019-144844(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 40/00-58
(57)【特許請求の範囲】
【請求項1】
部分語を入力として受け付けることを想定して開発された言語モデルに対応し
た一つまたは複数の
部分語トークンで構成された
部分語トークン列をテキストから取得する
部分語トークン化部と、
一つまたは複数の
文字トークンで構成された
文字トークン列を前記テキストから取得する
文字トークン化部と、
前記
部分語トークン列における一つまたは複数の
部分語トークンそれぞれ
を前記言語モデルの入力とすることで、前
記言語モデルの出力として、前記一つまたは複数の
部分語トークンにそれぞれ対応した一つまたは複数の
部分語文脈ベクトルで構成された
部分語文脈ベクトル列を取得し、且つ、前記
文字トークン列における一つまたは複数の
文字トークンそれぞれ
を前記言語モデ
ルの入力とすることで、前
記言語モデ
ルの出力として、前記一つまたは複数の
文字トークンにそれぞれ対応した一つまたは複数の
文字文脈ベクトルで構成された
文字文脈ベクトル列を取得する言語モデル部と、
前記
部分語文脈ベクトル列における全部または一部の
部分語文脈ベクトルと前記
文字文脈ベクトル列における全部または一部の
文字文脈ベクトルとを合成する合成部と、
前記全部または一部の
部分語文脈ベクトルと前記全部または一部の
文字文脈ベクトルとが合成された一つ以上の文脈ベクトルに基づく合成文脈ベクトル列を出力する出力部と
を備え
、
前記全部または一部の文字文脈ベクトル列は、対象スパン(0<i<j<N+1かつNは文字トークン列のトークン数、を満たす、i文字目からj文字目の範囲)に属する二つ以上の文字トークンにそれぞれ対応した一部の二つ以上の文字文脈ベクトルであり、
前記全部または一部の部分語文脈ベクトル列は、前記二つ以上の文字トークンの少なくとも一つが属する部分語トークンを含む一つ以上の部分語トークンにそれぞれ対応した一部の一つ以上の部分語文脈ベクトルであり、
前記合成部が、前記二つ以上の文字文脈ベクトルに前記一つ以上の部分語文脈ベクトルを合成し、当該一つ以上の部分語文脈ベクトルが合成された当該二つ以上の文字文脈ベクトルを集約した一つ以上の文脈ベクトルである対象スパン文脈ベクトル列を取得し、
前記対象スパン文脈ベクトル列が、前記合成文脈ベクトル列である、
言語モデル処理装置。
【請求項2】
前記合成部は、前記二つ以上の
文字文脈ベクトルの各々についての重みと、前記一つ以上の
部分語文脈ベクトルの各々についての重みとを基に、前記二つ以上の
文字文脈ベクトルに対して、前記一つ以上の
部分語文脈ベクトルを合成する、
請求項
1に記載の言語モデル処理装置。
【請求項3】
前記合成部は、前記二つ以上の
文字文脈ベクトルの各々についての重みを基に、前記二つ以上の
文字文脈ベクトルを集約することで、前記対象スパン文脈ベクトル列を取得する、
請求項
1に記載の言語モデル処理装置。
【請求項4】
コンピュータが、
部分語を入力として受け付けることを想定して開発された言語モデルに対応し
た一つまたは複数の
部分語トークンで構成された
部分語トークン列をテキストから取得し、
コンピュータが
、一つまたは複数の
文字トークンで構成された
文字トークン列を前記テキストから取得し、
コンピュータが、前記
部分語トークン列における一つまたは複数の
部分語トークンそれぞれ
を前記言語モデルの入力とすることで、前
記言語モデルの出力として、前記一つまたは複数の
部分語トークンにそれぞれ対応した一つまたは複数の
部分語文脈ベクトルで構成された
部分語文脈ベクトル列を取得し、
コンピュータが、前記
文字トークン列における一つまたは複数の
文字トークンそれぞれ
を前記言語モデ
ルの入力とすることで、前
記言語モデ
ルの出力として、前記一つまたは複数の
文字トークンにそれぞれ対応した一つまたは複数の
文字文脈ベクトルで構成された
文字文脈ベクトル列を取得し、
コンピュータが、前記
部分語文脈ベクトル列における全部または一部の
部分語文脈ベクトル列と前記
文字文脈ベクトル列における全部または一部の
文字文脈ベクトルとを合成し、
コンピュータが、前記全部または一部の
部分語文脈ベクトルと前記全部または一部の
文字文脈ベクトルとが合成された一つ以上の文脈ベクトルに基づく合成文脈ベクトル列を出力
し、
前記全部または一部の文字文脈ベクトル列は、対象スパン(0<i<j<N+1かつNは文字トークン列のトークン数、を満たす、i文字目からj文字目の範囲)に属する二つ以上の文字トークンにそれぞれ対応した一部の二つ以上の文字文脈ベクトルであり、
前記全部または一部の部分語文脈ベクトル列は、前記二つ以上の文字トークンの少なくとも一つが属する部分語トークンを含む一つ以上の部分語トークンにそれぞれ対応した一部の一つ以上の部分語文脈ベクトルであり、
コンピュータが、部分語文脈ベクトルと文字文脈ベクトルとの合成において、前記二つ以上の文字文脈ベクトルに前記一つ以上の部分語文脈ベクトルを合成し、当該一つ以上の部分語文脈ベクトルが合成された当該二つ以上の文字文脈ベクトルを集約した一つ以上の文脈ベクトルである対象スパン文脈ベクトル列を取得し、
前記対象スパン文脈ベクトル列が、前記合成文脈ベクトル列である、
を有する言語モデル処理方法。
【請求項5】
部分語を入力として受け付けることを想定して開発された言語モデルに対応し
た一つまたは複数の
部分語トークンで構成された
部分語トークン列をテキストから取得し、
一つまたは複数の
文字トークンで構成された
文字トークン列を前記テキストから取得し、
前記
部分語トークン列における一つまたは複数の
部分語トークンそれぞれ
を前記言語モデルの入力とすることで、前
記言語モデルの出力として、前記一つまたは複数の
部分語トークンにそれぞれ対応した一つまたは複数の
部分語文脈ベクトルで構成された
部分語文脈ベクトル列を取得し、
前記
文字トークン列における一つまたは複数の
文字トークンそれぞれ
を前記言語モデ
ルの入力とすることで、前
記言語モデ
ルの出力として、前記一つまたは複数の
文字トークンにそれぞれ対応した一つまたは複数の
文字文脈ベクトルで構成された
文字文脈ベクトル列を取得し、
前記
部分語文脈ベクトル列における全部または一部の
部分語文脈ベクトル列と前記
文字文脈ベクトル列における全部または一部の
文字文脈ベクトルとを合成し、
コンピュータが、前記全部または一部の
部分語文脈ベクトルと前記全部または一部の
文字文脈ベクトルとが合成された一つ以上の文脈ベクトルに基づく合成文脈ベクトル列を出力する、
ことをコンピュータに実行させ
、
前記全部または一部の文字文脈ベクトル列は、対象スパン(0<i<j<N+1かつNは文字トークン列のトークン数、を満たす、i文字目からj文字目の範囲)に属する二つ以上の文字トークンにそれぞれ対応した一部の二つ以上の文字文脈ベクトルであり、
前記全部または一部の部分語文脈ベクトル列は、前記二つ以上の文字トークンの少なくとも一つが属する部分語トークンを含む一つ以上の部分語トークンにそれぞれ対応した一部の一つ以上の部分語文脈ベクトルであり、
コンピュータが、部分語文脈ベクトルと文字文脈ベクトルとの合成において、前記二つ以上の文字文脈ベクトルに前記一つ以上の部分語文脈ベクトルを合成し、当該一つ以上の部分語文脈ベクトルが合成された当該二つ以上の文字文脈ベクトルを集約した一つ以上の文脈ベクトルである対象スパン文脈ベクトル列を取得し、
前記対象スパン文脈ベクトル列が、前記合成文脈ベクトル列である、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、言語処理技術に関する。
【背景技術】
【0002】
入力されたテキストを適切な文脈ベクトル列(一つ以上の文脈ベクトル)に変換し当該文脈ベクトル列を用いたテキスト解析を行うことにより、テキスト解析の性能を向上させることができる。文脈ベクトル付与は、入力されたテキストを分割(トークン化)して得られるトークンの並び(トークン列)における各トークンに対し、文脈ベクトル(文脈に応じた意味を反映したベクトル)を付与することである。トークン列に対し、付与された文脈ベクトルの列を「文脈ベクトル列」と呼ぶ。トークン列におけるトークンと文脈ベクトル列における文脈ベクトルが1:1で対応する。例えば、テキスト「My dog likes hot dog」をトークン化して得られるトークン列『「My」「dog」「likes」「hot」「dog」』に対して、ベクトル列『「v_my」「v_dog1」「v_likes」「v_hot」「v_dog2」』が付与される。この時、トークン「dog」について、1番目の「dog」に対応する文脈ベクトル「v_dog1」と、2番目の「dog」に対応する文脈ベクトル「v_dog2」とは、文脈に応じた異なるベクトルが付与され得る。すなわち、文脈ベクトル列は、テキストの1番目の「dog」に対応した「v_dog1」と、2番目の「dog」に対応した「v_dog2」のように、同綴異義語であるトークンに対しても、文脈ごとに異なる情報を保持する。また、文脈ベクトル列は、同綴異義語以外のトークンに対しても、文脈ごとに適切な情報を保持する。さらに、文脈ベクトル列は、テキスト解析に有用な統語情報や意味的情報を含むことができ、テキスト解析の性能を向上させることができる。
【0003】
精度の良いテキスト解析を達成するための文脈ベクトル列は、言語を定量的に扱う言語モデルの枠組みの中で得ることができる。一般的な言語モデルは、ニューラルネットワークなどの確率モデルである。以下の説明では、ニューラルネットワークが言語モデルとして採用されているが、言語モデルがニューラルネットワーク以外のモデルでもよい。言語モデルを用いて文脈ベクトル列を獲得することは、入力となるトークン列を数値化することと、トークン列の数値を言語モデルの入力とすることで言語モデルの出力として文脈ベクトル列を得ることとを含む。言語モデルの入力に対する出力は、一般的に、言語モデル(ニューラルネットワーク)のパラメータ群(一つ以上のパラメータ)に依存し、パラメータ群は、多量のデータを用いた言語モデル学習(事前学習)を行うことによって獲得される。
【0004】
言語モデルの事前学習は、例えば次の通りである。あらかじめ、言語モデルの開発者が決定した粒度(トークンの単位(細かさ))に基づいたトークン化を行うトークン化機能が用意されている。トークン化機能が、テキストをトークン化して得られたトークン列の一部を特殊トークンに置き換える(マスク処理)。マスク処理されたトークン列が、言語モデルへと入力される。そして、当該言語モデルの出力部分において、マスク処理でマスクされた特殊トークンの、置き換える前のトークンを推定する。その推定結果と真の結果から損失が計算され、その損失に基づいて当該言語モデルが訓練され、結果として、当該言語モデルのパラメータが更新されていく。
【0005】
例えば、言語モデルの一つである非特許文献1のEmbeddings from Language Models(ELMo)は、ニューラルネットワークにLong Short-Term Memory(LSTM)を用いており、順方向のLSTMと逆方向のLSTMを組み合わせている。他には、例えば、非特許文献2のBidirectional Encoder Representations from Transformers (BERT)は、自己注意機構を備えたニューラルネットワークであるTransformerを、多段に重ねることによって構築される。
【先行技術文献】
【非特許文献】
【0006】
【文献】Deep Contextualized Word Representations. Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. https://www.aclweb.org/anthology/N18-1202/
【文献】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. https://www.aclweb.org/anthology/N19-1423/
【発明の概要】
【発明が解決しようとする課題】
【0007】
文脈ベクトルの粒度は、言語モデルに付随したトークン化機能により行われるトークン化の粒度(トークンの単位)に依存する。文脈ベクトルの粒度が、実行されるテキスト解析に適切であるためには、当該テキスト解析に適切な粒度でトークン化を行うトークン化機能が付随した言語モデルが使用されなければならない。しかし、テキスト解析に応じて適切な言語モデルを常に選択することは困難であり、また、そのような適切な言語モデルが必ずしも公開されているとは限らない。例えば、非特許文献1または2に開示の言語モデル(ELMoまたはBERT)が、実行されるテキスト解析のために適切であるとは限らない。
【0008】
このため、使用される言語モデルに付随したトークン化機能により行われるトークン化の粒度が、適切な粒度と異なっていることが有り得る。
【0009】
適切なトークン化粒度に合わせた言語モデルを新たに構築することが考えられる。しかし、言語モデル(例えばELMoまたはBERT)は、その訓練に多大な時間的、および金銭的コストを伴う。したがって、適切な粒度に合わせた言語モデルを構築することは、非現実的である。
【課題を解決するための手段】
【0010】
言語モデル処理装置が、それぞれが第1の言語モデルに対応した第1の粒度のトークンである一つまたは複数の第1のトークンで構成された第1のトークン列をテキストから取得する。言語モデル処理装置が、それぞれが第1の粒度と異なる第2の粒度のトークンである一つまたは複数の第2のトークンで構成された第2のトークン列をテキストから取得する。言語モデル処理装置が、第1のトークン列における一つまたは複数の第1のトークンそれぞれを一つまたは複数の言語モデルのうちの第1の言語モデルの入力とすることで、第1の言語モデルの出力として、一つまたは複数の第1のトークンにそれぞれ対応した一つまたは複数の第1の文脈ベクトルで構成された第1の文脈ベクトル列を取得する。言語モデル処理装置が、第2のトークン列における一つまたは複数の第2のトークンそれぞれを一つまたは複数の言語モデルのうちの第1の言語モデルまたは第1の言語モデルと異なる第2の言語モデルの入力とすることで、第1の言語モデルまたは第2の言語モデルの出力として、一つまたは複数の第2のトークンにそれぞれ対応した一つまたは複数の第2の文脈ベクトルで構成された第2の文脈ベクトル列を取得する。言語モデル処理装置が、第1の文脈ベクトル列における一つ以上の第1の文脈ベクトルと第2の文脈ベクトル列における一つ以上の第2の文脈ベクトル列とを合成する。言語モデル処理装置が、一つ以上の第1の文脈ベクトルと一つ以上の第2の文脈ベクトルとが合成された一つ以上の文脈ベクトルに基づく合成文脈ベクトル列を出力する。
【発明の効果】
【0011】
本発明によれば、言語モデルを新たに構築することなく、テキスト解析のような上位タスクに適切な文脈ベクトルを取得することができる。前述した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0012】
【
図1】実施例1における言語モデル処理装置の機能ブロック図の一例である。
【
図2】入力テキストの一例および文字トークン化の一例を示す説明図である。
【
図3】入力テキストの一例および部分語トークン化の一例を示す説明図である。
【
図4】比較例における揮発性装置占有率グラフの一例を示す説明図である。
【
図5】実施例1における揮発性装置占有率グラフの一例を示す説明図である。
【
図6】実施例2における言語モデル処理装置の機能ブロック図の一例である。
【
図7】実施例2における文字中心文脈ベクトル列合成部を示す説明図である。
【
図8】実施例2における文字中心文脈ベクトル列合成部を示す説明図である。
【
図9】実施例2における合成パラメータ設定画面の一例を示す図である。
【
図10】実施例3における言語モデル処理装置の機能ブロック図の一例である。
【
図11】対象スパンデータの一例を示す説明図である。
【
図12】実施例3における対象スパン文脈ベクトル合成部を示す説明図である。
【
図13】実施例3における合成パラメータ設定画面の一例を示す図である。
【
図14】言語モデル処理装置を実現するコンピュータのハードウェア構成例である。
【
図15】実施例1の変形例における言語モデル処理装置の機能ブロック図の一例である。
【発明を実施するための形態】
【0013】
本発明の実施例を、図面を用いて説明する。以下において、同一または類似する要素および処理に同一の符号を付して差分を説明し、重複する説明を省略する。また、後出の実施には、既出の実施例との差分を説明し、重複する説明を省略する。また、各実施例および各変形例は、本発明の趣旨と整合する範囲内で、一部または全部を組合せることができる。
【0014】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボードおよびポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0015】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0016】
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVME(Non-Volatile Memory Express)ドライブ、または、SCM(Storage Class Memory)でよい。
【0017】
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
【0018】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部または全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)またはASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0019】
また、以下の説明では、「yyy部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路(例えばFPGAまたはASIC)によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置および/またはインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機または計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【0020】
また、以下の説明では、「言語モデル処理装置」は、一つ以上の物理的な計算機で構成されたシステムでもよいし、物理的な計算リソース群(例えば、クラウド基盤)上に実現されたシステム(例えば、クラウドコンピューティングシステム)でもよい。言語モデル処理装置が表示用情報を「表示する」ことは、計算機が有する表示デバイスに表示用情報を表示することであってもよいし、計算機が表示用計算機に表示用情報を送信することであってもよい(後者の場合は表示用計算機によって表示用情報が表示される)。
【0021】
以下の説明において、言語モデル処理装置では、文字列で構成されるテキストが入力される。テキストを、テキストより粒度の細かいトークンに分解するために、トークン化機能が使用される。
【0022】
トークン化装機能は、言語モデルに付随しており、テキストをトークン列へと変換する機能である。例えば、テキストが英語であれば、トークン化機能が、テキストを空白文字で区切り、単語へと分解し、トークン列を取得してよい。他には、トークン化機能が、入力テキストを文字単位で区切り、文字列へと分解し、トークン列を取得してよい。他には、例えば、テキストが日本語であれば、トークン化機能は、テキストを形態素単位に分解してよい。このように、トークン化には、言語モデルに応じたトークン化機能が使用される。トークン化には、例えば、ルールに基づく手法、統計的手法、または機械学習が用いられる。つまり、トークン化機能それ自体が、モデル(例えばニューラルネットワーク)でよい。
【0023】
言語モデルに応じたトークン化機能は、あらかじめ言語モデルの開発者が決定した粒度に従うトークン化を行う。このため、言語モデルは、あらかじめ決定された粒度と異なる粒度のトークン化が行われることが想定されていない。したがって、例えば、単語をトークン化の粒度とするトークン化機能を用いる言語モデルについて、部分語(単語をさらに0回以上分割して得られるトークン列)をトークン化の粒度とするトークン化機能が用いられると、想定とは異なるトークン列が入力されることとなり、結果として、文脈ベクトルの精度が低下し得る。
【0024】
一方、テキスト解析に必要なトークン化の粒度は、文字、単語、または部分語など、解析対象によってさまざまである。
【0025】
このように、テキスト解析の目的によってトークン化の適切な粒度が異なる。言語モデルは、その言語モデルに応じたトークン化装機能が行うトークン化の粒度と異なる粒度のトークンの入力では適切な文脈ベクトル列を取得できない。
【0026】
そこで、以下の幾つかの実施例では、言語モデル処理装置は、使用される言語モデルに対応した粒度(例えば、文字単位より粗い単位)である第1の粒度のトークン化を行うトークン化機能が付随した言語モデルに対し、第1の粒度よりも細かい第2の粒度(例えば、文字単位)のトークンのトークン列を入力することで、第2の文脈ベクトル列(第2の粒度の文脈ベクトルの文脈ベクトル列)を取得する。言語モデル処理装置は、また、当該言語モデルに対し、第1の粒度(例えば、文字より粗い粒度)のトークンのトークン列を入力し、第1の文脈ベクトル列(第1の粒度の文脈ベクトルの文脈ベクトル列)を取得する。そして、言語モデル処理装置は、第2の文脈ベクトル列に対して第1の文脈ベクトル列を合成し、第1の粒度の文脈を反映した第2の粒度の文脈ベクトルを出力(例えば、利用者に提示)する。第2の粒度が、形態素解析といった第2の粒度の処理を必要とする上位タスクに適切な粒度である。
【0027】
以下、幾つかの実施例を説明する。なお、以下の説明は、本願の出願先国に応じた言語に翻訳されてよいが、
図2に記載のテキスト901及び文字トークン列102aの具体例、
図3に記載のテキスト901及び部分語トークン列103aの具体例、及び、
図11に記載のテキスト901及び四文字1102の具体例は、説明を分かり易くするために、本願の出願先国に関わらず日本語のままでよい。
[実施例1]
<実施例1の言語モデル処理装置100の構成>
【0028】
図1は、実施例1における言語モデル処理装置100の機能ブロック図の一例である。
【0029】
言語モデル処理装置100は、入力部101、文字トークン化部102、部分語トークン化部103、トークン化機能104-1、言語モデル部104、文脈ベクトル列合成部105、および文脈ベクトル列出力部106を含む。
【0030】
本実施例では、例えば、言語モデル処理装置100が、利用者からテキスト901の入力を受け、当該テキスト901の入力に応答した出力として、文脈ベクトル列を利用者に提供できる。利用者に提供される文脈ベクトル列は、例えば、形態素解析や、文分類といったアプリケーション(上位タスクの一例)へ応用できる。
【0031】
入力部101は、文字列からなるテキスト901を入力として受け付ける。本実施例では、テキスト901としての文字列は、日本語の文字例であるが、他の言語の文字列であっても問題ない。この場合、言語モデル処理装置は、その言語に応じたトークン化機能を利用する。また、テキスト901は、Webページ、新聞記事、論文、報告書など様々な種別の情報から抽出されたテキストでよい。
【0032】
入力部101は、少なくとも1以上の文字を含む文字列で構成されたテキスト901を受け付け、当該テキスト901を、文字トークン化部102、および部分語トークン化部103へ出力する。テキスト901の一例は、
図2または
図3に示す通りである。
【0033】
文字トークン化部102は、入力部101から受け付けたテキスト901を文字単位(第2の粒度の一例)に分解し、文字トークン列(文字単位のトークン(つまり文字)のトークン列)を取得し、当該文字トークン列を言語モデル部104へ出力する。例えば、
図2に例示するように、文字トークン化部102は、テキスト901を文字トークン列102aへ変換する。文字トークン化部102は、例えば、テキストを文字トークン列への変換するためのコンピュータプログラムを実行することにより実現される。
【0034】
部分語トークン化部103は、入力部101から受け付けたテキスト901を、言語モデル部104に対応するトークン化機能104-1(部分語単位のトークン化を行うトークン化機能)へ入力し、トークン化機能104-1から得られる部分語トークン列(部分語単位のトークン(つまり部分語)のトークン列)を取得し、当該部分語トークン列を言語モデル部104へ出力する。なお、「部分語単位」は、文字単位より粗く単語単位より細かい単位の一例である。部分語単位は、第1の粒度の一例であるが、第1の粒度は、どのような単位であってもよい(例えば、第1の粒度は、音素、単語、N-グラム、句などといった単位でよい)。また、部分語トークン化部103の処理の一例は、
図3に示す通りである。すなわち、部分語トークン化部103は、テキスト901を、部分語トークン列103aへ変換する。トークン化機能104-1は、ELMo、BERT、およびRNN言語モデルなどといった言語モデルに付随するトークン化用ソフトウェアをプロセッサが実行することにより実現される。
【0035】
言語モデル部104は、言語モデル(例えば、ニューラルネットワーク)を用いた推論を行う。言語モデル部104は、文字トークン化部102から受け付けた文字トークン列102aにおける各文字トークン(文字単位のトークン)を文字文脈ベクトル(文字単位の文脈ベクトル)へと変換することで、文字単位の文脈ベクトルの文脈ベクトル列である文字文脈ベクトル列を計算する。言語モデル部104は、また、部分語トークン化部103から受け付けた部分語トークン列103aにおける各部分語トークン(部分語単位のトークン)を部分語文脈ベクトルへと変換することで、部分語単位の文脈ベクトルの文脈ベクトル列である部分語文脈ベクトル列を計算する。
【0036】
言語モデル部104が使用する言語モデルは、本来、トークン化機能104-1を用いて得られる部分語を入力として受け付けることを想定して開発されている。
【0037】
しかし、本実施例では、言語モデルが原理的には部分語単位(第1の粒度の一例)よりも細かい文字単位(第2の粒度の一例)のトークンも入力として受け付け可能である、という特性が活用される。そのような特性の一例は、次の通りである。すなわち、言語モデルの使用では、部分語辞書(当該言語モデル用に機械的に作成された辞書)が使用される。部分語辞書には、部分語(またはその値(例えばハッシュ値または特徴量))と文脈ベクトルに含まれる値との関係が記述されている。トークン化によって取得される一部の部分語は、文字であることもある。従って、文字が入力されても、当該文字に対応した文脈ベクトルの取得が期待される。したがって、文字トークン列を言語モデル部104へ入力し、文字文脈ベクトル列を取得することが可能である。このとき、言語モデル部104で用いられている部分語辞書に存在しない文字が現れた場合は、便宜的に、未知語として特殊記号文字を入力することができる。
【0038】
なお、言語モデルは、本実施例では確率モデルであり、例えば、下記式(1)、および式(1)に類似する条件付出力器を備える。式(1)は、パラメータSを用いた計算において、トークン列w_1、w_2、...,w_{i-1}が条件として与えられたときに、その後にトークンw_iが出現する確率を示す。
P(w_i|w_1,w_2,...,w_{i-1}; S) ・・・(1)
【0039】
言語モデルは、どのような形態であっても構わない。言語モデルは、ニューラルネットワークでもよいし線形モデルでもよい。さらに、例えば、言語モデル部104は、ニューラルネットワークとしての言語モデルのパラメータを初期化したり、教師ありまたは教師なし学習によってニューラルネットワークのパラメータを調整(事前学習)してもよい。教師あり学習によって言語モデル部104のニューラルネットワークのパラメータを調整する場合には、言語モデルとして、例えば、ELMo、BERT、およびRNN言語モデルなどが採用されてよい。
【0040】
言語モデルは、例えば、インターネットや販売によって公開されている事前学習が行われた言語モデルでよい。その場合、言語モデルの事前学習を行うことなく当該言語モデルを推論に利用することができる。また、事前学習が行われた言語モデルに対して、パラメータの調整、追加、または削除などの操作が行われてもよい。
【0041】
言語モデル部104は、変換した文字文脈ベクトル列および部分語文脈ベクトル列を、文脈ベクトル列合成部105へ出力する。
【0042】
文脈ベクトル列合成部105は、言語モデル部104から受け付けた文字文脈ベクトル列および部分語文脈ベクトル列を合成して文脈ベクトル列を獲得し、合成した文脈ベクトル列を文脈ベクトル列出力部106へ出力する。なお、文字文脈ベクトル列および部分語文脈ベクトル列を合成する処理は、ベクトルの和、ベクトルの差、ベクトルの積、およびベクトルの結合などといった演算を用いた変換演算でよい。
【0043】
文脈ベクトル列出力部106は、文脈ベクトル列合成部105から受け付けた文脈ベクトル列を利用者に提示する。文脈ベクトル列の利用者への提示は、文脈ベクトル列の出力の一例である。
【0044】
また、文脈ベクトル列出力部106は、文脈ベクトル列合成部105から受け付けた文脈ベクトル列を加工することも可能である。加工としては、例えば、文脈ベクトルを線形変換したり、文脈ベクトルを非線形変換したり、文脈ベクトルを正規化することが考えられる。
【0045】
文脈ベクトル列出力部106は、出力される文脈ベクトル列を利用者に提供できる。また、利用者は、提供された文脈ベクトル列に対してさらに計算を行い、形態素解析、固有表現抽出、文分類、翻訳などといったアプリケーションを作成できる。
<実施例1のコンピュータにおける挙動>
【0046】
図5のグラフ903は、実施例1に係る言語モデル部104が揮発性装置(例えば期は切性メモリ)を占有する割合の一例を示す図である。一方、
図4のグラフ902は、比較例に係る言語モデル部が揮発性装置を占有する割合の一例を示す図である。
【0047】
言語モデル部104は、文字トークン列および部分語トークン列の2つのトークン列に対して、揮発性装置を用いた計算を行う。したがって、
図5のグラフ903が示す通り、言語モデル部104による処理が行われる間に、文字トークン列と部分語トークン列との2回にわたる計算が実行され、したがって、2回にわたり揮発性装置の計算占有率が上昇すると推測される。
【0048】
一方、比較例によれば、言語モデル部は、当該言語モデルについて予め決定された粒度のトークンのトークン列である部分語トークン列に対する計算のみを行う。したがって、
図4のグラフ902が示す通り、比較例に係る言語モデル部による処理が行われる間に、部分語トークン列に対する計算のみが実行され、したがって、1回のみ揮発性装置の計算占有率が上昇すると推測される。
<実施例1の効果>
【0049】
本実施例によれば、テキスト901から部分語トークン列に加えて文字トークン列が取得され、言語モデルを用いて、部分語文脈ベクトル列に加えて文字文脈ベクトル列が取得される。そして、それら粒度の異なる文脈ベクトル列を合成することで、文字と部分語のそれぞれの粒度の文脈を反映した文脈ベクトル列を取得することができる。
[実施例2]
【0050】
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略または簡略する。
<実施例2の言語モデル処理装置200の構成>
【0051】
図6は、実施例2における言語モデル処理装置200の機能ブロック図の一例である。
【0052】
言語モデル処理装置200は、入力部101、文字トークン化部102、部分語トークン化部103、トークン化機能104-1、言語モデル部104、文字中心文脈ベクトル列合成部201、合成パラメータ201-1、および、文脈ベクトル列出力部106を含む。つまり、言語モデル処理装置200は、文脈ベクトル列合成部105に代えて文字中心文脈ベクトル列合成部201を含み、且つ、合成パラメータ201-1をさらに含む。
【0053】
言語モデル処理装置200を用いたテキスト解析に関して、テキスト解析の目的が、形態素分割や品詞推定といった、文字単位の処理である場合には、文脈ベクトル列は文字の粒度で取得されなければならない。
【0054】
そこで、文字中心文脈ベクトル列合成部201は、言語モデル部104から受け付けた文字文脈ベクトル列に対して、文字より粒度の粗い部分語文脈ベクトル列を合成パラメータ201-1における設定に基づく合成(文字文脈ベクトル列と部分語文脈ベクトル列との合成)を行い、文字の粒度の文脈ベクトル列を取得する。また、文字中心文脈ベクトル列合成部201は、当該合成した文脈ベクトル列を文脈ベクトル列出力部106へ出力する。
<実施例2の言語モデル処理装置200の処理>
【0055】
文字中心文脈ベクトル列合成部201が行う合成方法(文字文脈ベクトル列に対する部分語文脈ベクトル列の合成方法)には、様々な方法が考えられる。なぜならば、細かい粒度のトークンのトークン列(本実施例では文字トークン列)に合わせて、粗い粒度のトークンのトークン列(本実施例では部分語トークン列)を合成する必要があるためである。本実施例では、合成の方法は、合成パラメータ201-1によって決定される。
【0056】
合成パラメータ201-1は、合成の演算定義を含む。合成の演算定義には、例えば、部分語トークンのベクトルを用いた和、差、積、および結合といった演算、および、それらの演算のうちの少なくとも二つの演算の組み合わせが考えられる。
【0057】
さらに、演算は、線形変換や非線形変換を含んでいても構わない。また、演算には、ニューラルネットワークが用いられても構わない。
【0058】
図7および
図8は、それぞれ、文字中心文脈ベクトル列合成部201の一例を示す図である。
【0059】
図7および
図8に示す例では、文字文脈ベクトル列702は、12個の文字文脈ベクトルで構成され、部分語文脈ベクトル列703は、5個の部分語文脈ベクトルで構成されている。文字文脈ベクトル列702に対して部分語文脈ベクトル列703が合成された文脈ベクトル列701が出力される。なお、文字文脈ベクトル列702における文字文脈ベクトルの個数はどのような数であってもよいが、「部分語文脈ベクトル列703における部分語文脈ベクトルの個数は、必然的に、文字文脈ベクトルの個数より小さい」という制約がある。なお、数ベクトルの次元はどのような数であってもよい。
【0060】
図7に示す例によれば、部分語文脈ベクトルのスパン(0<i<j<N+1かつNは文字トークン列のトークン数、を満たす、i文字目からj文字目の範囲)と重複するすべての文字文脈ベクトルに対して、部分語文脈ベクトルが演算によって合成される。この演算は、2つのベクトルに対する演算として定義される。この場合、演算は、例えば、和、差、積、および結合といった演算が考えられる。
【0061】
一方、
図7に例示の演算では、部分語文脈ベクトルに対して、一様に、文字文脈ベクトルに対する演算を行っており、文字文脈ベクトルそれぞれが、どの程度部分語文脈ベクトルを重視するかは、反映されていない。例えば、テキスト「ABCD」が与えられたとする(「ABCD」における文字「A」、「B」、「C」および「D」は、それぞれ日本語であり、故に、「ABCD」は日本語として意味を持つが、本願明細書が出願先国に応じた言語に翻訳されることを考慮し、ここではあえてテキストを「ABCD」と表現する)。部分語トークン化部103によって、テキスト「ABCD」が部分語「AB」および「CD」に分割される場合には、テキストに含まれる文字「B」は、「A」に対する単なる付属語であり、部分語「AB」に含まれる文脈ベクトルの情報は、それほど重要ではない。
【0062】
このように、部分語文脈ベクトル列703に含まれる各部分語ベクトルの文脈的重要度に応じた処理は、より適切な文脈ベクトル列701の取得に活用できる。
【0063】
そこで、
図8に示す例によれば、文字中心文脈ベクトル列合成部201が行う合成方法に重み付き合成方法が採用されている。すなわち、部分語文脈ベクトルのスパンと重複するすべての文字文脈ベクトルに対して、部分語文脈ベクトルが重み付き演算によって合成される。重み付き演算は、例えば、2つのベクトルに対する荷重演算として定義される。この場合、重み付き演算では、例えば、和、差、積、および結合といった演算に対して、それぞれの文脈ベクトルがどの程度重視するか、という重みが付与される。
【0064】
図8に示す例によれば、部分語文脈ベクトル列703における部分語文脈ベクトルの合成先の一つまたは複数の文字文脈ベクトルそれぞれに対して、重みが割り当てられる。重みは、文字を粒度として文字ごとに決定されているが、文字より粗い粒度で決定されてもかまわない。また、重みは、利用者が決定してもよい。また、さらに、重みは、自動的に割り当てられてもよい。この場合、例えば、言語モデル(例えばニューラルネットワーク)のパラメータとして重みを学習させたり、ソフトウェアを用いて調整する、などといった方法が考えられる。
【0065】
また、部分語文脈ベクトルのスパンと重複しない文字文脈ベクトルに対しても、演算が定義されてよい。この場合、スパンの前後の部分語文脈ベクトルを同時に合成する、といった操作が考えられる。
【0066】
図9は、合成パラメータ201-1の設定を制御する合成パラメータ設定画面900の一例を示す図である。
【0067】
図9に例示された合成パラメータ設定画面900によれば、設定可能な合成パラメータの種類として、演算と重みとがある。演算と重みのそれぞれにおいて、設定可能な項目が利用者に提示される。合成パラメータ設定画面900によれば、積の演算、および均一の重み、が設定されており、当該設定に従う合成パラメータ201-1が、文字中心文脈ベクトル列合成部201に反映される。
【0068】
なお、合成パラメータ設定画面900を介して設定された合成パラメータ201-1は、表、テキストまたはデータベースであってもよい。また、合成パラメータ設定画面900は、分割された複数の画面であってもよい。また、合成パラメータ設定画面900は、他の情報や項目名、または選択肢を含んでもよい。
<実施例2の効果>
【0069】
本実施例によれば、文字文脈ベクトル列に対する部分語文脈ベクトル列の合成において、文字を粒度とする単位への適切な合成が可能になり、文字と部分語のそれぞれの粒度の文脈を反映した、文字単位の文脈ベクトルを取得できる。
[実施例3]
【0070】
実施例3を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略または簡略する。
<実施例3の言語モデル処理装置300の構成>
【0071】
言語モデル処理装置を用いたテキスト解析に関して、テキスト解析の目的が、与えられたスパンの分類といった、スパン単位の処理である場合には、文脈ベクトルは対象スパンの粒度で取得されなければならない。対象スパンの処理は、例えば、i番目の文字からj番目の文字までの対象スパンに固有名詞が含まれる場合、当該固有名詞が人名なのか、それとも組織名なのか、といった分類を行うことが考えられる。したがって、当該分類を行うときには、i番目の文字からj番目の文字までの対象スパンに対応する単一の文脈ベクトルを取得し、固有名詞の分類器へと入力する必要がある。
【0072】
図10は、実施例3における言語モデル処理装置300の機能ブロック図の一例である。
【0073】
言語モデル処理装置300は、入力部101、文字トークン化部102、部分語トークン化部103、トークン化機能104-1、言語モデル部104、対象スパン文脈ベクトル合成部301、合成パラメータ301-1、対象スパンデータ301-2および対象スパン文脈ベクトル出力部302を含む。つまり、言語モデル処理装置300は、文脈ベクトル列合成部105に代えて対象スパン文脈ベクトル合成部301を含み、文脈ベクトル列出力部106に代えて対象スパン文脈ベクトル出力部302を含み、且つ、合成パラメータ301-1および対象スパンデータ301-2をさらに含む。
【0074】
対象スパン文脈ベクトル合成部301は、言語モデル部104から受け付けた文字文脈ベクトル列および部分語文脈ベクトル列を合成パラメータ301-1における設定に基づいて合成し、対象スパンに対する単一の文脈ベクトル列を取得する。また、対象スパン文脈ベクトル合成部301は、当該合成した文脈ベクトルを対象スパン文脈ベクトル出力部302へ出力する。対象スパン文脈ベクトル出力部302は、合成された文脈ベクトル列を出力する。
<実施例3の言語モデル処理装置300の処理>
【0075】
対象スパン文脈ベクトル合成部301は、言語モデル部104から受け付けた文字文脈ベクトル列および部分語文脈ベクトル列を、実施例2における2つのベクトルの合成の演算と同様にして合成し、合成した文脈ベクトル列を、対象スパンに対応した集約演算し、当該合成した文脈ベクトル列を単一の文脈ベクトルに変換する。
【0076】
合成パラメータ301-1は、演算の定義と集約演算の定義とを含む。また、対象スパンがどのように与えられるかを定義した対象スパンデータ301-2は、対象スパン文脈ベクトル合成部301において解析対象となる対象スパンを表す。
【0077】
合成パラメータ301-1において、演算の定義には、例えば、部分語ベクトルを用いた和、差、積、および結合といった演算、およびそれら演算のうちの二つ以上の演算の組み合わせが考えられる。また、集約演算の定義には、例えば、対象スパンに属するベクトルの和、差、積、および結合といった演算、およびそれら演算のうちの二つ以上の演算の組み合わせが考えられる。
【0078】
対象スパンデータ301-2は、例えば、テキスト解析の目的が固有表現抽出ならば、固有名詞のスパンを表すデータを含む。他には、例えば、テキスト解析の目的が文分類ならば、対象スパンデータ301-2は、文のスパンを表すデータを含む。また、対象スパンデータ301-2は、2文字以上のスパンで構成されるあらゆるスパンを表すデータを含んでよい。さらに、対象スパンデータ301-2が表すスパンは、重複する複数のスパンや、隣接するスパンであっても構わない。
【0079】
図11は、対象スパンデータ301-2の一例を示す図である。
【0080】
図11に示す例によれば、対象スパンデータ301-2が表す対象スパンは、テキスト901に対して、山に関する固有名詞であり、連続した四文字1101である。また、
図11に示す例によれば、対象スパンデータ301-2が、テキスト901が有する文字と同数のセルで構成された表形式のデータであり、対象スパンに対応した文字と同数の連続した四つのセルにそれぞれ上述した四文字1102と同じ文字を含む。
【0081】
なお、
図11に例示の対象スパンデータ301-2は、表形式のデータであるが、データの形式はどのような形式であっても構わない。例えば、対象スパンデータ301-2は、テキストやデータベースといった形式でもよい。また、対象スパンデータ301-2は、利用者から指定された対象スパンを表すデータを含んでもよい。さらに、対象スパンデータ301-2は、機械的に構築された対象スパンを表すデータを含んでもよい。
【0082】
図12は、対象スパン文脈ベクトル合成部301の一例を示す図である。
【0083】
図12に示す例によれば、文字文脈ベクトル列1202は、12個の文字文脈ベクトルで構成され、部分語文脈ベクトル列1203は、5個の部分語文脈ベクトルで構成されている。さらに、対象スパンは、対象スパンデータ301-2に基づき、テキスト901の先頭文字を1番目の文字として4番目の文字から7番目の文字までとして指定されている。なお、実施例2と同様、文字文脈ベクトル列1202における文字文脈ベクトルの個数はどのような数であってもよいが、部分語文脈ベクトルの個数は、必然的に、文字文脈ベクトルの個数より小さい、という制約がある。なお、数ベクトルの次元はどのような数であってもよい。
【0084】
図12に示す例によれば、対象スパン文脈ベクトル合成部301は、対象スパンの文脈ベクトル1201を構築するために、文字文脈ベクトル列1202と部分語文脈ベクトル列1203とを合成する。具体的には、例えば、対象スパン文脈ベクトル合成部301は、まず、対象スパンと重複するすべての文字文脈ベクトルおよび部分語文脈ベクトルを、演算によって合成する。次に、対象スパン文脈ベクトル合成部301は、当該演算によって合成した対象スパンの文脈ベクトル列を、集約演算によって、単一のベクトルである対象スパン文脈ベクトル1201へと変換する。したがって、対象スパン文脈ベクトル出力部302が出力する文脈ベクトルは、文字単位の文脈と部分語単位の文脈との双方の文脈が反映された、適切な対象スパンの文脈ベクトルである。
【0085】
演算は、2つのベクトルに対する演算として定義される。この場合、演算は、例えば、和、差、積、および結合といった演算が考えられる。集約演算は、2つ以上のベクトルを含むベクトル列に対する演算として定義される。この場合、集約演算は、例えば、ベクトル列の和、差、積、および結合といった演算が考えらえる。
【0086】
さらに、演算および集約演算は、線形変換や非線形変換を含んでいても構わない。また、演算には、ニューラルネットワークが用いられても構わない。
【0087】
また、演算および集約演算では、実施例2と同様にして、重みが使用されてもよい。仮に重みが使用されるとすれば、部分語文脈ベクトル列1203と文字文脈ベクトル列1202とのそれぞれに含まれる、各ベクトルに対して重みが割り当てられる。重みは、ベクトルごとに決定されてよいが、重みの決定単位はどのような単位であっても構わない。また、重みは利用者により決定されてもよい。また、さらに、重みは、自動的に割り当てられてもよい。この場合、例えば、ニューラルネットワークのパラメータとして学習させたり、ソフトウェアを用いて調整したりする、などといった方法が考えられる。
【0088】
さらに、演算および集約演算は、それぞれ異なる計算でもよい。
【0089】
また、本実施例では、対象スパン文脈ベクトルは、単一のベクトルであるが、単一のベクトルでなくても構わない。その場合、複数のベクトルのベクトル列が対象スパン文脈ベクトルとして出力されること、または、集約処理が繰り返えされることが考えられる。
【0090】
また、対象スパンと重複しない文字文脈ベクトルおよび部分語文脈ベクトルに対しても、演算が定義されてよい。この場合、対象スパンの前後の部分語ベクトルを同時に合成する、といった操作が考えられる。
【0091】
図13は、合成パラメータ301-1の設定を制御する合成パラメータ設定画面1300の一例を示す図である。
【0092】
図13に示す合成パラメータ設定画面1300によれば、設定可能な合成パラメータとして、演算と演算に用いる重みと、集約演算と集約演算に用いる重みとがある。演算と演算に用いる重み、および集約演算と集約演算に用いる重みと、のそれぞれにおいて、設定可能な項目が利用者に提示される。合成パラメータ設定画面1300では、積の演算、および均一の重み、和の集約演算、自動調整の集約演算の重み、が設定されており、当該設定が対象スパン文脈ベクトル合成部301に反映される。
【0093】
なお、合成パラメータ設定画面1300を介して設定された合成パラメータ301-1は、表、テキストまたはデータベースであってもよい。また、合成パラメータ設定画面1300は、分割された複数の画面であってもよい。また、合成パラメータ設定画面1300は、他の情報や項目名、または選択肢を含んでもよい。
<実施例3の効果>
【0094】
本実施例によれば、任意の対象スパンに合わせて文字文脈ベクトル列と部分語文脈ベクトル列とが合成され、文字と部分語のそれぞれの粒度の文脈を反映した、対象スパンに対する単一の文脈ベクトルを取得できる。
<言語モデル処理装置を実現するコンピュータ400のハードウェア構成例>
【0095】
図14は、言語モデル処理装置100、200、および300を実現するコンピュータ400のハードウェア構成例を示す。
【0096】
コンピュータ400は、プロセッサ401と、記憶装置402と、入力デバイス403と、出力デバイス404と、インターフェース装置405と、を有する。これらの構成要素は、バス406によって互いに接続される。
【0097】
プロセッサ401は、コンピュータ400を制御する。記憶装置402は、プロセッサ401の作業領域となるメモリ(例えば揮発性装置)を含む。記憶装置402は、プログラム、およびデータを記憶する。
【0098】
上述の言語モデル処理装置100、200、および300の各yyy部は、記憶装置402に記憶された一時的または非一時的なプログラムをプロセッサ401が実行することによって実現されてよい。また、上述のテキスト901、合成パラメータ201-1、合成パラメータ301-1、および対象スパンデータ301-2などの各データは、例えば、記憶装置402に記憶されてよい。他には、例えば、言語モデル部104、トークン化機能104-1などの実行に必要な各データは、記憶装置402に記憶されていてよい。
【0099】
言語モデル処理装置100、200、および300において、例えば、プロセッサ401により実行されるプログラムは、OS(Operating System)を含むことができる。また、言語モデル処理装置100、200、および300において、実行されるプログラムは、入力プログラム、文字トークン化プログラム、部分語トークン化プログラム、言語モデルプログラム、トークン化プログラム、文脈ベクトル列合成プログラム、文字中心文脈ベクトル列合成プログラム、対象スパン文脈ベクトル合成プログラム、文脈ベクトル列出力プログラム、および対象スパン文脈ベクトル出力プログラムなどの各プログラムを含んでよい。例えば、言語モデル処理装置100において、プロセッサ401は、これらプログラムを実行し、動作し、入力部101、文字トークン化部102、部分語トークン化部103、言語モデル部104、トークン化機能104-1、文脈ベクトル列合成部105、および文脈ベクトル列出力部106として機能できる。
【0100】
図14において、OSや各プログラムなどのソフトウェアの各要素は、記憶装置402の中のいずれかの領域に格納される。
【0101】
入力デバイス403は、利用者が言語モデル処理装置100、200、および300に命令およびデータ入力を実行する装置である。入力デバイス403には、例えば、マウス、キーボード、タッチパネル、マイク、スキャナがある。
【0102】
出力デバイス404は、言語モデル処理装置100、200、および300が出力するデータを出力する。出力デバイス404には、例えば、ディスプレイ、プリンタ、スピーカーなどがある。出力デバイス404がディスプレイの場合、出力デバイス404が、例えば、合成パラメータ設定画面900または1300を表示することができる。また、 出力デバイス404がディスプレイやプリンタの場合、例えば、出力デバイス404が、グラフ902またはグラフ903を表示することができる。
【0103】
インターフェース装置405は、ネットワークと接続され、各データの送受信を行うことができる。入力デバイス403および出力デバイス404は省略されてもよい。また、言語モデル処理装置100、200、および300はネットワークを介して端末からデータを送受信してもよい。
【0104】
言語モデル処理装置100、200、および300の機能は、単一もしくは複数のプロセッサ、および揮発性もしくは不揮発性の記憶媒体を含み、単一もしくは複数の記憶デバイスを含む1以上の計算機からなる計算機システムに実装することができる。複数の計算機からなる計算機システムに実装する場合、計算機同士はネットワークを介して通信する。この場合、言語モデル処理装置の複数の機能の一部が単一の計算機に実装され、他の一部が前記計算機以外の計算機に実装されてもよい。
【0105】
上記の実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての要素および構成を備えるものに限定されない。したがって、本発明は上記した実施例に限定されるものではないし、合理的な範囲で様々な変形例を含んでよい。例えば、矛盾しない限りにおいて、ある実施例の要素や構成の一部を他の実施例の構成で置き換え、ある実施例の要素や構成に他の実施例の要素や構成を加えてもよい。また、各実施例の要素や構成の一部について、要素や構成の追加、削除、置換、統合、または分散を実行してもよい。また、実施例で示した要素、構成および処理は、処理効率または実装効率に基づいて適宜分散、統合、または入れ替えてもよい。
【0106】
また、言語モデル処理装置100、200、および300は、日本語に代えてまたは加えて日本語以外の言語に使用されてよいが、日本語または中国語のように、単語間の明示(例えば空白スペース)を含まず連続した複数の単語において文字が連続する言語で記述されたテキストの解析に高い有用性が期待される。
【0107】
上述の説明を、例えば以下のように総括することができる。なお、以下の総括は、上述の説明に無い新たな説明(例えば変形例の説明)を含んでよい。
【0108】
言語モデル処理装置が、第1のトークン化部(例えば、部分語トークン化部103)と、第2のトークン化部(例えば、文字トークン化部102)と、言語モデル部(例えば、言語モデル部104、又は
図15を参照して説明する後述の言語モデル部1550)と、合成部(例えば、文脈ベクトル列合成部105、文字中心文脈ベクトル列合成部201、または、対象スパン文脈ベクトル合成部301)と、出力部(例えば、文脈ベクトル列出力部106、または、対象スパン文脈ベクトル出力部302)とを備える。
【0109】
第1のトークン化部は、それぞれが第1の言語モデルに対応した第1の粒度(例えば、部分語単位)のトークンである一つまたは複数の第1のトークンで構成された第1のトークン列(例えば、部分語トークン列103a)をテキスト(例えば、テキスト901)から取得する。
【0110】
第2のトークン化部は、それぞれが第1の粒度と異なる第2の粒度(例えば、文字単位)のトークンである一つまたは複数の第2のトークンで構成された第2のトークン列(例えば、文字トークン列102a)を上記テキストから取得する。
【0111】
言語モデル部は、第1のトークン列における一つまたは複数の第1のトークンそれぞれを一つまたは複数の言語モデルのうちの第1の言語モデルの入力とすることで、第1の言語モデルの出力として、一つまたは複数の第1のトークンにそれぞれ対応した一つまたは複数の第1の文脈ベクトル(例えば、部分語文脈ベクトル)で構成された第1の文脈ベクトル列(例えば、部分語文脈ベクトル列)を取得する。また、言語モデル部は、第2のトークン列における一つまたは複数の第2のトークンそれぞれを一つまたは複数の言語モデルのうちの第1の言語モデルまたは第1の言語モデルと異なる第2の言語モデルの入力とすることで、第1の言語モデルまたは第2の言語モデルの出力として、一つまたは複数の第2のトークンにそれぞれ対応した一つまたは複数の第2の文脈ベクトル(例えば、文字文脈ベクトル)で構成された第2の文脈ベクトル列(例えば、文字文脈ベクトル列)を取得する。
【0112】
合成部は、第1の文脈ベクトル列における全部または一部の第1の文脈ベクトルと第2の文脈ベクトル列における全部または一部の第2の文脈ベクトル列とを合成する。出力部は、全部または一部の第1の文脈ベクトルと全部または一部の第2の文脈ベクトルとが合成された一つ以上の文脈ベクトルに基づく合成文脈ベクトル列を出力する。
【0113】
このように、テキストから第1のトークン列に加えて第2のトークン列が取得され、少なくとも第1の言語モデルを用いて、第1の文脈ベクトル列に加えて第2の文脈ベクトル列が取得される。そして、それら粒度の異なる文脈ベクトル列が合成される。これにより、言語モデルを新たに構築すること無しに、テキスト解析といった上位タスクに適切な第2の粒度の文脈に加えて第1の粒度の文脈を反映した適切な文脈ベクトル列を取得することができる。なお、トークンが言語モデルの入力とされるとは、トークンそれ自体が入力とされてもよいが、典型的には、トークンの値(例えば、ハッシュ値や特徴量のような値)が入力とされることでよい。
【0114】
第2の粒度は、第1の粒度よりも細かい粒度でよい。例えば、下記(A)ないし(C)のうちの少なくとも一つが採用されてよい。
(A)合成部は、全部または一部の第2の文脈ベクトルに対して、全部または一部の第1の文脈ベクトルを合成してよい。これにより、細かい粒度の文脈に粗い粒度の文脈が関連付けられた文脈ベクトルの取得が可能である。さらに、合成部は、全部または一部の第2の文脈ベクトルの各々についての重みと、全部または一部の第1の文脈ベクトルの各々についての重みとを基に、全部または一部の第2の文脈ベクトルに対して、全部または一部の第1の文脈ベクトルを合成してよい。これにより、文脈の重みを反映したより適切な文脈ベクトル列の取得が可能である。
(B)一つまたは複数の第1のトークンも一つまたは複数の第2のトークンも、第1の言語モデルの入力でよい。つまり、第1の文脈ベクトル列と第2の文脈ベクトル列の双方の取得に一つの第1の言語モデルが使用される。これにより、モデルサイズの肥大化を避けることができ、以って、学習負担の低減と消費される記憶容量の低減とが期待される。また、一部の第2のトークンはそれぞれ第1のトークンと同じであることが期待され且つ同一の辞書が使用されるため、処理が効率的であることが期待される。
(C)全部または一部の第2の文脈ベクトル列は、一つの第2のトークンよりも大きい範囲である対象スパンに属する二つ以上の第2のトークンにそれぞれ対応した一部の二つ以上の第2の文脈ベクトルでよい。全部または一部の第1の文脈ベクトル列は、二つ以上の第2のトークンの少なくとも一つが属する第1のトークンを含む一つ以上の第1のトークンにそれぞれ対応した一部の一つ以上の第1の文脈ベクトルでよい。合成部が、二つ以上の第2の文脈ベクトルに一つ以上の第1の文脈ベクトルを合成し、当該全部または一部の第1の文脈ベクトルが合成された当該二つ以上の第2の文脈ベクトルを集約した一つ以上の文脈ベクトルである対象スパン文脈ベクトル列を取得してよい。対象スパン文脈ベクトル列が、合成文脈ベクトル列でよい。これにより、第1の粒度と第2の粒度の文脈を反映した、対象スパンに対する単一の文脈ベクトルを取得できる。
【0115】
(C)において、合成部は、二つ以上の第2の文脈ベクトルの各々についての重みと、一つ以上の第1の文脈ベクトルの各々についての重みとを基に、二つ以上の第2の文脈ベクトルに対して、一つ以上の第1の文脈ベクトルを合成してよい。これにより、文脈の重みを反映したより適切な合成が期待される。
【0116】
(C)において、合成部は、二つ以上の第2の文脈ベクトルの各々についての重みを基に、二つ以上の第2の文脈ベクトルを集約することで、対象スパン文脈ベクトル列を取得してよい。例えば、
図8を参照して説明した重み付き演算が、
図12を参照して説明した集約演算に適用されてよい。これにより、文脈の重みを反映したより適切な集約が期待される。
【0117】
なお、上述の説明において、異なる粒度の文脈ベクトルの合成のルールは、任意のルールが採用されてよい。例えば、下記のうちのいずれかが採用されてよい。
・第1のトークンの範囲にそれぞれの範囲が重なる全ての第2のトークンに、当該第1のトークンが合成される。
・第2のトークンの範囲に完全に一致する範囲の第1のトークンが、当該第2のトークンに合成される。
・第1のトークンの範囲の開始と範囲の開始が一致する第2のトークンに、当該第1のトークンが合成される。
【0118】
一つまたは複数の第2のトークンは、第2の言語モデルの入力でよい。これにより、一つまたは複数の第2のトークンは、第2の言語モデルに対応したトークン化機能(第2の粒度のトークンを取得する機能)により取得され得るので、より適切な第2のトークン列の取得と、当該第2のトークン列に対応したより適切な第2の文脈ベクトル列の取得が期待される。例えば、実施例1に、
図15に例示の変形例が適用されてよい。すなわち、言語モデル部1550が、部分語単位(第1の粒度の一例)用の言語モデル1501(第1の言語モデルの一例)の他に、文字単位(第2の粒度の一例)用の言語モデル1502を使用可能でよい。言語モデル1502には、文字単位用のトークン化機能1502-1が付随していてよい。文字トークン部1502-2は、トークン化機能1502-1を用いて、文字トークン列を取得してよい。言語モデル部1550は、部分語トークン列を言語モデル1501に入力することで部分語文脈ベクトル列を取得し、文字トークン列を言語モデル1502に入力することで文字文脈ベクトル列を取得してよい。このように、異なる粒度にそれぞれ対応した異なる言語モデルの使用は、実施例1に代えてまたは加えて、実施例2および実施例3のうちの少なくとも一つに適用されてもよい。また、このように異なる複数の言語モデルが使用される例においても、対象スパン文脈ベクトル列の取得や、重みに応じた演算または集約演算の実行が採用されてもよい。すなわち、上述の実施例1ないし実施例3と
図15に例示の変形例とがどのように組み合わされてもよい。