(57)【要約】      （修正有）【課題】文章中の位置に関わらず適切な語であるか否かを識別することができる学習装置、学習方法、プログラム及び推定装置を提供する。【解決手段】学習装置１は、文章を取得する取得部１５１と、取得した前記文章を、所定単位の文字又は文字列である複数の要素に分割する分割部１５２と、各要素の次に出現する前記要素を、取得した前記文章の順に学習する第１学習部１５３と、前記複数の要素の並び順を、前記文章の先頭から末尾までを逆順序に並び替える順序変換部１５４と、並び替えた前記文章の順に、前記各要素の次に出現する前記要素を学習する第２学習部１５５とを備えることを特徴とする。【選択図】図１５
2019204214.tif 000002
【特許請求の範囲】
【請求項１】
文章を取得する取得部と、
取得した前記文章を、所定単位の文字又は文字列である複数の要素に分割する分割部と、
各要素の次に出現する前記要素を、取得した前記文章の順に学習する第１学習部と、
前記複数の要素の並び順を、前記文章の先頭から末尾までを逆順序に並び替える順序変換部と、
並び替えた前記文章の順に、前記各要素の次に出現する前記要素を学習する第２学習部と
を備えることを特徴とする学習装置。
【請求項２】
前記第１及び第２学習部は、再帰型ニューラルネットワークを生成する
ことを特徴とする請求項１に記載の学習装置。
【請求項３】
複数の文書夫々を、所定単位の文字又は文字列毎に分割する文書分割部と、
前記文書における前記文字又は文字列の出現頻度に応じて、該文字又は文字列を語句リストに登録する登録部と
を備え、
前記分割部は、前記語句リストに登録されている前記文字又は文字列毎に分割する
ことを特徴とする請求項１又は２に記載の学習装置。
【請求項４】
複数の文章を取得し、
取得した前記文章を、所定単位の文字又は文字列である複数の要素に分割し、
各要素の次に出現する前記要素を、取得した前記文章の順に学習し、
前記複数の要素の並び順を、前記文章の先頭から末尾までを逆順序に並び替え、
並び替えた前記文章の順に、前記各要素の次に出現する前記要素を学習する
処理をコンピュータに実行させることを特徴とする学習方法。
【請求項５】
複数の文章を取得し、
取得した前記文章を、所定単位の文字又は文字列である複数の要素に分割し、
各要素の次に出現する前記要素を、取得した前記文章の順に学習し、
前記複数の要素の並び順を、前記文章の先頭から末尾までを逆順序に並び替え、
並び替えた前記文章の順に、前記各要素の次に出現する前記要素を学習する
処理をコンピュータに実行させることを特徴とするプログラム。
【請求項６】
誤り推定対象である対象文を取得する取得部と、
取得した前記対象文を、所定単位の文字又は文字列である複数の要素に分割する分割部と、
学習用の文章を元に、該文章に含まれる各要素の次の前記要素を前記文章の順に学習済みの第１の言語モデルを参照して、前記対象文に含まれる前記要素夫々の生起確率を算出する第１算出部と、
前記対象文における前記複数の要素の並び順を、前記対象文の先頭から末尾までを逆順序に並び替える順序変換部と、
前記学習用の文章を元に、逆順序で前記各要素の次の前記要素を学習済みの第２の言語モデルを参照して、並び替えた前記対象文の前記要素夫々の生起確率を算出する第２算出部と、
前記第１及び第２算出部が夫々算出した前記要素の生起確率に基づき、該要素を誤り箇所と推定する推定部と
を備えることを特徴とする推定装置。
【請求項７】
前記推定部は、前記要素の生起確率と、該要素の文字種及び／又は文字数とに基づき、該要素を誤り箇所と推定する
ことを特徴とする請求項６に記載の推定装置。
【請求項８】
前記推定部は、生起確率が閾値以下の前記要素が所定数以上連続する場合に、連続する複数の前記要素を誤り箇所と推定する
ことを特徴とする請求項６又は７に記載の推定装置。
【請求項９】
前記第１又は第２の言語モデルを参照して、誤り箇所と推定された前記要素に対し、生起確率が最も大きくなる要素を修正候補として出力する出力部を備える
ことを特徴とする請求項６〜８のいずれか１項に記載の推定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習装置、学習方法、プログラム及び推定装置に関する。
【背景技術】
【０００２】
文章内に出現する語句の共起関係を学習することで、入力されたテキストに続くテキストの推定、テキスト内の誤りの推定等を行う技術がある。例えば特許文献１では、文章中に各単語が出現する順序と、各単語の係り受け等の関係とを学習した再帰型ニューラルネットワーク（Recurrent Neural Network、以下では「ＲＮＮ」と記載）を構築し、構築したＲＮＮを用いて、入力されたテキストに続くテキストを推定し、適切な構造の文章を出力する学習装置等が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−４５６５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に係る発明では、文章中に出現する単語の順序を、文章の先頭から順に学習しているため、例えば文章の先頭に位置する単語、読点に続く単語等を適切に推定することが難しい。
【０００５】
一つの側面では、文章中の位置に関わらず適切な語であるか否かを識別することができる学習装置等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの側面では、学習装置は、文章を取得する取得部と、取得した前記文章を、所定単位の文字又は文字列である複数の要素に分割する分割部と、各要素の次に出現する前記要素を、取得した前記文章の順に学習する第１学習部と、前記複数の要素の並び順を、前記文章の先頭から末尾までを逆順序に並び替える順序変換部と、並び替えた前記文章の順に、前記各要素の次に出現する前記要素を学習する第２学習部とを備えることを特徴とする。
【発明の効果】
【０００７】
一つの側面では、文章中の位置に関わらず適切な語であるか否かを識別することができる。
【図面の簡単な説明】
【０００８】
【図１】学習装置の構成例を示すブロック図である。
【図２】言語モデルについて説明するための説明図である。
【図３】テキスト学習処理について説明するための説明図である。
【図４】順方向のみでのテキストの並び順に基づく誤り推定処理の説明図である。
【図５】逆順序のテキスト学習処理について説明するための説明図である。
【図６】誤り推定処理の説明図である。
【図７】テキスト学習処理の処理手順の一例を示すフローチャートである。
【図８】誤り推定処理の処理手順の一例を示すフローチャートである。
【図９】実施の形態２に係る誤り推定処理の説明図である。
【図１０】実施の形態２に係る誤り推定処理の処理手順の一例を示すフローチャートである。
【図１１】実施の形態３に係る学習装置の構成例を示すブロック図である。
【図１２】語句リストのレコードレイアウトの一例を示す説明図である。
【図１３】サブワード学習処理を説明するための説明図である。
【図１４】サブワード学習処理の処理手順の一例を示すフローチャートである。
【図１５】上述した形態の学習装置の動作を示す機能ブロック図である。
【発明を実施するための形態】
【０００９】
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
（実施の形態１）
図１は、学習装置１の構成例を示すブロック図である。本実施の形態では、文章内に出現する各語句を、その文章の並び順に従って学習した言語モデル１４１を生成し、生成した言語モデル１４１を用いて、文章内の誤り箇所を推定する学習装置１について説明する。
【００１０】
学習装置１は、種々の情報処理が可能な情報処理装置であり、例えばサーバ装置、パーソナルコンピュータ、多機能端末等である。学習装置１は、学習用の文章を所定単位の語句（要素）毎に分割し、分割した各語句を、当該文章の並び順に従って学習する。これにより学習装置１は、直前までの語句から次の語句の出現確率（生起確率）を予測する言語モデル１４１を生成する。
【００１１】
図２は、言語モデル１４１について説明するための説明図である。言語モデル１４１は、自然言語の文章が生成される確率をモデル化したものである。一般的な言語モデル１４１では、文章内で先頭から順に出現する一又は複数の語句から、当該一又は複数の語句に続いて出現する語句の生起確率を算出し、次の語句を推定する。図２の例では、文章の先頭から順次出現する語句「私」、「は」、「学校」、「に」に基づき、次に出現する語句の生起確率を算出する様子を図示している。図２に示すように、一般的な言語モデル１４１では「私」等の語句を入力して次の語句の候補「行く」、「いる」等の生起確率を算出し、生起確率が最も高い候補「行く」を次の語句として予測する。このように、一般的な言語モデル１４１では、直前までの語句から次の語句を予測する。
【００１２】
本実施の形態ではさらに、学習装置１は文章の先頭及び末尾を入れ替え、文章内の語句を逆順序にした場合の語句の順序を学習し、文章の末尾から順に出現する一又は複数の語句から、直前の語句を予測する言語モデル１４１を生成する。すなわち学習装置１は、文章内の順方向における語句の並び順と、逆方向における並び順とを学習して２つの言語モデル１４１を生成する。学習装置１は当該２つの言語モデル１４１を用いて、誤り推定対象である文章から、誤字等と推定される誤り箇所を推定する。
【００１３】
図１に戻って説明を続ける。学習装置１は、制御部１１、主記憶部１２、通信部１３、補助記憶部１４を備える。
制御部１１は、一又は複数のＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro-Processing Unit）、ＧＰＵ（Graphics Processing Unit）等の演算処理装置を有し、補助記憶部１４に記憶されたプログラムＰを読み出して実行することにより、学習装置１に係る種々の情報処理、制御処理等を行う。主記憶部１２は、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）、フラッシュメモリ等の一時記憶領域であり、制御部１１が演算処理を実行するために必要なデータを一時的に記憶する。通信部１３は、通信に関する処理を行うための処理回路等を含み、外部と情報の送受信を行う。
【００１４】
補助記憶部１４は大容量メモリ、ハードディスク等であり、制御部１１が処理を実行するために必要なプログラムＰ、その他のデータを記憶している。また、補助記憶部１４は、上述の如く学習用の文章から生成された言語モデル１４１を記憶している。
【００１５】
なお、補助記憶部１４は学習装置１に接続された外部記憶装置であってもよい。また、学習装置１は複数のコンピュータからなるマルチコンピュータであってもよく、ソフトウェアによって仮想的に構築された仮想マシンであってもよい。
【００１６】
また、本実施の形態において学習装置１は上記の構成に限られず、例えば可搬型記憶媒体に記憶された情報を読み取る読取部、操作入力を受け付ける入力部、画像を表示する表示部等を含んでもよい。
【００１７】
図３は、テキスト学習処理について説明するための説明図である。図３では、学習装置１が学習用の文章において順方向に並んだ各語句を学習して、ＲＮＮの一種であるＬＳＴＭ（Long Short-Term Memory）による言語モデル１４１を構築する様子を図示している。以下では学習装置１が実行する処理の概要について説明する。
【００１８】
学習装置１は、例えば通信部１３を介して外部から複数の学習用の文章を取得する。そして学習装置１はまず、取得した学習用の文章に対して形態素解析等の自然言語処理を行い、所定単位の文字又は文字列である語句（要素）毎に分割する。この分割単位は、例えば単語、文節等の単位であるが、特に限定されない。例えば学習装置１は、複数の語句を格納した辞書（不図示）を予め記憶しておき、当該辞書に格納された語句に従って文章を分割すればよい。
【００１９】
なお、後述する実施の形態３のように、学習装置１は単語、文節等の単位ではなく、その他の単位で文章を分割してもよい。つまり学習装置１は、所定単位の文字又は文字列である要素毎に学習用文章を分割可能であればよく、分割単位とする要素は単語、文節等の単位に限定されない。
【００２０】
学習装置１は、分割した各語句をＲＮＮに係る入力層に入力し、機械学習を行う。図３に、ＲＮＮの構成を概念的に図示する。図３に示すように、ＲＮＮは、入力層、中間層（隠れ層）、及び出力層を有する。入力層は、文章の先頭から順に出現する各語句の入力をそれぞれ受け付ける複数のニューロンを有する。出力層は、入力層の各ニューロンに対応して、各ニューロンに入力される語句に続く語句をそれぞれ推定して出力する複数のニューロンを有する。そして中間層は、入力層の各ニューロンへの入力値（語句）に対して出力層の各ニューロンにおける出力値（語句）を演算するための複数のニューロンを有する。中間層の各ニューロンは、過去の入力値に関する中間層での演算結果を用いて（図３では右向きの矢印で図示）次の入力値に関する演算を行うことで、直前までの語句から次の語句を推定する。
【００２１】
なお、図３に示すＲＮＮの構成は一例であって、本実施の形態はこれに限定されるものではない。例えば中間層は一層に限定されず、二層以上であってもよい。また、入力層及び出力層のニューロンの数は同数に限定されず、例えば入力に対して出力の数は少なくともよい。
【００２２】
また、本実施の形態で学習装置１はＲＮＮのアルゴリズムに従って学習を行うが、例えばその他の深層学習、Ｎ−ｇｒａｍモデル、ＳＶＭ（Support Vector Machine）、ベイジアンネットワーク、決定木など、他のアルゴリズムに従って学習を行い、言語モデル１４１を生成してもよい。
【００２３】
学習装置１は、学習用文章の各語句を、当該文章内での並び順に従って入力層の各ニューロンに入力し、出力層の各ニューロンから出力値を得る。図３の例では、学習装置１は学習用文章の各語句「昨日」、「は」、「電車」、「に」…を、文章内での順番に従い、対応する入力層の各ニューロンに入力する。学習装置１は、中間層を経て出力層の各ニューロンでの演算を行い、文章内の任意の位置（順番）に出現する語句の生起確率を、直前までに出現する語句に基づいて算出し、次に出現する語句を推定する。図３の例では、学習装置１は１番目の語句「昨日」に基づき、２番目に出現する語句の生起確率を算出して推定を行う。また、学習装置１は１番目及び２番目の語句「昨日」及び「は」に基づき、３番目の語句の生起確率を算出して推定を行う。以下同様にして、学習装置１は各語句を推定する。
【００２４】
学習装置１は、推定した語句を実際の語句（正解値）と比較し、出力層の各ニューロンからの出力値が正解値に近似するよう各ニューロンのパラメータを調整し、ＲＮＮを構築する。例えば学習装置１は、「昨日」に続く語句として推定した語句が、実際の語句「は」となるように、各ネットワーク層のニューロンの重み等を調整する。これにより学習装置１は、学習用文章の順方向において、直前までに出現した語句から、当該語句の次に出現する語句を学習した言語モデル１４１を生成する。
【００２５】
図４は、順方向のみでのテキストの並び順に基づく誤り推定処理の説明図である。図４では、文章内の誤り箇所を検出するため、順方向の言語モデル１４１のみに基づいて各語句の生起確率を算出した場合を概念的に図示している。
【００２６】
学習装置１は、例えば通信部１３を介して、誤り箇所の検出（推定）対象である対象文を取得する。学習装置１は学習時と同様に、対象文を所定単位の語句に分割する。そして学習装置１は、生成済みの言語モデル１４１を参照して、各語句の生起確率を、直前までに出現する語句に基づいて算出する。図４に示す例では、学習装置１は、３番目に出現する語句「昨日」の生起確率を算出する場合、上述のＲＮＮを用いて、１番目及び２番目の語句「私」及び「は」から「昨日」の生起確率を算出する。そして学習装置１は、算出した生起確率に基づき、当該語句が誤り箇所であるか否かを判定する。例えば学習装置１は、生起確率を所定の閾値と比較し、閾値以下である場合、つまり生起確率が低い場合に誤り箇所であるものと判定する。
【００２７】
しかしながら、順方向のみの学習結果から誤り箇所を推定した場合、文章内における該当語句の位置によっては、適切に誤り箇所と推定できない虞がある。例えば日本語の文章の場合、文章の先頭、読点の直後、あるいは助詞の直後などには様々な語句が出現し得るため、多くの語句の生起確率が低くなる。例えば図４に示す文章は正しい文章であるにも関わらず、先頭に位置する語句「私」、及び読点の直後に位置する「学校」は、生起確率が低くなっている。この場合、学習装置１は正しい語句「私」及び「学校」を誤り箇所と推定する虞がある。
【００２８】
そこで本実施の形態では、学習装置１はさらに各語句を逆順序に並び替えた場合の文章を学習して言語モデル１４１を生成し、順方向及び逆方向それぞれの学習結果を組み合わせて誤り箇所を推定することで、上記の問題を解決する。
【００２９】
図５は、逆順序のテキスト学習処理について説明するための説明図である。図５では、学習用文章の各語句を逆順序に並び替え、文章の末尾からの順に各語句を学習していく様子を図示している。
【００３０】
例えば学習装置１は、順方向について学習処理を完了後、学習用文章の先頭から末尾までを入れ替え、末尾の語句を先頭にした逆順序に並び替える。すなわち、図５に示すように、学習装置１は「昨日」、「は」、「電車」、「に」、…「行っ」、「た」と続く語句を、「た」、「行っ」、「に」、「京都」、…「は」、「昨日」という順序に並び替える。学習装置１は、図３で示したＲＮＮと同様の構成を有する逆順序学習用のＲＮＮの入力層に、並び替えた各語句を入力する。そして学習装置１は、文章の末尾から逆順序で出現する一又は複数の語句に基づき、当該一又は複数の語句の直前に出現する語句を推定するＲＮＮを構築する。つまり学習装置１は、文章内の任意の位置の語句を、当該語句に続く後続の語句から推定するＲＮＮを構築する。
【００３１】
図６は、誤り推定処理の説明図である。図６では、順方向及び逆方向それぞれの言語モデル１４１に基づいて各語句の生起確率を算出する様子を図示している。
学習装置１は、図４でも説明したように、誤り推定対象の対象文を所定単位の語句に分割する。そして学習装置１は、対象文の各語句を順方向及び逆方向それぞれに係るＲＮＮの入力層に入力し、順方向及び逆方向それぞれについて生起確率を算出する。
【００３２】
順方向について計算を行う場合、学習装置１は、順方向について学習したＲＮＮの入力層に対して各語句を入力し、先頭から順に出現する一又は複数の語句から、当該一又は複数の語句に続く語句の生起確率を算出する。つまり学習装置１は、直前までの語句から次に出現する語句の生起確率を算出する。
【００３３】
逆方向について計算を行う場合、学習装置１はまず、対象文の各語句を逆順序に並び替える。そして学習装置１は、逆順序について学習したＲＮＮに対し、並び替えた各語句をその逆順序で入力し、末尾から順に出現する一又は複数の語句、つまり後続の語句から、当該一又は複数の語句の直前に出現する語句の生起確率を算出する。これにより、図６に示すように、順方向の場合に生起確率が低くなっていた語句「私」及び「学校」は、逆方向の場合には生起確率が高くなっている。
【００３４】
学習装置１は、順方向及び逆方向それぞれについて算出した各語句の生起確率に基づき、各語句が誤りであるか否かを判定する。例えば学習装置１は、順方向及び逆方向それぞれの生起確率が共に所定の閾値以下である場合、誤り箇所と推定する。学習装置１は、例えば誤り箇所と推定した語句を色分け表示するなどして、誤り箇所の表示態様をその他の箇所の表示態様と異ならせた対象文を出力することで、推定結果を出力する。
【００３５】
さらに学習装置１は、誤り箇所を検知した場合、誤りと推定した語句に代わる正しい語句を推定して提示（出力）してもよい。すなわち学習装置１は、誤り箇所と推定された語句に対し、修正候補とする語句を出力する。図２で説明したように、学習装置１は、言語モデル１４１を用いることで、生起確率が高い語句を前後の語句から予測可能である。例えば学習装置１は、誤り推定のために用いた言語モデル１４１（学習結果）を参照して、誤り箇所と推定された語句の位置（順序）において、生起確率が最も高い語句を修正候補として出力すればよい。この場合、学習装置１は順方向及び逆方向の２つの言語モデル１４１を用いて双方向から修正候補を推定してもよく、順方向又は逆方向のいずれかの言語モデル１４１のみから修正候補を推定してもよい。
【００３６】
以上より、学習装置１は、順方向及び逆方向それぞれの並び順で各語句を学習した言語モデル１４１を用いることで、文章内の誤り箇所を適切に推定することができる。
【００３７】
なお、学習装置１は言語モデル１４１をＢｉ‐ｄｉｒｅｃｔｉｏｎａｌ  ＲＮＮとして、順方向及び逆方向の並び順を同時に学習し、上記の２つのＲＮＮを１つに統合してもよい。ただし、単方向のＲＮＮの方がチューニングを容易に行えるため、上記のように２つのＲＮＮを生成した方が好適である。
【００３８】
図７は、テキスト学習処理の処理手順の一例を示すフローチャートである。図７に基づき、学習装置１が実行するテキスト学習処理の処理内容について説明する。
学習装置１の制御部１１は、例えば通信部１３を介して学習用の複数の文章を取得する（ステップＳ１１）。制御部１１は、取得した文章を、所定単位の文字又は文字列である複数の語句（要素）に分割する（ステップＳ１２）。例えば制御部１１は、単語、文節等の単位で文章を分割するが、分割する語句（要素）の単位は特に限定されない。
【００３９】
制御部１１は、文章の先頭から末尾に亘る順に、各語句の次に出現する語句を学習し、順方向の言語モデル１４１を生成する（ステップＳ１３）。例えば制御部１１は、上述の如く、文章の先頭から順に出現する一又は複数の語句を入力として、当該一又は複数の語句に続く語句の生起確率を出力するＲＮＮを構築する。
【００４０】
制御部１１は、各語句の並び順を、文章の先頭から末尾までを入れ替えた逆順序に並び替える（ステップＳ１４）。制御部１１は、並び替えた文章の順に、各語句の次に出現する語句を学習して、逆方向の言語モデル１４１を生成する（ステップＳ１５）。例えば制御部１１は、文章の末尾から順に出現する一又は複数の語句を入力として、当該一又は複数の語句の直前に位置する語句の生起確率を出力するＲＮＮを構築する。制御部１１は、一連の処理を終了する。
【００４１】
図８は、誤り推定処理の処理手順の一例を示すフローチャートである。図８に基づき、学習装置１が実行する誤り推定処理の処理内容について説明する。
学習装置１の制御部１１は、例えば通信部１３を介して、誤り推定対象である対象文を取得する（ステップＳ３１）。制御部１１は、取得した対象文を、所定単位の文字又は文字列である複数の語句（要素）に分割する（ステップＳ３２）。
【００４２】
制御部１１は、順方向について生成した言語モデル１４１を参照して、対象文に出現する各語句の生起確率を算出する（ステップＳ３３）。すなわち制御部１１は、言語モデル１４１として構築済みのＲＮＮの入力層に対し、対象文の先頭から順に出現する一又は複数の語句を入力して、当該一又は複数の語句に続く語句の生起確率を算出する。
【００４３】
制御部１１は、対象文の各語句の並び順を逆順序に並び替える（ステップＳ３４）。そして制御部１１は、逆方向について生成した言語モデル１４１を参照して、対象文に出現する各語句の生起確率を算出する（ステップＳ３５）。すなわち制御部１１は、逆方向について構築したＲＮＮの入力層に対し、対象文の末尾から順に出現する一又は複数の語句を入力して、当該一又は複数の語句の直前に出現する語句の生起確率を算出する。
【００４４】
制御部１１は、順方向及び逆方向それぞれについて算出した各語句の生起確率に基づき、対象文における誤り箇所を推定する（ステップＳ３６）。例えば制御部１１は、順方向及び逆方向それぞれの生起確率が共に閾値以下である語句を誤り箇所と推定する。制御部１１は推定結果を出力する（ステップＳ３７）。例えば制御部１１は、色分け表示等により、誤り箇所と推定された語句の表示態様をその他の語句の表示態様とは異ならせた対象文を出力する。また、制御部１１はステップＳ３７と併せて、誤り箇所と推定された語句に対し、修正候補を推定して出力するようにしてもよい。例えば制御部１１は、順方向及び／又は逆方向の言語モデル１４１を参照して、誤り箇所と推定された語句の位置（順序）において、生起確率が最も高い語句を修正候補として出力する。制御部１１は、一連の処理を終了する。
【００４５】
なお、上記では同一の学習装置１がテキストの学習及び誤り推定を行うものとして説明したが、本実施の形態はこれに限定するものではない。学習装置１は文章の学習のみを行い、他の装置に学習結果（言語モデル１４１）をインストールして推定装置として構成し、当該推定装置が誤り推定を行うものとしてもよい。
【００４６】
以上より、本実施の形態１によれば、文章中の各語句の並び順について、順方向だけでなく逆方向の順序も学習する。これにより、学習装置１は、文章中の位置に関わらず適切な語であるか否かを識別することができる言語モデル１４１を生成する。
【００４７】
また、本実施の形態１によれば、言語モデル１４１としてＲＮＮを生成することで、Ｎ−ｇｒａｍモデル等の他の学習アルゴリズムと比較して、より精度の高い言語モデル１４１を生成することができる。
【００４８】
また、本実施の形態１によれば、順方向及び逆方向それぞれの言語モデル１４１を用いて対象文の各語句の生起確率を算出することで、対象文における誤り箇所を適切に指摘することができる。
【００４９】
また、本実施の形態１によれば、言語モデル１４１を用いて、誤り箇所と推定された語句の修正候補を出力することもできる。これにより、利便性を向上させることができる。
【００５０】
（実施の形態２）
本実施の形態では、各語句の生起確率に加えて、各語句の文字種及び／又は文字数を誤り推定の判定基準に用いる形態について述べる。なお、実施の形態１と重複する内容については同一の符号を付して説明を省略する。
図９は、実施の形態２に係る誤り推定処理の説明図である。図９では、誤り推定対象の対象文に含まれる各語句について、順方向及び逆方向それぞれの言語モデル１４１から算出した生起確率のほか、各語句の文字種及び文字数を図示している。
【００５１】
本実施の形態で学習装置１は、該当語句の順方向及び逆方向それぞれに係る生起確率が閾値以下であり、かつ、該当語句の文字種及び／又は文字数が特定の条件を満たす場合、該当語句が誤り箇所であるものと推定する。例えば学習装置１は、文字種に関する条件として、該当語句が平仮名のみの文字又は文字列である場合、未変換の可能性が高いことから、誤り箇所と判定する。また、例えば学習装置１は、文字数に関する条件として、該当語句が所定の文字数以下である場合、誤入力の可能性が高いことから、誤り箇所と判定する。
【００５２】
また、学習装置１は文字種及び文字数のほかに、他の条件を誤り推定の判定条件に加えてもよい。例えば学習装置１は、生起確率が閾値以下の語句が所定回数連続する箇所を誤りと推定してもよい。これにより、例えば漢字に変換すべき文字列を誤って未変換とした場合など、生起確率が閾値以下になる語句が連続して出現する箇所を適切に誤り箇所と推定することができる。
【００５３】
図１０は、実施の形態２に係る誤り推定処理の処理手順の一例を示すフローチャートである。図１０に基づき、本実施の形態に係る誤り推定処理の処理内容について説明する。
ステップＳ３５の処理を実行後、学習装置１の制御部１１は、順方向及び逆方向それぞれについて算出した各語句の生起確率に加え、各語句の文字種及び／又は文字数に基づいて誤り箇所を推定する（ステップＳ２０１）。例えば制御部１１は、順方向及び逆方向ともに生起確率が閾値以下であり、かつ、該当語句が特定の文字種又は文字数であるか否かを判定する。例えば制御部１１は、文字種に関する条件として、該当語句が平仮名であるか否かを判定する。また、例えば制御部１１は、文字数に関する条件として、該当語句が所定の文字数以下であるか否かを判定する。なお、制御部１１は上記の条件に加えて、さらに順方向及び逆方向それぞれに係る生起確率が閾値以下の語句が所定数以上連続する箇所を誤り箇所と推定してもよい。制御部１１は、処理をステップＳ３７に移行する。
【００５４】
以上より、本実施の形態２によれば、言語モデル１４１を用いて算出された生起確率だけでなく、該当語句の文字種及び／又は文字数を判定基準とすることで、誤り箇所をより適切に推定することができる。
【００５５】
また、本実施の形態２によれば、生起確率が閾値以下の語句が連続する箇所を誤り箇所と推定することで、さらに適切に誤りを推定することができる。
【００５６】
（実施の形態３）
本実施の形態では、文章を分割する単位として、サブワードと呼ばれる単位を用いることで、例えば専門書のように、一般的な辞書に収録されていない未知語が多い文章を扱う場合でも適切に対応することができる形態について述べる。
図１１は、実施の形態３に係る学習装置１の構成例を示すブロック図である。本実施の形態に係る学習装置１の補助記憶部１４は、語句リスト１４２を記憶している。語句リスト１４２は、所定のサンプル文書から抽出した、サブワードと呼ばれる語句を記憶するデータベースである。本実施の形態では、学習装置１が取り扱う文書（文章）として医療診断書を想定し、診断書をサブワード単位で分割して誤り推定を行う形態について述べる。
【００５７】
図１２は、語句リスト１４２のレコードレイアウトの一例を示す説明図である。語句リスト１４２は、語句列、スコア列を有する。語句列は、サンプル文書から抽出（分割）したサブワードである語句（文字又は文字列）を記憶している。スコア列は、サブワードと対応付けて、サンプル文書において各サブワードが出現した頻度を元に計算したスコア（パラメータ）を記憶している。
【００５８】
図１３は、サブワード学習処理を説明するための説明図である。学習装置１は、所定のサンプル文書を多数取得し、各サンプル文書からサブワードを抽出して語句リスト１４２を生成する。図１３では、サンプル文書からサブワードを抽出し、語句リスト１４２に登録していく過程を図示している。
【００５９】
サブワード（部分語）は、通常の分かち書きとは異なり、文章中に出現する頻度に応じて文章を区分した語句（文字又は文字列）の単位である。一般的に文章の最小構成単位として用いられる「単語」は、文章中の文字又は文字列を意味、文法等の観点から最小化した単位であるが、サブワードは意味、文法等による単位ではなく、文章中で用いられる頻度に応じて最小化した単位である。サブワードの概念によれば、低頻度の語句（文字列）は、語句を構成する文字や部分文字列といった、語句そのものよりも短い単位でまとめられる。
【００６０】
以下、サンプル文書からサブワードを学習する処理について説明する。本実施の形態で学習装置１は、ＢＰＥ（Byte Pair Encoding）の手法を用いてサンプル文書からサブワードを抽出する。
【００６１】
学習装置１はまず、サンプル文書を文字単位で分割する。図４の最上段に示す例では、学習装置１は、「腫大したリンパ節を認めない」という文章を、「腫」、「大」、「し」、「た」…の各文字に分割している。
【００６２】
学習装置１は、図１３の二段目に示すように、分割した全ての文字をサブワードとして語句リスト１４２に登録する。この場合に学習装置１は、サンプル文書における各サブワード（文字）の出現頻度を元にサブワードのスコア（パラメータ）を計算し、計算したスコアを語句リスト１４２のスコア列に登録しておく。スコアは、例えば出現頻度を正規化することによって計算される。図４の例では、「腫」よりも「大」の方が文章中で出現する頻度が高いため、「大」のスコアは「腫」のスコア０．０１よりも大きい０．０５となっている。
【００６３】
なお、正規化する際に用いる重みなどの値は、場合によって適宜変更される。また、以下の説明では出現頻度を正規化したスコア（パラメータ）に基づき一連の処理を行うものとするが、例えば学習装置１は正規化していない出現頻度そのものをスコアとして用いても良く、出現頻度に応じたパラメータに基づいて一連の処理を行うことができれば良い。
【００６４】
次に学習装置１は、サンプル文書において隣り合う文字を連結した二文字の文字列を、当該文字列の出現頻度に応じて語句リスト１４２に登録する。具体的には、学習装置１は、文章中で最もスコアが高い二文字を語句リスト１４２に登録する。
【００６５】
例えば学習装置１は、文章の先頭から末尾に至るまで二文字ずつ文字列を取り出し、各文字列のスコアを計算していく。図１３の例では、学習装置１はまず「腫大」のスコアを計算し、続いて「大し」のスコアを、「した」のスコアを…というように計算を行う。そして学習装置１は、二文字から成る各文字列のうち、スコアが最も高い文字列を語句リスト１４２に登録する。図１３の三段目に示す例では、「転移」の文字列のスコアが最も高かったため、学習装置１は「転移」をサブワードとして語句リスト１４２に登録する。なお、学習装置１は併せて、当該文字列の出現頻度を元に計算したスコアを語句リスト１４２に登録する。
【００６６】
続いて学習装置１は、再度サンプル文書を探索し、スコアが最も高い二文字を語句リスト１４２に登録する。この場合に学習装置１は、サブワードとして語句リスト１４２に登録済みの文字列は一文字とみなし、新たなサブワードを探索する。上記の例では、語句リスト１４２に「転移」を登録済みであるため、この「転移」の文字列が一つの文字とみなされる。このように、学習装置１はＢＰＥの手法を用いて、隣り合う文字同士を一つの情報（文字列）に圧縮する。学習装置１は、「転移」に跨る部分についてスコアを計算する場合、「転移」の前に位置する「骨」と「転移」とを連結した「骨転移」と、「転移」の後に位置する「が」と「転移」とを連結した「転移が」とを二文字の文字列とみなし、スコアを計算する。
【００６７】
このように、学習装置１は、語句リスト１４２に登録済みの二つのサブワード（文字又は文字列）を連結して新たなサブワード（文字列）を特定し、当該新たなサブワードを出現頻度に応じて語句リスト１４２に追加する。図１３の四段目に示す例では、一文字のサブワード「骨」と二文字のサブワード「転移」とを連結した文字列「骨転移」のスコアが最も高かったため、学習装置１は、文字列「骨転移」をサブワードとして新たに語句リスト１４２に追加する。
【００６８】
以下同様にして、学習装置１は、サンプル文書内で隣り合う二つのサブワード（文字又は文字列）を連結し、二つのサブワードから成る文字列を、その出現頻度に応じて語句リスト１４２に登録する処理を順に行っていく。学習装置１は、複数のサンプル文書に対して当該処理を行い、語句リスト１４２に登録されたサブワードが予め定められた最大数（例えば８０００語）に達するまで処理を繰り返す。これにより学習装置１は、図１２で例示した語句リスト１４２を生成する。このようにして学習装置１は、文章内で現れやすい文字列のパターン（サブワード）を学習する。
【００６９】
なお、上記で学習装置１は、文章内で出現頻度に応じたスコアが最も高い文字列を語句リスト１４２に登録することとしているが、例えばスコアの閾値を定め、閾値以上のスコアを有する文字列を全てサブワードとして登録するようにしてもよい。つまり、学習装置１は出現頻度に応じてサブワードを登録可能であればよく、出現頻度に係る判定基準は特に限定されない。
【００７０】
学習装置１は、上記の語句リスト１４２を参照して学習用の文章（上述の例では既存の診断書）をサブワード単位で分割し、言語モデル１４１を生成する。例えば学習装置１は、分割後の全てのサブワードのスコアの合計値が最大化するように文章を分割する。同様に、学習装置１は誤り推定対象の対象文（診断書）をサブワード単位で分割し、言語モデル１４１を用いて誤り箇所を推定する。
【００７１】
上記のように、学習装置１は意味、文法等のような一般的な基準ではなく、出現頻度に応じて区分されるサブワードによって対象文を分割し、誤り部分を検出（推定）する。これにより、人手で作成された辞書を用いる必要がなく、未知語の多い文章であっても対応することができる。
【００７２】
図１４は、サブワード学習処理の処理手順の一例を示すフローチャートである。図１４に基づき、学習装置１が実行する誤り推定処理の処理内容について説明する。
学習装置１の制御部１１は、学習用の複数のサンプル文書を取得する（ステップＳ３０１）。制御部１１は、取得したサンプル文書を文字単位に分割する（ステップＳ３０２）。制御部１１は、分割した全ての文字をサブワードとして語句リスト１４２に登録する（ステップＳ３０３）。
【００７３】
制御部１１は、語句リスト１４２に登録済みのサブワード（文字又は文字列）のうち、サンプル文書において隣り合う二つのサブワードを連結した文字列の、サンプル文書内での出現頻度に応じたスコア（パラメータ）を算出する（ステップＳ３０４）。例えば制御部１１は、文章の先頭から末尾に至るまで二つずつサブワードを取り出して一つの文字列とし、各文字列の出現頻度に基づくスコアを順に計算する。
【００７４】
制御部１１は、ステップＳ３０４で算出したスコアに応じて、二つのサブワードを連結した文字列を新たなサブワードとして語句リスト１４２に登録する（ステップＳ３０５）。具体的には、制御部１１は、ステップＳ３０４においてスコアを計算した全ての文字列のうち、スコアが最も高い文字列を語句リスト１４２に登録する。この場合に制御部１１は、ステップＳ３０４で算出された出現頻度を元にしたスコアを併せて語句リスト１４２に登録する。
【００７５】
制御部１１は、予め定められた最大数のサブワードが語句リスト１４２に登録されたか否かを判定する（ステップＳ３０６）。最大数のサブワードが登録されていないと判定した場合（Ｓ３０６：ＮＯ）、制御部１１は処理をステップＳ３０４に戻す。最大数のサブワードが登録されたと判定した場合（Ｓ３０６：ＹＥＳ）、制御部１１は一連の処理を終了する。
【００７６】
以上より、本実施の形態３によれば、文章を分割する要素（語句）として、意味、文法等を基準とした単語、文節等ではなく、出現頻度に応じて区分されるサブワードを分割単位として用いる。これにより、人手で作成された辞書を用いる必要がなく、未知語の多い文章であっても対応することができる。特にサブワード単位で分割することで、低頻度の語句は短い文字数で分割されるため、実施の形態２（文字種及び／又は文字数に基づく誤り推定、生起確率が閾値以下の語句の連続性に基づく誤り推定）と本実施の形態を組み合わせることで、一層の精度向上を期待することができる。
【００７７】
（実施の形態４）
図１５は、上述した形態の学習装置１の動作を示す機能ブロック図である。制御部１１がプログラムＰを実行することにより、学習装置１は以下のように動作する。
取得部１５１は、複数の文章を取得する。分割部１５２は、取得した前記文章夫々を、所定単位の文字又は文字列である複数の要素に分割する。第１学習部１５３は、各要素の次に出現する前記要素を、取得した前記文章の順に学習する。順序変換部１５４は、前記複数の要素の並び順を、前記文章の先頭から末尾までを逆順序に並び替える。第２学習部１５５は、並び替えた前記文章の順に、前記各要素の次に出現する前記要素を学習する。
【００７８】
本実施の形態４は以上の如きであり、その他は実施の形態１から３と同様であるので、対応する部分には同一の符号を付してその詳細な説明を省略する。
【００７９】
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００８０】
１  学習装置
１１  制御部
１２  主記憶部
１３  通信部
１４  補助記憶部
Ｐ  プログラム
１４１  言語モデル
１４２  語句リスト
【図１】
2019204214.tif 000003
【図２】
2019204214.tif 000004
【図３】
2019204214.tif 000005
【図４】
2019204214.tif 000006
【図５】
2019204214.tif 000007
【図６】
2019204214.tif 000008
【図７】
2019204214.tif 000009
【図８】
2019204214.tif 000010
【図９】
2019204214.tif 000011
【図１０】
2019204214.tif 000012
【図１１】
2019204214.tif 000013
【図１２】
2019204214.tif 000014
【図１３】
2019204214.tif 000015
【図１４】
2019204214.tif 000016
【図１５】
2019204214.tif 000017