(57)【要約】【課題】かな漢字変換において、変換候補の表示順位の精度を向上させる。【解決手段】情報処理装置１００は、テキストデータを変換する操作を受け付けると、テキストデータに、意味が異なる複数の単語に対応する単語テキストが含まれるか否かを判定し、単語テキストが含まれる場合、入力が確定した確定文章を記憶する記憶部を参照して、操作を受け付ける前に入力が確定した確定文章を取得するとともに、複数の単語それぞれに対する文章の共起情報を複数の単語それぞれに対応付けて記憶する文ＨＭＭデータ１４３を参照して、文章の共起情報のうち、取得した確定文章に応じた文章の共起情報に基づき、複数の単語の表示順序を決定する。情報処理装置１００は、複数の単語を、変更候補として、決定した表示順序で選択可能に表示する。【選択図】図２
2019159826.tif 000002
【特許請求の範囲】
【請求項１】
テキストデータを変換する操作を受け付けると、前記テキストデータに、意味が異なる複数の単語に対応する単語テキストが含まれるか否かを判定し、
前記単語テキストが含まれる場合、入力が確定した確定文章を記憶する第１の記憶部を参照して、前記操作を受け付ける前に入力が確定した確定文章を取得するとともに、前記複数の単語それぞれに対する文章の共起情報を前記複数の単語それぞれに対応付けて記憶する第２の記憶部を参照して、前記文章の共起情報のうち、取得した前記確定文章に応じた文章の共起情報に基づき、前記複数の単語の表示順序を決定し、
前記複数の単語を、変更候補として、決定した前記表示順序で選択可能に表示する、
処理をコンピュータに実行させることを特徴とする表示制御プログラム。
【請求項２】
該決定する処理は、前記第２の記憶部を参照して、前記単語テキストに対応する複数の単語に対する前記文章の共起情報のうち、取得した前記確定文章と類似する文章の共起情報に基づき、前記複数の単語の表示順序を決定する
処理を実行させることを特徴とする請求項１に記載の表示制御プログラム。
【請求項３】
前記文章の共起情報は、前記文章に応じたベクトル情報を含む情報であることを特徴とする請求項１又は請求項２に記載の表示制御プログラム。
【請求項４】
テキストデータを変換する操作を受け付けると、前記テキストデータに、意味が異なる複数の単語に対応する単語テキストが含まれるか否かを判定する判定部と、
前記判定部によって前記単語テキストが含まれると判定される場合、入力が確定した確定文章を記憶する第１の記憶部を参照して、前記操作を受け付ける前に入力が確定した確定文章を取得するとともに、前記複数の単語それぞれに対する文章の共起情報を前記複数の単語それぞれに対応付けて記憶する第２の記憶部を参照して、前記文章の共起情報のうち、取得した前記確定文章に応じた文章の共起情報に基づき、前記複数の単語の表示順序を決定する決定部と、
前記複数の単語を、変更候補として、決定した前記表示順序で選択可能に表示する表示部と、
を有することを特徴とする処理をコンピュータに実行させることを特徴とする表示制御装置。
【請求項５】
コンピュータが、
テキストデータを変換する操作を受け付けると、前記テキストデータに、意味が異なる複数の単語に対応する単語テキストが含まれるか否かを判定し、
前記単語テキストが含まれる場合、入力が確定した確定文章を記憶する第１の記憶部を参照して、前記操作を受け付ける前に入力が確定した確定文章を取得するとともに、前記複数の単語それぞれに対する文章の共起情報を前記複数の単語それぞれに対応付けて記憶する第２の記憶部を参照して、前記文章の共起情報のうち、取得した前記確定文章に応じた文章の共起情報に基づき、前記複数の単語の表示順序を決定し、
前記複数の単語を、変更候補として、決定した前記表示順序で選択可能に表示する、
処理を実行することを特徴とする表示制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示制御プログラム等に関する。
【背景技術】
【０００２】
従来、かな漢字変換では、単語辞書のそれぞれの単語に、前方一致インデックスを適用する。そして、入力された先頭かな文字や確定後の先頭漢字をもとに、かな漢字変換が可能な単語候補を表示し、入力支援を行う。かな漢字変換が可能な単語候補は、例えば、単語ＨＭＭやＣＲＦ（Conditional  random  field）により、スコアを演算し、スコア順に表示される（例えば、特許文献１，２参照）。なお、単語ＨＭＭとは、例えば、単語に対する単語の共起情報を単語に対応付けて記憶したものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３０９７０６号公報
【特許文献２】特開平１０−２６９２０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、文章が複数の文に分割されると、繰り返し出現する名詞が代名詞に置き換えられ、漢字候補の表示順位の精度が低下するという問題がある。
【０００５】
従来技術では、読み仮名が共通な単語（同音異義語）に関し、複数の漢字候補が発生するため、単語ＨＭＭをもとにスコア順にランキング表示される。しかしながら、文章が複数の文に分割され、同音異義語に共起する単語が代名詞に置換されると、単語ＨＭＭをもとに正確にスコアを算出することができない。したがって、単語ＨＭＭをもとにスコアを算出しても、変換候補の表示順位の精度が低下することがある。
【０００６】
１つの側面では、変換候補の表示順位の精度を向上することを目的とする。
【課題を解決するための手段】
【０００７】
第１の案では、表示制御プログラムは、テキストデータを変換する操作を受け付けると、前記テキストデータに、意味が異なる複数の単語に対応する単語テキストが含まれるか否かを判定し、前記単語テキストが含まれる場合、入力が確定した確定文章を記憶する第１の記憶部を参照して、前記操作を受け付ける前に入力が確定した確定文章を取得するとともに、前記複数の単語それぞれに対する文章の共起情報を前記複数の単語それぞれに対応付けて記憶する第２の記憶部を参照して、前記文章の共起情報のうち、取得した前記確定文章に応じた文章の共起情報に基づき、前記複数の単語の表示順序を決定し、前記複数の単語を、変更候補として、決定した前記表示順序で選択可能に表示する、処理をコンピュータに実行させる。
【発明の効果】
【０００８】
１つの態様によれば、変換候補の表示順位の精度を向上することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施例に係る情報処理装置の処理の一例を説明するための図である。
【図２】図２は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
【図３】図３は、辞書データのデータ構造の一例を示す図である。
【図４】図４は、文ＨＭＭのデータ構造の一例を示す図である。
【図５】図５は、配列データのデータ構造の一例を示す図である。
【図６】図６は、オフセットテーブルのデータ構造の一例を示す図である。
【図７】図７は、インデックスのデータ構造の一例を示す図である。
【図８】図８は、上位インデックスのデータ構造の一例を示す図である。
【図９】図９は、インデックスのハッシュ化を説明するための図である。
【図１０】図１０は、インデックスデータのデータ構造の一例を示す図である。
【図１１】図１１は、ハッシュ化したインデックスを復元する処理の一例を説明するための図である。
【図１２】図１２は、単語候補を抽出する処理の一例を説明するための図である。
【図１３】図１３は、文のベクトルを算出する処理の一例を説明するための図である。
【図１４】図１４は、単語を推定する処理の一例を説明するための図である。
【図１５】図１５は、文ＨＭＭ生成部の処理手順を示すフローチャートである。
【図１６】図１６は、インデックス生成部の処理手順を示すフローチャートである。
【図１７】図１７は、単語候補抽出部の処理手順を示すフローチャートである。
【図１８】図１８は、単語推定部の処理手順を示すフローチャートである。
【図１９】図１９は、情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示する表示制御プログラム、表示制御装置及び表示制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１１】
［実施例に係る表示制御処理］
図１は、本実施例に係る情報処理装置の処理の一例を説明するための図である。図１に示すように、情報処理装置は、かな漢字変換対象の文字列データＦ１を受け付けると、文字列データＦ１に、同音異義語である複数の単語に対応する文字列が含まれる場合、変換が確定した文と、文ＨＭＭデータ１４３とを基にして、当該文字列に対応する変換候補となる複数の単語Ｆ３の表示順序を決定する。そして、情報処理装置は、変換候補となる複数の単語Ｆ３を、決定した表示順序で選択可能に表示する。ここでいう変換対象の文字列データＦ１は、日本語の文字に対応するが、これに限定されず、中国語や韓国語の文字に対応するものであっても良い。なお、実施例では、文字列データＦ１を日本語のひらがなとして説明する。
【００１２】
まず、情報処理装置が、文字列データ１４４からインデックス１４６´を生成する処理について説明する。
【００１３】
例えば、情報処理装置は、文字列データ１４４と、辞書データ１４２とを比較する。辞書データ１４２は、かな漢字変換候補となる単語（形態素）を定義したデータである。辞書データ１４２は、形態素解析に用いられる辞書データであるとともに、かな漢字変換に用いられる辞書データである。辞書データ１４２には、発音が同じであるが意味が異なる同音異義語が含まれる。
【００１４】
情報処理装置は、文字列データ１４４を先頭から走査し、辞書データ１４２に定義された単語にヒットした文字列を抽出し、配列データ１４５に格納する。
【００１５】
配列データ１４５は、文字列データ１４４に含まれる文字列のうち、辞書データ１４２に定義された単語を有する。各単語の区切りには、＜ＵＳ（unit  separator）＞を登録する。例えば、情報処理装置は、文字列データ１４４と、辞書データ１４２とを比較により、辞書データ１４２に登録された「着陸」、「成功」、・・、「精巧」が順にヒットした場合には、ヒットした単語の読み仮名を図１に示す配列データ１４５に格納する。なお、「成功」と「精巧」とは、同音異義語である。
【００１６】
情報処理装置は、配列データ１４５を生成すると、配列データ１４５に対応するインデックス１４６´を生成する。インデックス１４６´は、文字と、オフセットとを対応づけた情報である。オフセットは、配列データ１４５上に存在する該当する文字の位置を示すものである。たとえば、文字「せ」が、配列データ１４５の先頭からｎ１文字目に存在する場合には、インデックス１４６´の文字「せ」に対応する行（ビットマップ）において、オフセットｎ１の位置にフラグ「１」が立つ。
【００１７】
また、本実施例におけるインデックス１４６´は、単語の「先頭」、「末尾」、＜ＵＳ＞の位置も、オフセットと対応づける。たとえば、単語「せいこう」の先頭は「せ」、末尾は「う」となる。単語「せいこう」の先頭「せ」が、配列データ１４５の先頭からｎ２文字目に存在する場合には、インデックス１４６´の先頭に対応する行において、オフセットｎ２の位置にフラグ「１」が立つ。単語「せいこう」の末尾「う」が、配列データ１４５の先頭からｎ３文字目に存在する場合には、インデックス１４６´の「末尾」に対応する行において、オフセットｎ３の位置にフラグ「１」が立つ。
【００１８】
また、「＜ＵＳ＞」が、配列データ１４５の先頭からｎ４文字目に存在する場合には、インデックス１４６´の「＜ＵＳ＞」に対応する行において、オフセットｎ４の位置にフラグ「１」が立つ。
【００１９】
情報処理装置は、インデックス１４６´を参照することで、文字列データ１４４に含まれる単語を構成する文字の位置、文字の先頭、末尾、区切り（＜ＵＳ＞）を把握することができる。また、インデックス１４６´の先頭から末尾までに含まれる文字列は、かな漢字変換候補となる単語であると言える。なお、以下では、かな漢字変換候補のことを、単に「変換候補」と言う場合がある。
【００２０】
次に、情報処理装置は、文字又は文字列の入力確定を示す操作を受け付けた後、新たな文字列データＦ１を変換する操作を受け付けるとする。変換対象の文字列データＦ１は、例えば、「せいこうした」であるとする。
【００２１】
情報処理装置は、変換対象の文字列データＦ１に、同音意義語である複数の単語に対応する文字列が含まれるか否かを判定する。
【００２２】
例えば、情報処理装置は、変換対象の文字列データＦ１「せいこうした」の中の「せい」から変換候補となる単語を、インデックス１４６´、配列データ１４５及び辞書データ１４２から抽出する。一例として、情報処理装置は、変換対象の文字列データＦ１の中の「せい」に対する、配列データ１４５の中の位置を、インデックス１４６´を参照して検索する。そして、情報処理装置は、検索した位置に示される単語を、配列データ１４５及び辞書データ１４２から抽出する。ここでは、変換候補となる単語として「成功」及び「精巧」が抽出されたとする。情報処理装置は、抽出した変換候補となる単語の読み仮名が同じであり、意味が異なるので、抽出した変換候補となる単語が同音異義語であると判定する。すなわち、情報処理装置は、変換対象の文字列データＦ１「せいこうした」に、同音異義語である複数の単語「成功」「精巧」に対応する文字列「せいこう」が含まれると判定する。
【００２３】
情報処理装置は、変換対象の文字列データＦ１に、同音意義語である複数の単語に対応する文字列が含まれる場合には、入力が確定した文又は文章から、変換対象の文字列データＦ１に応じた文を取得する。かかる文は、検索対象の文字列データＦ１と関連する文であれば良い。例えば、かかる文は、検索対象の文字列データＦ１の直前の文であれば良い。一例として、全体の変換対象の文字列データが「ちゃくりくはこんなんだ。それにせいこうした。」である場合に、現在の変換対象の文字列データＦ１「せいこうした」の直前の文として「ちゃくりくはこんなんだ。」が取得される。
【００２４】
情報処理装置は、取得した文の文ベクトルを算出する。なお、情報処理装置が、文ベクトルを算出する場合には、Word2Vec技術に基づいて、文に含まれる各単語の単語ベクトルを算出し、各単語の単語ベクトルを集積することで、文ベクトルを算出する。Word2Vec技術は、ある単語と、隣接する他の単語との関係に基づいて、各単語のベクトルを算出する処理を行うものである。情報処理装置が、上記処理を行うことで、ベクトルデータＦ２を生成する。
【００２５】
情報処理装置は、文ＨＭＭ（Hidden  Markov  Model）データ１４３を参照して、取得した文の文ベクトルに応じた文の文ベクトルの共起情報に基づき、変換候補となる複数の単語の表示順序を決定する。
【００２６】
ここでいう文ＨＭＭデータ１４３は、単語と、複数の共起文ベクトルとを対応付ける。文ＨＭＭデータ１４３の単語は、辞書データ１４２に登録された単語である。共起文ベクトルは、単語と共起する文から求められる文ベクトルである。
【００２７】
共起文ベクトルは、共起率と対応付けられる。例えば、変換対象の文字列データＦ１に含まれる文字列が示す単語が「成功」である場合には、この単語と共起する文について、文ベクトルが「Ｖ１０８Ｆ９７」となる可能性が「３７％」であることが示される。また、文ベクトルが「Ｖ１０８Ｄ１９」となる可能性が「２９％」であることが示される。
【００２８】
例えば、情報処理装置は、ベクトルデータＦ２が示す文ベクトルと、文ＨＭＭデータ１４３の変換候補となる複数の単語に関する共起文ベクトルとを比較し、一致又は類似する共起文ベクトルを特定する。情報処理装置は、特定した共起文ベクトルの共起率を用いて、変換候補となる複数の単語の組合せについてスコア演算する。情報処理装置は、スコア値の高い組合せの順序を複数の単語の表示順序として決定する。一例として、ベクトルデータＦ２が示す文ベクトルが、「成功」に対応する共起文ベクトル「Ｖ０１０８Ｆ９７」と一致又は類似するとする。ベクトルデータＦ２が示す文ベクトルが、「精巧」に対応する共起文ベクトル「Ｖｙｙｙｙｙ」と一致又は類似するとする。情報処理装置は、「成功」及び「精巧」の順序の組合せを「精巧」及び「成功」の順序の組合せより高いスコア値としてスコア演算された場合には、スコア値の高い組合せの「成功」及び「精巧」の順序を複数の単語の表示順序として決定する。
【００２９】
そして、情報処理装置は、複数の単語を、変更候補となる単語として、決定した表示順序で選択可能に表示する（符号Ｆ３）。
【００３０】
上記のように、情報処理装置は、現にかな漢字変換している変換対象の文字列データＦ１に応じた入力確定文と、文ＨＭＭデータ１４３との共起関係に基づいて、変換候補となる複数の漢字の表示順序を決定する。これにより、情報処理装置は、選択される可能性に応じた順序で変換候補となる複数の漢字を表示することができる。
【００３１】
図２は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。図２に示すように、情報処理装置１００は、通信部１１０と、入力部１２０と、表示部１３０と、記憶部１４０と、制御部１５０とを有する。なお、情報処理装置１００は、表示制御装置の一例である。
【００３２】
通信部１１０は、ネットワークを介して、他の外部装置と通信を行う処理部である。通信部１１０は、通信装置に対応する。例えば、通信部１１０は、外部装置から、辞書データ１４２、文字列データ１４４、教師データ１４１等を受信して、記憶部１４０に格納しても良い。
【００３３】
入力部１２０は、各種の情報を情報処理装置１００に入力するための入力装置である。例えば、入力部１２０は、キーボードやマウス、タッチパネル等に対応する。
【００３４】
表示部１３０は、制御部１５０から出力される各種の情報を表示するための表示装置である。例えば、表示部１３０は、液晶ディスプレイやタッチパネルに対応する。
【００３５】
記憶部１４０は、教師データ１４１、辞書データ１４２、文ＨＭＭデータ１４３、文字列データ１４４、配列データ１４５、インデックスデータ１４６、オフセットテーブル１４７、静的辞書データ１４８及び動的辞書データ１４９を有する。記憶部１４０は、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子や、ＨＤＤ（Hard  Disk  Drive）等の記憶装置に対応する。
【００３６】
教師データ１４１は、かな漢字変換の精度向上のため、同音異義語を含む、大量の自然文を示すデータである。例えば、教師データ１４１は、コーパス等の大量の自然文のデータであっても良い。
【００３７】
辞書データ１４２は、かな漢字変換が可能な単語候補となるＣＪＫ単語を定義する情報である。ここでは一例として、名詞のＣＪＫ単語を示すが、辞書データ１４２には、形容詞、動詞、副詞等のＣＪＫ単語が含まれている。また、動詞については、動詞の活用形が定義される。なお、辞書データ１４２は、かな漢字変換に用いられると説明したが、形態素解析に用いられても良い。
【００３８】
図３は、辞書データのデータ構造の一例を示す図である。図３に示すように、辞書データ１４２は、読み仮名１４２ａ、ＣＪＫ単語１４２ｂ及び単語コード１４２ｃを対応付けて記憶する。読み仮名１４２ａは、ＣＪＫ単語１４２ｂの読み仮名である。単語コード１４２ｃは、ＣＪＫ単語の文字コード列とは異なり、ＣＪＫ単語を一意に表す、符号化されたコード（符号化コード）のことをいう。例えば、単語コード１４２ｃは、教師データ１４１を基にして、文書のデータ中に出現するＣＪＫ単語の出現頻度のより高いＣＪＫ単語に対して、より短く割り当てられるコードを示す。なお、辞書データ１４２は、あらかじめ生成される。
【００３９】
図２に戻って、文ＨＭＭデータ１４３は、文と単語とを対応付ける情報である。
【００４０】
図４は、文ＨＭＭのデータ構造の一例を示す図である。図４に示すように、文ＨＭＭデータ１４３は、単語を特定する単語コード１４３ａ及び複数の共起文ベクトル１４３ｂを対応付けて記憶する。単語コード１４３ａは、辞書データ１４２に登録された単語を特定するコードである。共起文ベクトル１４３ｂは、共起率と対応付けられる。共起文ベクトル１４３ｂは、単語コード１４３ａに対応する単語と共起する文から求められるベクトルである。共起率は、単語コード１４３ａに対応する単語と共起文ベクトル１４３ｂの文とが共起する確率を示すものである。言い換えれば、共起率は、該当する単語コード１４３ａに対応する単語と変換対象の文字列に応じた文とが共起する確率であるとも言える。例えば、変換対象の文字列に含まれる単語の単語コードが「１０８００１ｈ」である場合には、変換対象の文字列に応じた文と文（文ベクトル「Ｖ１０８Ｆ９７」の文）とが共起する可能性が「３７％」であることが示されている。なお、文ＨＭＭデータ１４３は、後述する文ＨＭＭ生成部１５１によって生成される。
【００４１】
図２に戻って、文字列データ１４４は、処理対象となる文書のデータである。例えば、文字列データ１４４は、ＣＪＫ文字で記載されたものとなる。一例として、文字列データ１４４には、「・・・着陸は困難だ。それに成功した。・・・」が記載される。
【００４２】
配列データ１４５は、文字列データ１４４に含まれる文字列のうち、辞書データ１４２に定義されたＣＪＫ単語の読み仮名を有する。なお、以降では、ＣＪＫ単語の読み仮名を単に単語と記載する場合がある。
【００４３】
図５は、配列データのデータ構造の一例を示す図である。図５に示すように、配列データ１４５は、各ＣＪＫ単語の読み仮名が＜ＵＳ＞により分けられている。なお、配列データ１４５の上側に示す数字は、配列データ１４５の先頭「０」からのオフセットを示す。また、オフセットの上側に示す数字は、配列データ１４５の先頭の単語からシーケンシャルに振られた単語のＮｏを示す。
【００４４】
図２に戻って、インデックスデータ１４６は、後述するように、インデックス１４６´をハッシュ化したものである。インデックス１４６´は、文字と、オフセットとを対応付けた情報である。オフセットは、配列データ１４５上に存在する文字の位置を示すものである。例えば、文字「せ」が、配列データ１４５の先頭からｎ１文字目に存在する場合には、インデックス１４６´の文字「せ」に対応する行（ビットマップ）において、オフセットｎ１の位置にフラグ「１」が立つ。
【００４５】
また、インデックス１４６´は、単語の「先頭」、「末尾」、＜ＵＳ＞の位置も、オフセットと対応付ける。例えば、単語「せいこう」の先頭は「せ」、末尾は「う」となる。単語「せいこう」の先頭「せ」が、配列データ１４５の先頭からｎ２文字目に存在する場合には、インデックス１４６´の先頭に対応する行において、オフセットｎ２の位置にフラグ「１」が立つ。単語「せんとう」の末尾「う」が、配列データ１４５の先頭からｎ３文字目に存在する場合には、インデックス１４６´の「末尾」に対応する行において、オフセットｎ３の位置にフラグ「１」が立つ。「＜ＵＳ＞」が、配列データ１４５の先頭からｎ４文字目に存在する場合には、インデックス１４６´の「＜ＵＳ＞」に対応する行において、オフセットｎ４の位置にフラグ「１」が立つ。
【００４６】
インデックス１４６´は、後述するようにハッシュ化され、インデックスデータ１４６として記憶部１４０に格納される。なお、インデックスデータ１４６は、後述するインデックス生成部１５２によって生成される。
【００４７】
図２に戻って、オフセットテーブル１４７は、インデックスデータ１４６の先頭のビットマップ、配列データ１４５及び辞書データ１４２から、各単語の先頭に対応するオフセットを記憶するテーブルである。なお、オフセットテーブル１４７は、例えば、インデックスデータ１４６を復元するときに生成される。
【００４８】
図６は、オフセットテーブルのデータ構造の一例を示す図である。図６に示すように、
オフセットテーブル１４７は、単語Ｎｏ１４７ａ、単語コード１４７ｂ及びオフセット１４７ｃを対応付けて記憶する。単語Ｎｏ１４７ａは、配列データ１４５上の各単語を先頭からシーケンシャルに振られたＮｏを表す。なお、単語Ｎｏ１４７ａは、「０」からの昇順に振られる数字で示す。単語コード１４７ｂは、辞書データ１４２の単語コード１４２ｃに対応する。オフセット１４７ｃは、配列データ１４５の先頭からの単語の「先頭」の位置（オフセット）を表す。例えば、単語コード「１０８００１ｈ」に対応する単語「せいこう」が、配列データ１４５上の先頭から１単語目に存在する場合には、単語Ｎｏとして「１」が設定される。単語コード「１０８００１ｈ」に対応する単語「せいこう」の先頭「せ」が配列データ１４５の先頭から６文字目に位置する場合には、オフセットとして「６」が設定される。
【００４９】
図２に戻って、静的辞書データ１４８は、単語と、静的コードとを対応付ける情報である。
【００５０】
動的辞書データ１４９は、静的辞書データ１４８で定義されていない単語（あるいは文字列）に動的コードを割り当てるための情報である。
【００５１】
図２に戻って、制御部１５０は、文ＨＭＭ生成部１５１、インデックス生成部１５２、単語候補抽出部１５３、文抽出部１５４及び単語推定部１５５を有する。制御部１５０は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって実現できる。また、制御部１５０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等のハードワイヤーロジックによっても実現できる。
【００５２】
文ＨＭＭ生成部１５１は、辞書データ１４２と、教師データ１４１とに基づき、文ＨＭＭデータ１４３を生成する。
【００５３】
例えば、文ＨＭＭ生成部１５１は、辞書データ１４２を基にして、教師データ１４１に含まれる各単語を符号化する。文ＨＭＭ生成部１５１は、教師データ１４１に含まれる複数の単語から順次単語を選択する。文ＨＭＭ生成部１５１は、選択した単語に応じた、教師データ１４１に含まれる文を特定し、特定した文の文ベクトルを算出する。文ＨＭＭ生成部１５１は、選択した単語と、特定した文の文ベクトルとの共起率を算出する。そして、文ＨＭＭ生成部１５１は、選択した単語の単語コードに対して、特定した文の文ベクトル及び共起率を対応付けて文ＨＭＭデータ１４３に格納する。文ＨＭＭ生成部１５１は、選択する単語を代えて上記処理を繰り返し実行することで、文ＨＭＭデータ１４３を生成する。
【００５４】
インデックス生成部１５２は、辞書データ１４２を用いて、文字列データ１４４に含まれる各単語におけるインデックスデータ１４６を生成する。
【００５５】
例えば、インデックス生成部１５２は、文字列データ１４４と、辞書データ１４２とを比較する。インデックス生成部１５２は、文字列データ１４４を先頭から走査し、辞書データ１４２に登録されたＣＪＫ単語１４２ｂにヒットした文字列の読み仮名を抽出する。インデックス生成部１５２は、ヒットした文字列の読み仮名を配列データ１４５に格納する。インデックス生成部１５２は、次にヒットした文字列の読み仮名を配列データ１４５に格納する場合には、先の文字列の次に＜ＵＳ＞を設定し、設定した＜ＵＳ＞の次に、ヒットした文字列の読み仮名を格納する。インデックス生成部１５２は、文字列データ１４４を操作し上記処理を繰り返し実行することで、配列データ１４５を生成する。
【００５６】
また、インデックス生成部１５２は、配列データ１４５を生成した後に、インデックス１４６´を生成する。インデックス生成部１５２は、配列データ１４５を先頭から走査し、ＣＪＫ文字とオフセット、ＣＪＫ文字列の先頭とオフセット、ＣＪＫ文字列の末尾とオフセット、＜ＵＳ＞とオフセットとを対応付けることで、インデックス１４６´を生成する。
【００５７】
また、インデックス生成部１５２は、ＣＪＫ文字列の先頭と単語Ｎｏとを対応付けることで、ＣＪＫ文字列の先頭の上位インデックスを生成する。これにより、インデックス生成部１５２は、単語Ｎｏ等の粒度に対応した上位インデックスを生成することで、この後のキーワードを抽出する際の抽出領域の絞り込みを高速化できる。
【００５８】
図７は、インデックスのデータ構造の一例を示す図である。図８は、上位インデックスのデータ構造の一例を示す図である。図７に示すように、インデックス１４６´は、各ＣＪＫ文字、＜ＵＳ＞、先頭、末尾に対応するビットマップ２１〜３２を有する。
【００５９】
例えば、配列データ１４５「・・・せいこう＜ＵＳ＞・・・せいこう＜ＵＳ＞・・・」の中のＣＪＫ文字「せ」、「い」、「こ」、「う」、・・・に対応するビットマップを、ビットマップ２１〜２４とする。図７では、他のＣＪＫ文字に対応するビットマップの図示は省略する。
【００６０】
＜ＵＳ＞に対応するビットマップをビットマップ３０とする。文字の「先頭」に対応するビットマップをビットマップ３１とする。文字の「末尾」に対応するビットマップをビットマップ３２とする。
【００６１】
例えば、図５に示した配列データ１４５において、ＣＪＫ文字「せ」が、配列データ１４５のオフセット「６、２４、・・」に存在している。このため、インデックス生成部１５２は、図７に示すインデックス１４６´のビットマップ２１のオフセット「６、２４、・・」にフラグ「１」を立てる。配列データ１４５は、他のＣＪＫ文字、＜ＵＳ＞についても同様に、フラグを立てる。
【００６２】
図５に示した配列データ１４５において、各ＣＪＫ単語の先頭が、配列データ１４５のオフセット「６、２４、・・」に存在している。このため、インデックス生成部１５２は、図７に示すインデックス１４６´のビットマップ３１のオフセット「６、２４、・・」にフラグ「１」を立てる。
【００６３】
図５に示した配列データ１４５において、各ＣＪＫ単語の末尾が、配列データ１４５のオフセット「９、２７、・・」に存在している。このため、インデックス生成部１５２は、図７に示すインデックス１４６´のビットマップ３２のオフセット「９、２７、・・」にフラグ「１」を立てる。
【００６４】
図８に示すように、インデックス１４６´は、ＣＪＫ文字列の先頭に対応する上位ビットマップを有する。「せ」に対応する上位ビットマップを上位ビットマップ４１とする。図５に示した配列データ１４５において、各ＣＪＫ単語の先頭「せ」が、配列データ１４５の単語Ｎｏ「１、４」に存在している。このため、インデックス生成部１５２は、図８に示すインデックス１４６´の上位ビットマップ４１の単語Ｎｏ「１、４」にフラグ「１」を立てる。
【００６５】
インデックス生成部１５２は、インデックス１４６´を生成すると、インデックス１４６´のデータ量を削減するため、インデックス１４６´をハッシュ化することで、インデックスデータ１４６を生成する。
【００６６】
図９は、インデックスのハッシュ化を説明するための図である。ここでは一例として、インデックスにビットマップ１０が含まれるものとし、かかるビットマップ１０をハッシュ化する場合について説明する。
【００６７】
例えば、インデックス生成部１５２は、ビットマップ１０から、底２９のビットマップ１０ａと、底３１のビットマップ１０ｂを生成する。ビットマップ１０ａは、ビットマップ１０に対して、オフセット２９ごとに区切りを設定し、設定した区切りを先頭とするフラグ「１」のオフセットを、ビットマップ１０ａのオフセット０〜２８のフラグで表現する。
【００６８】
インデックス生成部１５２は、ビットマップ１０のオフセット０〜２８までの情報を、ビットマップ１０ａにコピーする。インデックス生成部１５２は、ビットマップ１０ａの２９以降のオフセットの情報を下記のように処理する。
【００６９】
ビットマップ１０のオフセット「３５」にフラグ「１」が立っている。オフセット「３５」は、オフセット「２９＋６」であるため、インデックス生成部１５２は、ビットマップ１０ａのオフセット「６」にフラグ「（１）」を立てる。なお、オフセットの１番目を０としている。ビットマップ１０のオフセット「４２」にフラグ「１」が立っている。オフセット「４２」は、オフセット「２９＋１３」であるため、インデックス生成部１５２は、ビットマップ１０ａのオフセット「１３」にフラグ「（１）」を立てる。
【００７０】
ビットマップ１０ｂは、ビットマップ１０に対して、オフセット３１ごとに区切りを設定し、設定した区切りを先頭するフラグ「１」のオフセットを、ビットマップ１０ｂのオフセット０〜３０のフラグで表現する。
【００７１】
ビットマップ１０のオフセット「３５」にフラグ「１」が立っている。オフセット「３５」は、オフセット「３１＋４」であるため、インデックス生成部１５２は、ビットマップ１０ｂのオフセット「４」にフラグ「（１）」を立てる。なお、オフセットの１番目を０としている。ビットマップ１０のオフセット「４２」にフラグ「１」が立っている。オフセット「４２」は、オフセット「３１＋１１」であるため、インデックス生成部１５２は、ビットマップ１０ｂのオフセット「１１」にフラグ「（１）」を立てる。
【００７２】
インデックス生成部１５２は、上記処理を実行することで、ビットマップ１０からビットマップ１０ａ、１０ｂを生成する。このビットマップ１０ａ、１０ｂが、ビットマップ１０をハッシュ化した結果となる。
【００７３】
インデックス生成部１５２は、図７に示したビットマップ２１〜３２に対してハッシュ化を行うことで、ハッシュ化後のインデックスデータ１４６を生成する。図１０は、インデックスデータのデータ構造の一例を示す図である。例えば、図７に示したハッシュ化前のインデックス１４６´のビットマップ２１に対して、ハッシュ化を行うと、図１０に示したビットマップ２１ａ及びビットマップ２１ｂが生成される。図７に示したハッシュ化前のインデックス１４６´のビットマップ２２に対して、ハッシュ化を行うと、図１０に示したビットマップ２２ａ及びビットマップ２２ｂが生成される。図７に示したハッシュ化前のインデックス１４６´のビットマップ３０に対して、ハッシュ化を行うと、図１０に示したビットマップ３０ａ及びビットマップ３０ｂが生成される。図１０において、その他のハッシュ化されたビットマップに関する図示を省略する。
【００７４】
ここで、ハッシュ化されたビットマップを復元する処理について説明する。図１１は、ハッシュ化したインデックスを復元する処理の一例を説明するための図である。ここでは、一例として、ビットマップ１０ａとビットマップ１０ｂとを基にして、ビットマップ１０を復元する処理について説明する。ビットマップ１０、１０ａ、１０ｂは、図９で説明したものに対応する。
【００７５】
ステップＳ１０の処理について説明する。復元処理は、底２９のビットマップ１０ａを基にして、ビットマップ１１ａを生成する。ビットマップ１１ａのオフセット０〜２８のフラグの情報は、ビットマップ１０ａのオフセット０〜２８のフラグの情報と同様となる。ビットマップ１１ａのオフセット２９以降のフラグの情報は、ビットマップ１０ａのオフセット０〜２８のフラグの情報の繰り返しとなる。
【００７６】
ステップＳ１１の処理について説明する。復元処理は、底３１のビットマップ１０ｂを基にして、ビットマップ１１ｂを生成する。ビットマップ１１ｂのオフセット０〜３０のフラグの情報は、ビットマップ１０ｂのオフセット０〜３０のフラグの情報と同様となる。ビットマップ１１ｂのオフセット３１以降のフラグの情報は、ビットマップ１０ｂのオフセット０〜３０のフラグの情報の繰り返しとなる。
【００７７】
ステップＳ１２の処理について説明する。復元処理は、ビットマップ１１ａとビットマップ１１ｂとのＡＮＤ演算を実行することで、ビットマップ１０を生成する。図１１に示す例では、オフセット「０、５、１１、１８、２５、３５、４２」において、ビットマップ１１ａ及びビットマップ１１ｂのフラグが「１」となっている。このため、ビットマップ１０のオフセット「０、５、１１、１８、２５、３５、４２」のフラグが「１」となる。このビットマップ１０が、復元されたビットマップとなる。復元処理は、他のビットマップについても同様の処理を繰り返し実行することで、各ビットマップを復元し、インデックス１４６´を生成する。
【００７８】
図２に戻って、単語候補抽出部１５３は、インデックスデータ１４６を基にしてインデックス１４６´を生成し、インデックス１４６´を基にして単語候補を抽出する処理部である。図１２は、単語候補を抽出する処理の一例を説明するための図である。図１２に示す例では、文字又は文字列の入力確定を示す操作を受け付けた後、新たな文字列データを変換する操作を受け付けたとする。新たな文字列データは、変換対象の文字列データであり、「せいこうした」であるとする。そして、単語候補抽出部１５３は、変換対象の文字列データの１番目の文字から順に、該当する文字の上位のビットマップ、さらに下位のビットマップを、インデックスデータ１４６から読み出して、下記の処理を実行する。
【００７９】
まず、単語候補抽出部１５３は、インデックスデータ１４６から、先頭のビットマップを読み出し、読み出したビットマップを復元する。かかる復元処理は、図１１で説明したので、その説明を省略する。単語候補抽出部１５３は、復元した先頭のビットマップと、配列データ１４５と、辞書データ１４２とを用いて、オフセットテーブル１４７を生成する。例えば、復元した先頭のビットマップに「１」が立っているオフセットを特定する。一例として、オフセット「６」に「１」が立っている場合、単語候補抽出部１５３は、配列データ１４５を参照してオフセット「６」のＣＪＫ単語と単語Ｎｏを特定し、辞書データ１４２を参照して特定したＣＪＫ単語の単語コードを抽出する。そして、単語候補抽出部１５３は、単語Ｎｏ、単語コード及びオフセットを対応付けてオフセットテーブル１４７に追加する。単語候補抽出部１５３は、上記処理を繰り返し実行することで、オフセットテーブル１４７を生成する。
【００８０】
ステップＳ３０について説明する。単語候補抽出部１５３は、インデックスデータ１４６から、入力確定後の文字列データの１番目の文字「せ」の上位ビットマップを読み出し、読み出した上位ビットマップを復元した結果を上位ビットマップ６０とする。かかる復元処理は、図１１で説明したので、その説明を省略する。単語候補抽出部１５３は、上位ビットマップ６０のフラグ「１」が立っている単語Ｎｏを特定し、オフセットテーブル１４７を参照して、特定した単語Ｎｏのオフセットを特定する。上位ビットマップ６０では、単語Ｎｏ「１」にフラグ「１」が立っており、単語Ｎｏ「１」のオフセットが「６」であることを示す。
【００８１】
ステップＳ３１について説明する。単語候補抽出部１５３は、インデックスデータ１４６から、文字列データの１番目の文字「せ」のビットマップ、先頭のビットマップを読み出す。単語候補抽出部１５３は、読み出した文字「せ」のビットマップについて、オフセット「６」付近の領域を復元し、復元した結果をビットマップ８１とする。単語候補抽出部１５３は、読み出した先頭のビットマップについて、オフセット「６」付近の領域を復元し、復元した結果をビットマップ７０とする。一例として、オフセット「６」を含む底分のビット「０」〜「２９」の領域のみが復元される。
【００８２】
単語候補抽出部１５３は、文字「せ」のビットマップ８１と先頭のビットマップ７０とのＡＮＤ演算を実行することで、文字の先頭位置を特定する。文字「せ」のビットマップ８１と先頭のビットマップ７０とのＡＮＤ演算の結果をビットマップ７０Ａとする。ビットマップ７０Ａでは、オフセット「６」にフラグ「１」が立っており、オフセット「６」がＣＪＫ単語の先頭であることを示す。
【００８３】
単語候補抽出部１５３は、先頭と文字「せ」に対する上位ビットマップ６１を補正する。上位ビットマップ６１では、文字「せ」のビットマップ８１と先頭のビットマップ７０とのＡＮＤ演算の結果が「１」であるので、単語Ｎｏ「１」にフラグ「１」が立つ。
【００８４】
ステップＳ３２について説明する。単語候補抽出部１５３は、先頭のビットマップ７０Ａを左に１つシフトすることで、ビットマップ７０Ｂを生成する。単語候補抽出部１５３は、インデックスデータ１４６から、入力確定後の文字列データの２番目の文字「い」のビットマップを読み出す。単語候補抽出部１５３は、読み出した文字「い」のビットマップについて、オフセット「６」付近の領域を復元し、復元した結果をビットマップ８２とする。
【００８５】
単語候補抽出部１５３は、文字「い」のビットマップ８２と先頭のビットマップ７０ＢとのＡＮＤ演算を実行することで、単語Ｎｏ「１」に先頭から「せい」が存在するかを判定する。文字「い」のビットマップ８２と先頭のビットマップ７０ＢとのＡＮＤ演算の結果をビットマップ７０Ｃとする。ビットマップ７０Ｃでは、オフセット「７」にフラグ「１」が立っており、先頭Ｎｏ「１」に先頭から文字列「せい」が存在することを示す。
【００８６】
単語候補抽出部１５３は、先頭と文字列「せい」に対する上位ビットマップ６２を補正する。上位ビットマップ６２では、文字「い」のビットマップ８２と先頭のビットマップ７０ＢとのＡＮＤ演算の結果が「１」であるので、単語Ｎｏ「１」にフラグ「１」が立つ。すなわち、入力確定後の文字列データ「せい」は、単語Ｎｏ「１」が示す単語の先頭に存在していることがわかる。
【００８７】
そして、単語候補抽出部１５３は、文字列データの１番目の文字「せ」の上位ビットマップ６０から、フラグ「１」が立っている他の単語Ｎｏについても上記処理を繰り返し実行することで、先頭と文字列「せい」に対する上位ビットマップ６２を生成する（Ｓ３２Ａ）。すなわち、上位ビットマップ６２が生成されることで、入力確定後の文字列データに含まれる「せい」が、どの単語の先頭に存在しているかがわかる。つまり、単語候補抽出部１５３は、入力確定後の文字列データに含まれる「せ」を先頭に存在する単語候補を抽出する。なお、図１２では、単語候補抽出部１５３が、単語候補を抽出するために、入力確定後の文字列データに含まれる２文字の「せい」を用いたが、３文字の「せいこ」を用いても良いし、４文字の「せいこう」を用いても良い。
【００８８】
図２に戻って、文抽出部１５４は、入力確定後の文字列データに、意味が異なる複数の単語に対応する文字列が含まれている場合には、入力が確定した文又は文章から、入力確定後の文字列データに応じた特徴文データを抽出する。例えば、文抽出部１５４は、入力確定後の文字列データに、同音異義語である複数の単語に対応する文字列が含まれるか否かを判定する。一例として、文抽出部１５４は、入力確定後の文字列データに対する上位ビットマップ６２、オフセットテーブル１４７及び辞書データ１４２を用いて、単語候補抽出部１５３によって抽出される複数の単語候補が同音異義語であるか否かを判定する。そして、文抽出部１５４は、単語候補抽出部１５３によって抽出される複数の単語候補が同音異義語である場合には、入力が確定した文又は文章を記憶する記憶部１４０を参照して、変換する操作を受け付ける前に入力が確定した文を特徴文データとして抽出する。
【００８９】
単語推定部１５５は、特徴文データと、文ＨＭＭデータ１４３とを基にして、単語候補抽出部１５３によって抽出される単語候補から、かな漢字変換の候補となる単語を推定する。例えば、単語推定部１５５は、文抽出部１５４によって抽出された特徴文データから文ベクトルを算出する処理を行った後に、算出した文ベクトルと、文ＨＭＭデータ１４３とを基にして、単語を推定する。
【００９０】
ここで、単語推定部１５５が、文のベクトルを算出する処理の一例について、図１３を参照して説明する。図１３は、文のベクトルを算出する処理の一例を説明するための図である。図１３では、一例として、文ｘ１のベクトルｘＶｅｃ１を算出する処理について説明する。
【００９１】
例えば、文ｘ１には、単語ａ１〜単語ａｎが含まれている。単語推定部１５５は、静的辞書データ１４８及び動的辞書データ１４９を用いて、文ｘ１に含まれる各単語を符号化する。
【００９２】
一例として、単語推定部１５５は、単語が静的辞書データ１４８にヒットした場合には、単語の静的コードを特定し、特定した静的コードに単語を置き換えることで、符号化を行う。単語推定部１５５は、単語が静的辞書データ１４８にヒットしない場合には、動的辞書データ１４９を用いて、動的コードを特定する。例えば、単語推定部１５５は、単語が動的辞書データ１４９に未登録である場合には、単語を動的辞書データ１４９に登録して、登録位置に対応する動的コードを得る。単語推定部１５５は、単語が動的辞書データ１４９に登録済みである場合には、既に登録済みの登録位置に対応する動的コードを得る。単語推定部１５５は、特定した動的コードに単語を置き換えることで、符号化を行う。
【００９３】
図１３に示す例では、単語推定部１５５は、単語ａ１から単語ａｎを、符号ｂ１からｂｎに置き換えることで、符号化を行う。
【００９４】
そして、単語推定部１５５は、各単語の符号化を行った後に、Word2Vec技術に基づいて、各単語（各符号）の単語ベクトルを算出する。Word2Vec技術は、ある単語（符号）と、隣接する他の単語（符号）との関係に基づいて、各符号のベクトルを算出する処理を行うものである。図１３に示す例では、単語推定部１５５は、符号ｂ１から符号ｂｎの単語ベクトルＶｅｃ１〜Ｖｅｃｎを算出する。単語推定部１５５は、各単語ベクトルＶｅｃ１〜Ｖｅｃｎを集積することで、文ｘ１の文ベクトルｘＶｅｃ１を算出する。
【００９５】
図２に戻って、加えて、単語推定部１５５は、算出した文ベクトルと、文ＨＭＭデータ１４３とを基にして、単語候補抽出部１５３によって抽出された複数の単語候補の表示順序を決定する処理の一例について説明する。単語推定部１５５は、文ＨＭＭデータ１４３を参照して、共起文ベクトル１４３ｂのうち、算出した文ベクトルに応じた共起文ベクトル１４３ｂに基づき、単語候補抽出部１５３によって抽出された複数の単語候補の表示順序を決定する。
【００９６】
図１４は、単語を推定する処理の一例を説明するための図である。図１４に示す例では、単語候補抽出部１５３が、図１２のＳ３２Ａで説明したように、先頭と文字列「せい」に対する上位ビットマップ６２を生成したものとする。
【００９７】
図１４に示すステップＳ３３について説明する。文抽出部１５４は、先頭と文字列「せい」に対する上位ビットマップ６２に「１」が立っている単語Ｎｏを特定する。ここでは、単語Ｎｏ「１」及び単語Ｎｏ「４」にそれぞれフラグ「１」が立っているので、単語Ｎｏ「１」及び単語Ｎｏ「４」が特定される。そして、文抽出部１５４は、オフセットテーブル１４７から、特定した単語Ｎｏに対応する単語コードを取得する。ここでは、単語Ｎｏ「１」に対応する単語コードとして「１０８００１ｈ」が取得される。単語Ｎｏ「４」に対応する単語コードとして「１０８００４ｈ」が取得される。そして、文抽出部１５４は、辞書データ１４２から、取得した単語コードに対応する単語を特定する。ここでは、文抽出部１５４は、単語コード「１０８００１ｈ」に対応する単語として「成功」を特定し、単語コード「１０８００４ｈ」に対応する単語として「精巧」を特定する。特定した単語が、単語候補である。
【００９８】
加えて、文抽出部１５４は、特定した複数の単語候補の読み仮名が同じであり意味が異なるので、同音異義語であると判定する。文抽出部１５４は、入力が確定した文又は文章を記憶する記憶部１４０を参照して、変換する操作を受け付ける前に入力が確定した文「着陸は困難だ。」を抽出する。
【００９９】
そして、単語推定部１５５は、抽出された文の文ベクトルと、文ＨＭＭデータ１４３の中の、取得した複数の単語コードに対応するそれぞれの共起文ベクトルとを比較して、文ベクトルと一致又は類似する共起文ベクトル１４３ｂを特定する。ここでは、文ＨＭＭデータ１４３の中の強調部分の共起文ベクトル１４３ｂが、特定されたとする。
【０１００】
単語推定部１５５は、特定した共起文ベクトルの共起率を用いて、それぞれの共起単語の組み合わせについてスコア演算する。例えば、単語推定部１５５は、取得した複数の単語コードごとに、特定した共起文ベクトル１４３ｂの共起率を取得する。単語推定部１５５は、単語コードごとに取得した共起率を用いて、複数の単語コードの組み合わせでスコア演算する。
【０１０１】
単語推定部１５５は、スコア値が高い組み合わせで示される順序を複数の単語コードの表示順序として決定する。単語推定部１５５は、複数の単語コードが示す単語を、かな漢字変換候補として、決定した表示順序で選択可能に出力する。すなわち、単語推定部１５５は、入力確定後に変換する操作を受け付けた文字又は文字列のかな漢字変換候補を推定し、推定したかな漢字変換候補の表示順序を決定し、決定した表示順序で表示する。
【０１０２】
一例として、変換する操作を受け付けた文字又は文字列に応じた文の文ベクトルが、共起文ベクトル１４３ｂとして「Ｖ０１０８Ｆ９７」と一致又は類似し、共起文ベクトル１４３ｂとして「ｖｖｖｖｖ」と一致又は類似するとする。すると、単語推定部１５５は、これらの共起文ベクトル１４３ｂの共起率を用いて「成功」及び「精巧」の順の組合せを「精巧」及び「成功」の順の組合せより高いスコア値として演算する。単語推定部１５５は、スコア値の高い組合せの「成功」及び「精巧」の順序をこれらの単語の表示順序として決定する。
【０１０３】
これにより、単語推定部１５５は、かな漢字変換における文ＨＭＭのスコア演算において、入力確定後の文字列データに応じた文の文ベクトルを用いることで、変換候補の表示順序の精度を向上することができる。
【０１０４】
次に、本実施例に係る情報処理装置１００の処理手順の一例について説明する。
【０１０５】
図１５は、文ＨＭＭ生成部の処理手順を示すフローチャートである。図１５に示すように、情報処理装置１００の文ＨＭＭ生成部１５１は、形態素解析に用いられる辞書データ１４２と教師データ１４１とを受け付けると、辞書データ１４２を基にして、教師データ１４１に含まれる各単語を符号化する（ステップＳ１０１）。
【０１０６】
文ＨＭＭ生成部１５１は、教師データ１４１に含まれる各文から、文ベクトルをそれぞれ算出する(ステップＳ１０２)。
【０１０７】
文ＨＭＭ生成部１５１は、教師データ１４１に含まれる各単語に対する各文の共起情報を算出する（ステップＳ１０３）。
【０１０８】
文ＨＭＭ生成部１５１は、各単語の単語コードと、文ベクトルと、文の共起情報と、を含む文ＨＭＭデータ１４３を生成する（ステップＳ１０４）。すなわち、文ＨＭＭ生成部１５１は、単語の単語コードに対して、文の共起ベクトル及び共起率を対応付けて文ＨＭＭデータ１４３に格納する。
【０１０９】
図１６は、インデックス生成部の処理手順を示すフローチャートである。図１６に示すように、情報処理装置１００のインデックス生成部１５２は、文字列データ１４４と辞書データ１４２のＣＪＫ単語とを比較する（ステップＳ２０１）。
【０１１０】
インデックス生成部１５２は、ヒットした文字列（ＣＪＫ単語）を配列データ１４５に登録する（ステップＳ２０２）。インデックス生成部１５２は、配列データ１４５を基にして、各文字（ＣＪＫ文字）のインデックス１４６´を生成する（ステップＳ２０３）。インデックス生成部１５２は、インデックス１４６´をハッシュ化し、インデックスデータ１４６を生成する（ステップＳ２０４）。
【０１１１】
図１７は、単語候補抽出部の処理手順を示すフローチャートである。図１７に示すように、情報処理装置１００の単語候補抽出部１５３は、文字又は文字列の入力確定後、新たな文字又は文字列を受け付けたか否かを判定する（ステップＳ３０１）。新たな文字又は文字列を受け付けていないと判定した場合には（ステップＳ３０１；Ｎｏ）、単語候補抽出部１５３は、新たな文字又は文字列を受け付けるまで、判定処理を繰り返す。
【０１１２】
一方、新たな文字又は文字列を受け付けたと判定した場合には（ステップＳ３０１；Ｙｅｓ）、単語候補抽出部１５３は、一時領域ｎに１を設定する（ステップＳ３０２）。単語候補抽出部１５３は、ハッシュ化されたインデックスデータ１４６から、先頭からｎ番目の文字の上位ビットマップを復元する（ステップＳ３０３）。
【０１１３】
単語候補抽出部１５３は、オフセットテーブル１４７を参照して、上位ビットマップから「１」が存在する単語Ｎｏに対応するオフセットを特定する（ステップＳ３０４）。そして、単語候補抽出部１５３は、先頭からｎ番目の文字に対応するビットマップの、特定したオフセット付近の領域を復元し、第１ビットマップに設定する（ステップＳ３０５）。単語候補抽出部１５３は、先頭ビットマップの、特定したオフセット付近の領域を復元し、第２ビットマップに設定する（ステップＳ３０６）。
【０１１４】
単語候補抽出部１５３は、第１ビットマップと第２ビットマップとを「ＡＮＤ演算」し、先頭からｎ番目までの文字又は文字列の上位ビットマップを補正する（ステップＳ３０７）。例えば、単語候補抽出部１５３は、ＡＮＤ結果が「０」である場合には、先頭からｎ番目までの文字の上位ビットマップの単語Ｎｏに対応する位置にフラグ「０」を設定することで、上位ビットマップを補正する。
【０１１５】
そして、単語候補抽出部１５３は、受け付けた文字が終了か否かを判定する（ステップＳ３０８）。受け付けた文字が終了であると判定した場合には（ステップＳ３０８；Ｙｅｓ）、単語候補抽出部１５３は、抽出結果を記憶部１４０に保存する（ステップＳ３０９）。そして、単語候補抽出部１５３は、単語候補抽出処理を終了する。一方、受け付けた文字が終了でないと判定した場合には（ステップＳ３０８；Ｎｏ）、単語候補抽出部１５３は、第１ビットマップと、第２ビットマップとを「ＡＮＤ演算」したビットマップを新たな第１ビットマップに設定する（ステップＳ３１０）。
【０１１６】
単語候補抽出部１５３は、第１ビットマップを左に１ビット分シフトする（ステップＳ３１１）。単語候補抽出部１５３は、一時領域ｎに１を加算する（ステップＳ３１２）。単語候補抽出部１５３は、先頭からｎ番目の文字に対応するビットマップのオフセット付近の領域を復元し、新たな第２ビットマップに設定する（ステップＳ３１３）。そして、単語候補抽出部１５３は、第１ビットマップと第２ビットマップとのＡＮＤ演算をすべく、ステップＳ３０７に移行する。
【０１１７】
図１８は、単語推定部の処理手順を示すフローチャートである。ここでは、単語候補抽出部１５３によって抽出された抽出結果として、例えば、入力確定後に新たに受け付けた文字列の先頭からｎ番目までの文字に対する上位ビットマップが保存されているとする。
【０１１８】
まず、情報処理装置１００の文抽出部１５４は、入力確定後に新たに受け付けた文字列に対する上位ビットマップを用いて、複数の単語候補が同音異義語であると判定したとする。
【０１１９】
すると、情報処理装置１００の文抽出部１５４は、入力確定した文章又は文から、新たに受け付けた文字列に応じた特徴文データを抽出する（ステップＳ４０１）。例えば、文抽出部１５４は、入力確定した文又は文章を記憶する記憶部１４０を参照して、新たに受け付けた文字列の直前の文を特徴文データとして抽出する。
【０１２０】
文抽出部１５４は、特徴文データに含まれる文の文ベクトルを算出する（ステップＳ４０２）。なお、文ベクトルの算出方法は、図１３で説明したとおりである。
【０１２１】
情報処理装置１００の単語推定部１５５は、文ＨＭＭデータ１４３に基づいて、抽出された複数の単語候補に対する共起情報を取得する（ステップＳ４０３）。例えば、単語推定部１５５は、新たに受け付けた文字列に対する上位ビットマップに「１」が立っている複数の単語Ｎｏを特定し、特定した複数の単語Ｎｏに対するそれぞれの単語コードをオフセットテーブル１４７から取得する。そして、単語推定部１５５は、取得した複数の単語コードに対応する共起文ベクトル及び共起率を取得する。
【０１２２】
単語推定部１５５は、文ベクトルと各単語候補の共起情報とにより、各単語候補の組合せについてスコア演算する（ステップＳ４０４）。例えば、単語推定部１５５は、算出した文ベクトルと、文ＨＭＭデータ１４３の中の、取得した複数の単語コードに対応するそれぞれの共起文ベクトルを比較して、文ベクトルと一致又は類似する共起文ベクトルを特定する。単語推定部１５５は、取得した複数の単語コードごとに、特定した共起文ベクトルの共起率を取得する。単語推定部１５５は、単語コードごとに取得した共起率を用いて、取得した複数の単語コードの組み合わせについてスコア演算する。
【０１２３】
単語推定部１５５は、スコア値の高い組合せで示される順序で、かな漢字変換の候補を出力する（ステップＳ４０５）。例えば、単語推定部１５５は、スコア値が高い組み合わせで示される順序で、組み合わせに対する単語コードが示すＣＪＫ単語をかな漢字変換の候補として選択可能に表示部１３０に対して表示する。
【０１２４】
なお、実施例では、文抽出部１５４は、入力確定後の文字列データに、意味が異なる複数の単語に対応する文字列が含まれている場合には、入力が確定した文又は文章から、入力確定後の文字列データに応じた文を特徴文データとして抽出する。そして、単語推定部１５５は、特徴文データの文ベクトルと、文ＨＭＭデータ１４３とを基にして、単語候補抽出部１５３によって抽出された単語候補の表示順序を決定する。しかしながら、文抽出部１５４が抽出するデータは、文データでなくても良く、複数の文データを含む文章データであっても良い。かかる場合には、文抽出部１５４は、入力確定後の文字列データに応じた文章データを特徴文章データとして抽出する。そして、単語推定部１５５は、特徴文章データの文章ベクトルと、文章ＨＭＭデータ１４３´とを基にして、単語候補抽出部１５３によって抽出された単語候補の表示順序を推定すれば良い。ここでいう文章ＨＭＭデータ１４３´は、単語と、複数の共起文章ベクトルとを対応付ければ良い。
【０１２５】
［実施例の効果］
次に、本実施例に係る情報処理装置１００の効果について説明する。情報処理装置１００は、テキストデータを変換する操作を受け付けると、テキストデータに、意味が異なる複数の単語に対応する単語テキストが含まれるか否かを判定する。情報処理装置１００は、単語テキストが含まれる場合、入力が確定した確定文章を記憶する第１の記憶部を参照して、操作を受け付ける前に入力が確定した確定文章を取得するとともに、複数の単語それぞれに対する文章の共起情報を複数の単語それぞれに対応付けて記憶する文ＨＭＭデータ１４３を参照して、文章の共起情報のうち、取得した確定文章に応じた文章の共起情報に基づき、複数の単語の表示順序を決定する。情報処理装置１００は、複数の単語を、変更候補として、決定した表示順序で選択可能に表示する。かかる構成によれば、情報処理装置１００は、入力が確定した確定文章との共起関係に基づいて、変換候補の単語の表示順序を決定するので、変換候補の単語の表示順序の精度を向上することができる。この結果、情報処理装置１００は、選択される可能性に応じた順序で変換候補の単語を表示することができる。
【０１２６】
また、情報処理装置１００は、文ＨＭＭデータ１４３を参照して、単語テキストに対応する複数の単語に対する文章の共起情報のうち、取得した確定文章と類似する文章の共起情報に基づき、複数の単語の表示順序を決定する。かかる構成によれば、情報処理装置１００は、確定文章と、確定文章と類似する文章との共起関係に基づいて、変換候補の単語の表示順序を決定することで、変換候補の単語の表示順位の精度を向上することができる。
【０１２７】
次に、上記実施例に示した情報処理装置１００と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図１９は、情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【０１２８】
図１９に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る読み取り装置２０４と、有線又は無線ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７とを有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【０１２９】
ハードディスク装置２０７は、文ＨＭＭ生成プログラム２０７ａ、インデックス生成プログラム２０７ｂ、単語候補抽出プログラム２０７ｃ、文抽出プログラム２０７ｄ及び単語推定プログラム２０７ｅを有する。ＣＰＵ２０１は、文ＨＭＭ生成プログラム２０７ａ、インデックス生成プログラム２０７ｂ、単語候補抽出プログラム２０７ｃ、文抽出プログラム２０７ｄ及び単語推定プログラム２０７ｅを読み出してＲＡＭ２０６に展開する。
【０１３０】
文ＨＭＭ生成プログラム２０７ａは、文ＨＭＭ生成プロセス２０６ａとして機能する。インデックス生成プログラム２０７ｂは、インデックス生成プロセス２０６ｂとして機能する。単語候補抽出プログラム２０７ｃは、単語候補抽出プロセス２０６ｃとして機能する。文抽出プログラム２０７ｄは、文抽出プロセス２０６ｄとして機能する。単語推定プログラム２０７ｅは、単語推定プロセス２０６ｅとして機能する。
【０１３１】
文ＨＭＭ生成プロセス２０６ａの処理は、文ＨＭＭ生成部１５１の処理に対応する。インデックス生成プロセス２０６ｂの処理は、インデックス生成部１５２の処理に対応する。単語候補抽出プロセス２０６ｃの処理は、単語候補抽出部１５３の処理に対応する。文抽出プロセス２０６ｄの処理は、文抽出部１５４の処理に対応する。単語推定プロセス２０６ｅの処理は、単語推定部１５５の処理に対応する。
【０１３２】
なお、各プログラム２０７ａ、２０７ｂ、２０７ｃ、２０７ｄ、２０７ｅについては、必ずしも最初からハードディスク装置２０７に記憶させておかなくても良い。たとえば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００が各プログラム２０７ａ、２０７ｂ、２０７ｃ、２０７ｄ、２０７ｅを読み出して実行するようにしても良い。
【符号の説明】
【０１３３】
１００  情報処理装置
１１０  通信部
１２０  入力部
１３０  表示部
１４０  記憶部
１４１  教師データ
１４２  辞書データ
１４３  文ＨＭＭデータ
１４４  文字列データ
１４５  配列データ
１４６  インデックスデータ
１４７  オフセットテーブル
１４８  静的辞書データ
１４９  動的辞書データ
１５０  制御部
１５１  文ＨＭＭ生成部
１５２  インデックス生成部
１５３  単語候補抽出部
１５４  文抽出部
１５５  単語推定部
【図１】
2019159826.tif 000003
【図２】
2019159826.tif 000004
【図３】
2019159826.tif 000005
【図４】
2019159826.tif 000006
【図５】
2019159826.tif 000007
【図６】
2019159826.tif 000008
【図７】
2019159826.tif 000009
【図８】
2019159826.tif 000010
【図９】
2019159826.tif 000011
【図１０】
2019159826.tif 000012
【図１１】
2019159826.tif 000013
【図１２】
2019159826.tif 000014
【図１３】
2019159826.tif 000015
【図１４】
2019159826.tif 000016
【図１５】
2019159826.tif 000017
【図１６】
2019159826.tif 000018
【図１７】
2019159826.tif 000019
【図１８】
2019159826.tif 000020
【図１９】
2019159826.tif 000021