(57)【要約】【課題】複数の文で構成される文章を音声認識する場合に、音声認識の精度を向上する。【解決手段】情報処理装置１００は、複数の文を有する文章に対する音素列を受け付け、受け付けた音素列に含まれる特定の音素又は音素列に応じた文を特定する。情報処理装置１００は、単語に対する文の共起情報を該単語に対応付けて記憶する文ＨＭＭデータ１４３を参照して、単語のうち、特定した文の共起情報が基準を満たす単語を特定する。情報処理装置１００は、受け付けた音素列に含まれる特定の音素又は音素列を、特定した単語に変更することにより、受け付けた音素列に応じた文章を生成し、生成した文章を出力する。【選択図】図２
2019159118.tif 000002
【特許請求の範囲】
【請求項１】
複数の文を有する文章に対する音素列を受け付け、
受け付けた前記音素列に含まれる特定の音素又は音素列に応じた文を特定し、
単語に対する文の共起情報を該単語に対応付けて記憶する記憶部を参照して、前記単語のうち、特定した前記文の共起情報が基準を満たす単語を特定し、
受け付けた前記音素列に含まれる特定の音素又は音素列を、特定した前記単語に変更することにより、受け付けた前記音素列に応じた文章を生成し、
生成した前記文章を出力する、
処理をコンピュータに実行させることを特徴とする出力プログラム。
【請求項２】
前記単語を特定する処理は、音声解析及び形態素解析に用いられる共通の辞書データに登録された単語の音素表記に含まれる各音素符号と、前記音素表記の先頭の音素符号と、前記音素表記の末尾の音素符号と、のそれぞれの音素符号の相対位置を示すインデックス情報に基づき、前記辞書データに登録された単語の音素表記のうち、前記特定の音素又は音素列に含まれる音素表記を特定し、特定した音素表記に対応する単語候補を特定し、前記記憶部に記憶された情報を参照して、特定した単語候補から、前記文の共起情報が基準を満たす単語を特定する
処理を実行させることを特徴とする請求項１に記載の出力プログラム。
【請求項３】
前記文の共起情報は、前記文に応じたベクトル情報を含む情報であることを特徴とする請求項１又は請求項２に記載の出力プログラム。
【請求項４】
前記音素列に含まれる特定の音素又は音素列は、同音意義語に対する音素又は音素列であることを特徴とする請求項１又は請求項２に記載の出力プログラム。
【請求項５】
複数の文を有する文章に対する音素列を受け付ける受付部と、
前記受付部によって受け付けられた前記音素列に含まれる特定の音素又は音素列に応じた文を特定する第１の特定部と、
単語に対する文の共起情報を該単語に対応付けて記憶する記憶部を参照して、前記単語のうち、特定した前記文の共起情報が基準を満たす単語を特定する第２の特定部と、
前記受付部によって受け付けられた前記音素列に含まれる特定の音素又は音素列を、前記第２の特定部によって特定された前記単語に変更することにより、受け付けた前記音素列に応じた文章を生成する生成部と、
前記生成部によって生成された前記文章を出力する出力部と、
を有することを特徴とする情報処理装置。
【請求項６】
コンピュータが、
複数の文を有する文章に対する音素列を受け付け、
受け付けた前記音素列に含まれる特定の音素又は音素列に応じた文を特定し、
単語に対する文の共起情報を該単語に対応付けて記憶する記憶部を参照して、前記単語のうち、特定した前記文の共起情報が基準を満たす単語を特定し、
受け付けた前記音素列に含まれる特定の音素又は音素列を、特定した前記単語に変更することにより、受け付けた前記音素列に応じた文章を生成し、
生成した前記文章を出力する、
処理を実行することを特徴とする出力制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、出力プログラム等に関する。
【背景技術】
【０００２】
従来、音声認識では、音素情報が含まれた単語辞書に加え、音素ＨＭＭ（Hidden  Markov  Model）と単語ＨＭＭが使用される。音素ＨＭＭとは、例えば、音素に対する音素の共起情報を音素に対応付けて記憶したものである。単語ＨＭＭとは、例えば、単語に対する単語の共起情報を単語に対応付けて記憶したものである。音声認識では、共起情報スペクトラム分析から得られる音素をもとに、まず、音素ＨＭＭにより音素の最尤推定を行う。次に、木構造のインデックスを介して音素で連結された単語辞書を参照し、単語を推定する。さらに、単語ＨＭＭにより、音声認識の精度の向上を図っている（例えば、特許文献１，２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−０５５０２０号公報
【特許文献２】特開２０１１−１８０５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、複数の文で構成される文章を音声認識する場合に、音声認識の精度が低下する場合があるという問題がある。
【０００５】
例えば、複数の文では、繰り返し出現する名詞を代名詞に置き換えて表現されることがある。代名詞が使用されると、代名詞の後に存在する単語を音声認識する場合、同音だが別の意味の単語（同音異義語）に誤って認識されることがある。すなわち、音声認識では、単語ＨＭＭを用いて、文中の共起する単語をもとに同音異義語を最尤推定する。しかし、同音異義語に共起する単語が代名詞に置き換えられた場合には、単語ＨＭＭにより推定することができない。したがって、複数の文で構成される文章を音声認識する場合には、単語ＨＭＭを用いても、音声認識の精度が低下する場合がある。
【０００６】
１つの側面では、複数の文で構成される文章を音声認識する場合に、音声認識の精度を向上することを目的とする。
【課題を解決するための手段】
【０００７】
第１の案では、出力プログラムは、複数の文を有する文章に対する音素列を受け付け、受け付けた前記音素列に含まれる特定の音素又は音素列に応じた文を特定し、単語に対する文の共起情報を該単語に対応付けて記憶する記憶部を参照して、前記単語のうち、特定した前記文の共起情報が基準を満たす単語を特定し、受け付けた前記音素列に含まれる特定の音素又は音素列を、特定した前記単語に変更することにより、受け付けた前記音素列に応じた文章を生成し、生成した前記文章を出力する、処理をコンピュータに実行させる。
【発明の効果】
【０００８】
１つの態様によれば、複数の文で構成される文章を音声認識する場合に、音声認識の精度を向上することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施例に係る情報処理装置の処理の一例を説明するための図である。
【図２】図２は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
【図３】図３は、辞書データのデータ構造の一例を示す図である。
【図４Ａ】図４Ａは、文ＨＭＭのデータ構造の一例を示す図である。
【図４Ｂ】図４Ｂは、音素ＨＭＭのデータ構造の一例を示す図である。
【図５】図５は、配列データのデータ構造の一例を示す図である。
【図６】図６は、オフセットテーブルのデータ構造の一例を示す図である。
【図７】図７は、インデックスのデータ構造の一例を示す図である。
【図８】図８は、上位インデックスのデータ構造の一例を示す図である。
【図９】図９は、インデックスのハッシュ化を説明するための図である。
【図１０】図１０は、インデックスデータのデータ構造の一例を示す図である。
【図１１】図１１は、ハッシュ化したインデックスを復元する処理の一例を説明するための図である。
【図１２】図１２は、単語候補を抽出する処理の一例を説明するための図（１）である。
【図１３】図１３は、単語候補を抽出する処理の一例を説明するための図（２）である。
【図１４】図１４は、文のベクトルを算出する処理の一例を説明するための図である。
【図１５】図１５は、単語を推定する処理の一例を説明するための図である。
【図１６】図１６は、文ＨＭＭ生成部の処理手順を示すフローチャートである。
【図１７Ａ】図１７Ａは、音素ＨＭＭ生成部の処理手順を示すフローチャートである。
【図１７Ｂ】図１７Ｂは、音素推定部の処理手順を示すフローチャートである。
【図１８】図１８は、インデックス生成部の処理手順を示すフローチャートである。
【図１９】図１９は、単語候補抽出部の処理手順を示すフローチャートである。
【図２０】図２０は、単語推定部の処理手順を示すフローチャートである。
【図２１】図２１は、情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示する出力プログラム、情報処理装置及び出力制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１１】
［実施例に係る特定処理］
図１は、本実施例に係る情報処理装置の一例を説明するための図である。図１に示すように、情報処理装置は、音声認識に関し、検索対象の音素表記データＦ１を取得すると、インデックス１４７´と、文ＨＭＭデータ１４３とを基にして、音素表記データＦ１に含まれる特定の音素列に対応する単語Ｆ３を最尤推定する。情報処理装置は、検索対象の音素表記データＦ１に含まれる特定の音素列を、最尤推定した単語Ｆ３に変換して、検索対象の音素表記データＦ１に応じた文章Ｆ４を出力する。ここでいう特定の音素列とは、発音が同じ且つ意味が異なる単語である同音異義語の音素列のことをいう。
【００１２】
検索対象の音素表記データＦ１及び後述する音素表記データ１４５は、音素符号の符号列で記載されたデータである。一例として、単語が「成功」や「精巧」である場合、音素表記は、「ｓｅｉｋｏ」となり、「ｓ」、「ｅ」、「ｉ」、「ｋ」、「ｏ」のそれぞれが音素符号となる。なお、音素符号は、音素記号と同義である。
【００１３】
また、検索対象の音素表記データＦ１及び後述する音素表記データ１４５には、「文章」が含まれる。文章には、複数の「文」から成り立つものである。例えば、文章「・・・着陸は困難だ。それに成功した。・・・」には、「ｃｈａｋｕｒｉｋｕｗａｋｏＮｎａＮｄａ」（着陸は困難だ）、「ｓｏｒｅｎｉｓｅｉｋｏｓｈｉｔａ」（それに成功した）が含まれる。
【００１４】
まず、情報処理装置が、音素表記データ１４５からインデックス１４７´を生成する処理について説明する。
【００１５】
例えば、情報処理装置は、音素表記データ１４５と、辞書データ１４２とを比較する。辞書データ１４２は、単語（形態素）を音素表記と対応付けて定義したデータである。辞書データ１４２は、形態素解析に用いられる辞書データであるとともに、音声認識に用いられる辞書データである。
【００１６】
情報処理装置は、音素表記データ１４５を先頭から走査し、辞書データ１４２に定義された音素表記にヒットした音素符号列を抽出し、配列データ１４６に格納する。
【００１７】
配列データ１４６は、音素表記データ１４５に含まれる音素符号列のうち、辞書データ１４２に定義された音素符号列の音素表記を有する。各音素表記の区切りには、＜ＵＳ（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技術は、ある単語（符号）と、隣接する他の単語（符号）との関係に基づいて、各符号のベクトルを算出する処理を行うものである。図１４に示す例では、単語推定部１５７は、符号ｂ１から符号ｂｎの単語ベクトルＶｅｃ１〜Ｖｅｃｎを算出する。単語推定部１５７は、各単語ベクトルＶｅｃ１〜Ｖｅｃｎを集積することで、文ｘ１の文ベクトルｘＶｅｃ１を算出する。
【０１１２】
続いて、単語推定部１５７は、文ベクトルと、文ＨＭＭデータ１４３とを基にして、抽出された単語候補から単語を推定する処理の一例について説明する。単語推定部１５７は、文ベクトルと、文ＨＭＭデータ１４３の共起文ベクトルとを比較して、文ベクトルと一致する（あるいは類似する）共起文ベクトルを特定する。なお、単語推定部１５７は、文ベクトルと、文ＨＭＭデータ１４３との距離が閾値未満となる共起文ベクトルを、一致する共起文ベクトルとして特定しても良い。
【０１１３】
単語推定部１５７は、特定した共起文ベクトルに対応付けられた単語を特定（推定）する。この後、単語推定部１５７は、検索対象の音素表記データに含まれる同音異義語の音素表記を、特定した単語に変更することにより、検索対象の音素表記データに応じた文章を生成する。そして、単語推定部１５７は、生成した文章を出力する。
【０１１４】
図１５は、単語を推定する処理の一例を説明するための図である。図１５に示す例では、単語候補抽出部１５５が、図１３のＳ３６Ａで説明したように、先頭と音素符号列「ｓ」「ｅ」「ｉ」「ｋ」「ｏ」に対する上位ビットマップ６５を生成したものとする。
【０１１５】
図１５に示すステップＳ３７について説明する。単語推定部１５７は、先頭と音素符号列「ｓ」「ｅ」「ｉ」「ｋ」「ｏ」に対する上位ビットマップ６５に「１」が立っている単語Ｎｏを特定する。ここでは、単語Ｎｏ「１」及び単語Ｎｏ「４」にそれぞれフラグ「１」が立っているので、単語Ｎｏ「１」及び単語Ｎｏ「４」が特定される。そして、単語推定部１５７は、オフセットテーブル１４８から、特定した単語Ｎｏに対応する単語コードを取得する。ここでは、単語Ｎｏ「１」に対応する単語コードとして「１０８００１ｈ」が取得される。単語Ｎｏ「４」に対応する単語コードとして「１０８００４ｈ」が取得される。そして、単語推定部１５７は、辞書データ１４２から、取得した単語コードに対応する単語を特定する。すなわち、単語推定部１５７は、単語コード「１０８００１ｈ」に対応する単語として「成功」を特定し、単語コード「１０８００４ｈ」に対応する単語として「精巧」を特定する。
【０１１６】
加えて、単語推定部１５７は、文ベクトルと、文ＨＭＭデータ１４３の中の取得した単語コードに対応する共起文ベクトルを比較して、文ベクトルと一致する（あるいは類似する）共起文ベクトルを特定する。単語推定部１５７は、特定した共起文ベクトルに対応付けられた単語コードが示す単語を特定（推定）する。ここでは、単語推定部１５７は、文ベクトルと共起する文の文ベクトルが「Ｖ１０８Ｆ９７」である場合には、「成功」を特定（推定）する。
【０１１７】
単語推定部１５７は、文ベクトルと一致する共起文ベクトルが複数存在する場合には、共起率が最大となる共起文ベクトルを選択しても良いし、その他の選択ポリシーに基づいて、共起文ベクトルを選択しても良い。
【０１１８】
これにより、単語推定部１５７は、検索対象の音素表記データに含まれる音素表記が同音異義語である場合に、この音素表記に応じた文の文ベクトルと文ＨＭＭとを用いることで、この音素表記に対応する単語候補のうち適切な単語を推定できる。この結果、単語推定部１５７は、音声認識の精度を向上することができる。ここでは、同音異義語の音素表記が「ｓ」「ｅ」「ｉ」「ｋ」「ｏ」であった場合に、「成功」及び「精巧」等が単語候補として抽出される。ここでは、単語推定部１５７は、音素表記「ｓ」「ｅ」「ｉ」「ｋ」「ｏ」を含む文の前の文の文ベクトルと文ＨＭＭとを用いることで、単語候補「成功」及び「精巧」から適切な単語「成功」を推定することで、音声認識の精度を向上することができる。
【０１１９】
次に、本実施例に係る情報処理装置１００の処理手順の一例について説明する。
【０１２０】
図１６は、文ＨＭＭ生成部の処理手順を示すフローチャートである。図１６に示すように、情報処理装置１００の文ＨＭＭ生成部１５１は、形態素解析に用いられる辞書データ１４２と教師データ１４１とを受け付けると、辞書データ１４２を基にして、教師データ１４１に含まれる各単語を符号化する（ステップＳ１０１）。
【０１２１】
文ＨＭＭ生成部１５１は、教師データ１４１に含まれる各文から、文ベクトルをそれぞれ算出する(ステップＳ１０２)。
【０１２２】
文ＨＭＭ生成部１５１は、教師データ１４１に含まれる各単語に対する各文の共起情報を算出する（ステップＳ１０３）。
【０１２３】
文ＨＭＭ生成部１５１は、各単語の単語コードと、文ベクトルと、文の共起情報と、を含む文ＨＭＭデータ１４３を生成する（ステップＳ１０４）。すなわち、文ＨＭＭ生成部１５１は、単語の単語コードに対して、文の共起ベクトル及び共起率を対応付けて文ＨＭＭデータ１４３に格納する。
【０１２４】
図１７Ａは、音素ＨＭＭ生成部の処理手順を示すフローチャートである。なお、図１７Ａで示される音素は、音素符号に対応する。図１７Ａに示すように、情報処理装置１００の音素ＨＭＭ生成部１５２は、音素データを受け付けると、音素データを基にして、各単語に含まれる各音素を抽出する（ステップＳ４０１）。
【０１２５】
音素ＨＭＭ生成部１５２は、各音素に対する他の音素の共起情報を算出する（ステップＳ４０２）。
【０１２６】
音素ＨＭＭ生成部１５２は、各音素と、他の音素の共起情報と、を含む音素ＨＭＭデータ１４４を生成する（ステップＳ４０３）。すなわち、音素ＨＭＭ生成部１５２は、各音素と、他の音素及び共起率とを、含む音素ＨＭＭデータ１４４を生成する。
【０１２７】
図１７Ｂは、音素推定部の処理手順を示すフローチャートである。なお、図１７Ｂで示される音素は、音素符号に対応する。図１７Ｂに示すように、情報処理装置１００の音素推定部１５３は、音素信号（音素データ）を受け付けると、音素データをフーリエ変換し、スペクトル分析し、音声特徴を抽出する（ステップＳ５０１）。
【０１２８】
音素推定部１５３は、抽出した音声特徴を基に音素を推定する（ステップＳ５０２）。音素推定部１５３は、音素ＨＭＭデータ１４４を用いて、推定された音素を確認する（ステップＳ５０３）。これは、推定された音素符号の精度の向上を図るためである。
【０１２９】
図１８は、インデックス生成部の処理手順を示すフローチャートである。図１８に示すように、情報処理装置１００のインデックス生成部１５４は、音素表記データ１４５と辞書データ１４２に登録された音素表記とを比較する（ステップＳ２０１）。
【０１３０】
インデックス生成部１５４は、辞書データ１４２に登録された音素表記１４２ａにヒットした音素符号列を配列データ１４６に登録する（ステップＳ２０２）。インデックス生成部１５４は、配列データ１４６を基にして、各音素符号のインデックス１４７´を生成する（ステップＳ２０３）。インデックス生成部１５４は、インデックス１４７´をハッシュ化し、インデックスデータ１４７を生成する（ステップＳ２０４）。
【０１３１】
図１９は、単語候補抽出部の処理手順を示すフローチャートである。図１９に示すように、情報処理装置１００の単語候補抽出部１５５は、検索対象の音素表記データを受け付けたか否かを判定する（ステップＳ３０１）。検索対象の音素表記データを受け付けていないと判定した場合には（ステップＳ３０１；Ｎｏ）、単語候補抽出部１５５は、検索対象の音素表記データを受け付けるまで、判定処理を繰り返す。
【０１３２】
一方、検索対象の音素表記データを受け付けたと判定した場合には（ステップＳ３０１：Ｙｅｓ）、単語候補抽出部１５５は、音素表記データについて、音素推定処理を実行する（ステップＳ３０１Ａ）。なお、音素推定処理は、図１７Ｂで示した音素推定部１５３の処理である。そして、単語候補抽出部１５５は、音素推定処理が実行されると、実行結果の音素符号列に含まれる特定の音素符号列を選択する（ステップＳ３０１Ｂ）。ここでいう選択される特定の音素符号列は、同音異義語の音素符号列のことをいう。かかる選択される特定の音素符号列について、以下のように、単語候補抽出処理を行う。
【０１３３】
単語候補抽出部１５５は、一時領域ｎに１を設定する（ステップＳ３０２）。なお、ｎは、選択された特定の音素符号列の先頭からの位置を表す。単語候補抽出部１５５は、ハッシュ化されたインデックスデータ１４７から、先頭の上位ビットマップを復元する（ステップＳ３０３）。なお、ここでは、オフセットテーブル１４８は、生成されているものとする。
【０１３４】
単語候補抽出部１５５は、オフセットテーブル１４８を参照して、先頭の上位ビットマップから「１」が存在する単語Ｎｏに対応するオフセットを特定する（ステップＳ３０４）。そして、単語候補抽出部１５５は、先頭のビットマップの、特定したオフセット付近の領域を復元し、第１ビットマップに設定する（ステップＳ３０５）。単語候補抽出部１５５は、選択された特定の音素符号列の先頭からｎ番目の文字に対応するビットマップの、特定したオフセット付近の領域を復元し、第２ビットマップに設定する（ステップＳ３０６）。
【０１３５】
単語候補抽出部１５５は、第１ビットマップと第２ビットマップとを「ＡＮＤ演算」し、選択された特定の音素符号列の先頭からｎ番目までの音素符号又は音素符号列の上位ビットマップを補正する（ステップＳ３０７）。例えば、単語候補抽出部１５５は、ＡＮＤ演算の結果が「０」である場合には、選択された特定の音素符号列の先頭からｎ番目までの音素符号又は音素符号列の上位ビットマップの単語Ｎｏに対応する位置にフラグ「０」を設定することで、上位ビットマップを補正する。単語候補抽出部１５５は、ＡＮＤ演算の結果が「１」である場合には、選択された特定の音素符号列の先頭からｎ番目までの音素符号又は音素符号列の上位ビットマップの単語Ｎｏに対応する位置にフラグ「１」を設定することで、上位ビットマップを補正する。
【０１３６】
そして、単語候補抽出部１５５は、選択した特定の音素符号列の音素符号が終了か否かを判定する（ステップＳ３０８）。選択した特定の音素符号列の音素符号が終了であると判定した場合には（ステップＳ３０８；Ｙｅｓ）、単語候補抽出部１５５は、抽出結果を記憶部１４０に保存する（ステップＳ３０９）。ここでは、単語候補抽出部１５５は、選択された特定の音素符号列の上位ビットマップを抽出結果として記憶部１４０に保存する。そして、単語候補抽出部１５５は、単語候補抽出処理を終了する。一方、選択した特定の音素符号列の音素符号が終了でないと判定した場合には（ステップＳ３０８；Ｎｏ）、単語候補抽出部１５５は、第１ビットマップと、第２ビットマップとを「ＡＮＤ演算」したビットマップを新たな第１ビットマップに設定する（ステップＳ３１０）。
【０１３７】
単語候補抽出部１５５は、第１ビットマップを左に１ビット分シフトする（ステップＳ３１１）。単語候補抽出部１５５は、一時領域ｎに１を加算する（ステップＳ３１２）。単語候補抽出部１５５は、選択した特定の音素符号列の先頭からｎ番目の音素符号に対応するビットマップのオフセット付近の領域を復元し、新たな第２ビットマップに設定する（ステップＳ３１３）。そして、単語候補抽出部１５５は、第１ビットマップと第２ビットマップとのＡＮＤ演算をすべく、ステップＳ３０７に移行する。
【０１３８】
図２０は、単語推定部の処理手順を示すフローチャートである。なお、ここでは、単語候補抽出部１５５によって抽出された抽出結果として、例えば、特定の音素符号列の上位ビットマップが保存されている。
【０１３９】
図２０に示すように、情報処理装置１００の文抽出部１５６は、検索対象の音素表記データから、特定の音素符号列に応じた特徴文データを抽出する（ステップＳ６０１）。例えば、文抽出部１５６は、検索対象の音素表記データから、特定の音素符号列を含む文データと関連する文データを特徴文データとして抽出する。一例として、文抽出部１５６は、検索対象の音素表記データから、特定の音素符号列を含む文データの直前の文データを特徴文データとして抽出する。
【０１４０】
文抽出部１５６は、特徴文データに含まれる文の文ベクトルを算出する（ステップＳ６０２）。情報処理装置１００の単語推定部１５７は、算出した文の文ベクトルと、文ＨＭＭデータ１４３とを比較して、共起条件を満たす単語コードの文ベクトルを特定する（ステップＳ６０３）。
【０１４１】
そして、単語推定部１５７は、辞書データ１４２を参照して、単語コードを復号化する（ステップＳ６０４）。すなわち、単語推定部１５７は、特定の音素符号列の単語を最尤推定する。この後、単語推定部１５７は、検索対象の音素表記データに含まれる特定の音素列を、最尤推定した単語に変更することにより、検索対象の音素表記データに応じた文章を生成する。そして、単語推定部１５７は、生成した文章を出力し、単語推定処理を終了する。
【０１４２】
［実施例の効果］
次に、本実施例に係る情報処理装置１００の効果について説明する。情報処理装置１００は、複数の文を有する文章に対する音素列を受け付け、受け付けた音素列に含まれる特定の音素又は音素列に応じた文を特定する。情報処理装置１００は、単語に対する文の共起情報を該単語に対応付けて記憶する文ＨＭＭデータ１４３を参照して、単語のうち、特定した文の共起情報が基準を満たす単語を特定する。情報処理装置１００は、受け付けた音素列に含まれる特定の音素又は音素列を、特定した単語に変更することにより、受け付けた音素列に応じた文章を生成する。情報処理装置１００は、生成した文章を出力する。かかる構成によれば、情報処理装置１００は、複数の文で構成される文章を音声認識する場合に、文章に含まれる特定の音素又は音素列に応じた文の共起情報を用いて特定の音素又は音素列に対する単語を特定することで、音声認識の精度を向上することができる。
【０１４３】
また、上記実施例によれば、情報処理装置１００は、音声解析及び形態素解析に用いられる共通の辞書データ１４２に登録された単語の音素表記に含まれる各音素符号と、前記音素表記の先頭の音素符号と、前記音素表記の末尾の音素符号と、のそれぞれの音素符号の相対位置を示すインデックスデータ１４７に基づき、辞書データ１４２に登録された単語の音素表記のうち、特定の音素又は音素列に含まれる音素表記を特定し、特定した音素表記に対応する単語候補を特定する。情報処理装置１００は、文ＨＭＭデータ１４３に記憶された情報を参照して、特定した単語候補から、文の共起情報が基準を満たす単語を特定する。かかる構成によれば、情報処理装置１００は、インデックスデータ１４７及び文ＨＭＭデータ１４３を用いることで、音声認識に係る単語候補の特定と単語の最尤推定を効率的に行うことができる。
【０１４４】
また、上記実施例によれば、情報処理装置１００は、単語に対する文に応じたベクトル情報を含む共起情報を該単語に対応付けて記憶する文ＨＭＭデータ１４３を参照して、単語のうち、特定した文の共起情報が基準を満たす単語を特定する。かかる構成によれば、情報処理装置１００は、ベクトル情報に対応付けられた文ＨＭＭデータ１４３を用いて、文ベクトルから最尤な単語を特定し、音声認識の高精度化を図ることができる。
【０１４５】
また、上記実施例によれば、情報処理装置１００は、複数の文を有する文章に対する音素列に含まれる同音異義語に対する特定の音素又は音素列に応じた文を特定する。情報処理装置１００は、単語に対する文の共起情報を該単語に対応付けて記憶する文ＨＭＭデータ１４３を参照して、単語のうち、特定した文の共起情報が基準を満たす単語を特定する。情報処理装置１００は、受け付けた音素列に含まれる特定の音素又は音素列を、特定した単語に変更することにより、受け付けた音素列に応じた文章を生成する。かかる構成によれば、情報処理装置１００は、複数の文で構成される文章を音声認識する場合に、文ＨＭＭデータ１４３を用いて、文章に含まれる同音異義語に対する単語を特定することで、音声認識の精度を向上することができる。
【０１４６】
なお、上記実施例では、文抽出部１５６が、検索対象の音素表記データに含まれる同音異義語の音素表記に応じた文データを抽出すると説明した。しかしながら、文抽出部１５６は、これに限定されず、抽出するデータを文データの代わりに文章データとしても良い。この結果、単語推定部１５７は、文章データをベクトル化した文章ベクトルと、文ＨＭＭの代わり生成される文章ＨＭＭの共起文章ベクトルとを比較して、文章ベクトルと一致する（あるいは類似する）共起文章ベクトルを特定する。そして、単語推定部１５７は、特定した共起文章ベクトルに対応する単語を最尤推定する。これにより、単語推定部１５７は、同音異義語の音素表記に応じたデータを文から文章にすることで、同音異義語の音素表記と関連する情報が増えるため、さらに、同音異義語の音声認識の精度を向上することが可能となる。
【０１４７】
また、上記実施例では、情報処理装置１００が、日本語に関する同音異義語の音素列に対応する単語を最尤推定する場合を説明した。しかしながら、情報処理装置１００は、これに限定されず、日本語とは別の言語に関する同音異義語の音素列に対応する単語を最尤推定する場合であっても良い。例えば、情報処理装置１００は、英語に関する同音異義語の音素列に対応する単語を最尤推定する場合であっても良い。すなわち、情報処理装置１００は、英語で示される検索対象の音素表記データＦ１に含まれる同音異義語の特定の音素列に応じた文の文ベクトルを算出し、文ベクトルと、文ＨＭＭデータ１４３の共起文ベクトルとを比較し、特定の音素列に対応する単語を特定（最尤推定）すれば良い。
【０１４８】
次に、上記実施例に示した情報処理装置１００と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図２１は、情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【０１４９】
図２１に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る読み取り装置２０４と、有線又は無線ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７とを有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【０１５０】
ハードディスク装置２０７は、文ＨＭＭ生成プログラム２０７ａ、音素ＨＭＭ生成プログラム２０７ｂ、音素推定プログラム２０７ｃ、インデックス生成プログラム２０７ｄ、単語候補抽出プログラム２０７ｅ、文抽出プログラム２０７ｆ及び単語推定プログラム２０７ｇを有する。ＣＰＵ２０１は、各種プログラムを読み出してＲＡＭ２０６に展開する。
【０１５１】
文ＨＭＭ生成プログラム２０７ａは、文ＨＭＭ生成プロセス２０６ａとして機能する。音素ＨＭＭ生成プログラム２０７ｂは、音素ＨＭＭ生成プロセス２０６ｂとして機能する。音素推定プログラム２０７ｃは、音素推定プロセス２０６ｃとして機能する。インデックス生成プログラム２０７ｄは、インデックス生成プロセス２０６ｄとして機能する。単語候補抽出プログラム２０７ｅは、単語候補抽出プロセス２０６ｅとして機能する。文抽出プログラム２０７ｆは、文抽出プロセス２０６ｆとして機能する。単語推定プログラム２０７ｇは、単語推定プロセス２０６ｇとして機能する。
【０１５２】
文ＨＭＭ生成プロセス２０６ａの処理は、文ＨＭＭ生成部１５１の処理に対応する。音素ＨＭＭ生成プロセス２０６ｂの処理は、音素ＨＭＭ生成部１５２の処理に対応する。音素推定プロセス２０６ｃの処理は、音素推定部１５３の処理に対応する。インデックス生成プロセス２０６ｄの処理は、インデックス生成部１５４の処理に対応する。単語候補抽出プロセス２０６ｅの処理は、単語候補抽出部１５５の処理に対応する。文抽出プロセス２０６ｆの処理は、文抽出部１５６の処理に対応する。単語推定プロセス２０６ｇの処理は、単語推定部１５７の処理に対応する。
【０１５３】
なお、各プログラム２０７ａ〜２０７ｇについては、必ずしも最初からハードディスク装置２０７に記憶させておかなくても良い。たとえば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００が各プログラム２０７ａ〜２０７ｇを読み出して実行するようにしても良い。
【符号の説明】
【０１５４】
１００  情報処理装置
１１０  通信部
１２０  入力部
１３０  表示部
１４０  記憶部
１４１  教師データ
１４２  辞書データ
１４３  文ＨＭＭデータ
１４４  音素ＨＭＭデータ
１４５  音素表記データ
１４６  配列データ
１４７  インデックスデータ
１４８  オフセットテーブル
１４９Ａ  静的辞書データ
１４９Ｂ  動的辞書データ
１５０  制御部
１５１  文ＨＭＭ生成部
１５２  音素ＨＭＭ生成部
１５３  音素推定部
１５４  インデックス生成部
１５５  単語候補抽出部
１５６  文抽出部
１５７  単語推定部
【図１】
2019159118.tif 000003
【図２】
2019159118.tif 000004
【図３】
2019159118.tif 000005
【図４Ａ】
2019159118.tif 000006
【図４Ｂ】
2019159118.tif 000007
【図５】
2019159118.tif 000008
【図６】
2019159118.tif 000009
【図７】
2019159118.tif 000010
【図８】
2019159118.tif 000011
【図９】
2019159118.tif 000012
【図１０】
2019159118.tif 000013
【図１１】
2019159118.tif 000014
【図１２】
2019159118.tif 000015
【図１３】
2019159118.tif 000016
【図１４】
2019159118.tif 000017
【図１５】
2019159118.tif 000018
【図１６】
2019159118.tif 000019
【図１７Ａ】
2019159118.tif 000020
【図１７Ｂ】
2019159118.tif 000021
【図１８】
2019159118.tif 000022
【図１９】
2019159118.tif 000023
【図２０】
2019159118.tif 000024
【図２１】
2019159118.tif 000025