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