説明

言語モデル圧縮装置、言語モデルのアクセス装置、言語モデル圧縮方法、言語モデルのアクセス方法、言語モデル圧縮プログラム、言語モデルのアクセスプログラム

【課題】学習結果としてのn−gram言語モデルのデータ量を抑制し、効率的にアクセス可能な技術を提供する。
【解決手段】言語モデルの圧縮装置1は、言語モデル記憶部5にn−gram言語モデルを記憶する。データ構造変換部3は、言語モデル記憶部5に記憶されたn−gram言語モデルのデータ配列中、(n+1)−gramの最初の位置を示すポインタを固定バイト表現に変換し、変換データ記憶部6に記憶させる。ポインタ表現の圧縮部4は、変換データ記憶部6に記憶されたn−gram言語モデルの木構造に仮想的なルートノードを設けることでトライ(trie)と擬制し、前記ポインタをLOUDS表現に圧縮変換する。ここで圧縮変換されたデータを圧縮データ記憶部7に記憶させる。この記憶部7は、主に計算機の記憶装置(RAM)を用いる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、単語をn文字単位で分割し、それぞれの単語列とその出現頻度(確率)を求めたn−gram言語モデルを圧縮するための技術、および効率的にn−gram言語モデルにアクセスするための技術に関する。
【背景技術】
【0002】
周知のように、音声認識や統計的機械翻訳などの分野では、非特許文献1に示すように、出力される言語(単語列)の尤もらしさをモデル化するために、単語n個からなる単語列(n−gramと呼ぶ)に対する条件付確率(式1)が広く用いられている。
【0003】
【数1】

【0004】
単語列(式2)の尤もらしさ(式3)は、式1の条件付確率を用いて、式4のように近似的に求めることができる。
【0005】
【数2】

【0006】
【数3】

【0007】
【数4】

【0008】
このような式1の条件付確率を与えるモデルは、n−gram言語モデルと呼ばれている。「n」の大きさとしては、音声認識では「3〜4」の値を、統計的機械翻訳では「4〜5」の値を用いることが多い。式1の条件付確率は、式5のように、再帰的に計算される。また、式2は、単語w1,w2,・・・,wnを省略標記したものである。
【0009】
【数5】

【0010】
このような統計モデルを計算機(コンピュータ)で利用するためには、まず、学習データに現れる単語列(式2)に応じて、式6の平滑された確率、式7のバックオフ係数などの情報を格納すること、さらに単語列(式2)を入力として、前記各情報に効率的にアクセスできることが必要となる。
【0011】
【数6】

【0012】
【数7】

【0013】
そして、音声認識や統計的機械翻訳などn−gramのアプリケーションの性能を高めるためには、非特許文献2に示すように、大量の学習データを用いてこれらのパラメータを学習することはもとより、学習データを増やすことで、そこに現れる正しい単語列(式2)のバリエーション(n−gramのバリエーション)を多数保持することが有効と知られている。
【0014】
また、n−gram言語モデルは、非特許文献3に示すように、木構造(データ構造)で表現できることが知られている。さらに木構造の一種であるトライ(trie)をコンパクトに表現する手法として、非特許文献4.5に示すように、LOUDS(Level−Order Unary Degree Sequence)が知られている。ここでトライとは、1つのルートノードを持つ順序付き木構造の一種であり、プレフィックス木(Prefix Tree)とも呼ばれている。
【先行技術文献】
【非特許文献】
【0015】
【非特許文献1】S. M. Katz, “Estimation of Probabilities from Sparse Data for the Language Model Component of a Speech Recognizer,” IEEE TRANSACTIONS ON ACOUSTIC, SPEECH, AND SIGNAL PROCESSING, VOL.ASSP−35,NO.3,MARCH 1987,pp. 400−401
【非特許文献2】T. Brants, A. C. Popat, P. Xu, F. J. Och, and J. Dean, Large Language Models in Machine Translation, Proceedings of the 2007 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning (EMNLP−CoNLL), pp. 858−−867, 2007.
【非特許文献3】B. Raj and E.W.D. Whittaker. ”LOSSLESS COMPRESSION OF LANGUAGE MODEL STRUCTURE AND WORD IDENTIFIERS” In Proceedings of ICASSP, volume 1, pages I≡388≡I≡391 vol.1, April 2003.
【非特許文献4】O’Neil Delpratt, Naila Rahman, and Rajeev Raman. ”Engineering the LOUDS Succinct Tree Representation” In Proceedings of the 5th International Workshop on Experimental Algorithms, pages 134≡145, 2006.
【非特許文献5】Guy Jacobson. ”Space−efficient Static Trees and Graphs” In 30th Annual Symposium on Foundations of Computer Science, pages 549≡554, Nov 1989.
【非特許文献6】Dong Kyue Kim, Joong Chae Na, Ji Eun Kim, and Kunsoo Park. ”Efficient implementation of rank and select functions for succinct representation” In Proceedings of the 5th International Workshop on Experimental Algorithms, pages 315≡327, 2005.
【発明の概要】
【発明が解決しようとする課題】
【0016】
しかしながら、大量のデータで学習したn−gram言語モデルは、非常に多種多様なn−gramを格納するため、モデル表現が巨大になってしまう。特に、n−gram言語モデルを使う際には効率的なアクセスが要求されるため、それを考慮したデータ構造は大きなものとなり易い。
【0017】
その一方で効率的なアクセスを実現するためには、n−gram言語モデルを主記憶装置(RAM)に格納することが好ましいが、現代の計算機(コンピュータ)をもってしても主記憶装置の記憶容量には限界がある。例えば、全Webデータで学習した巨大なn−gramを、従来法で表現すると40GB以上の容量が必要となるため、一部の非常に高価な計算機を除いて主記憶装置に保持することは困難である。
【0018】
また、n−gram言語モデルの木構造の表現は、ルートノードが存在しない(あるいは1つではない)。トライ構造をコンパクトに表現する方法は知られているが、n−gram言語モデルのデータ構造はトライではないため、トライ構造をコンパクトに表現する方法をn−gram言語モデルの表現に応用するには、さらなる工夫が必要である。
【0019】
本発明は、上述のような従来技術の問題点を解決するためになされたものであり、n−gram言語モデルのデータ量を抑制し、効率的にアクセス可能な技術を提供することを解決課題とする。
【課題を解決するための手段】
【0020】
そこで、本発明は、自然言語処理システムなどで用いられるn−gram言語モデルのデータ構造をトライ(木構造)に変換し、トライをコンパクトに表現するLOUDSという手法によって、より少ないビット列で表現する。さらに、n−gramの特性を考慮して、この手法を改良する。
【0021】
本発明に係る言語モデル圧縮装置の一態様は、仮想的なルートノードを設けて、n−gram言語モデルの構造をトライ構造に変換するデータ構造変換手段と、前記データ構造変換手段にて変換されたトライ構造をLOUDS(Level−Order Unary Degree Sequence)表現に圧縮変換する圧縮手段と、を備える。
【0022】
本発明に係る言語モデルの他の態様は、n−gram言語モデルの最高次数の最初のノードの位置(ノードID)を記憶装置に記憶し、n−gram言語モデルの構造を表すポインタ表現を、最高次数のn−gramを削除した表現に変換するデータ構造変換手段を、備える。ここでは1−gramの個数N1を記憶装置に記憶し、前記データ構造変換手段にて変換したn−gram言語モデルの構造を、スーパーノード(トライ構造のルートノードを指す仮想的なルートノード)および最高次数のn−gramに対応したビットをもたないように拡張したLOUDS表現に圧縮変換する圧縮手段を、さらに備えてもよい。
【0023】
本発明に係る言語モデルのアクセス装置の一態様は、入力された単語列のn−gramの位置xに対して、親ノード「(n−1)−gram」(parent)の位置を、式8により算出して出力する第1のアクセス手段と、
入力された単語列のn−gramの位置xに対して、子ノード「(n+1)−gram」のうち単語IDの最も小さい子ノード(first_child)の位置を、式9により算出して出力する第2のアクセス手段と、を備える。
【0024】
【数8】

【0025】
【数9】

【0026】
本発明に係る言語モデルのアクセス装置の他の態様は、入力された単語列のn−gramの位置xに対して、親ノード「(n−1)−gram」(parent)の位置を、式10により算出して出力する第1のアクセス手段と、入力された単語列のn−gramの位置xに対して、子ノード「(n+1)−gram」のうち単語IDの最も小さい子ノード(first_child)の位置を、式11により算出して出力する第2のアクセス手段と、を備える。
【0027】
【数10】

【0028】
【数11】

【0029】
本発明に係る言語モデル圧縮方法の一態様は、データ構造変換手段が、仮想的なルートノードを設けて、n−gram言語モデルの構造をトライ構造に変換するデータ構造変換ステップと、圧縮手段が、前記データ構造変換ステップにて変換されたトライ構造をLOUDS(Level−Order Unary Degree Sequence)表現に圧縮変換する圧縮ステップと、を有する。
【0030】
本発明に係る言語モデル圧縮方法の他の態様は、データ構造変換手段が、前記n−gram言語モデルの最高次数の最初のノードの位置(ノードID)を記憶装置に記憶し、n−gram言語モデルの構造を表すポインタ表現を、最高次数のn−gramを削除した表現に変換するデータ構造変換ステップを、有する。ここでは圧縮手段が、1−gramの個数N1を記憶装置に記憶させ、前記データ構造変換手段にて変換したn−gram言語モデルの構造を、スーパーノード(トライ構造のルートノードを指す仮想的なルートノード)および最高次数のn−gramに対応したビットをもたないように拡張したLOUDS表現に圧縮変換する圧縮ステップを、さらに有してもよい。
【0031】
本発明に係る言語モデルのアクセス方法の一態様は、第1のアクセス手段が、入力された単語列のn−gramの位置xに対して、親ノード「(n−1)−gram」(parent)の位置を、式8により算出して出力するステップと、第2のアクセス手段が、入力された単語列のn−gramの位置xに対して、子ノード「(n+1)−gram」のうち単語IDの最も小さい子ノード(first_child)の位置を、式9により算出して出力するステップと、を有する。
【0032】
【数8】

【0033】
【数9】

【0034】
本発明に係る言語モデルのアクセス方法の他の態様は、第1のアクセス手段が、入力された単語列のn−gramの位置xに対して、親ノード「(n−1)−gram」(parent)の位置を、式10により算出して出力するステップと、第2のアクセス手段が、入力された単語列のn−gramの位置xに対して、子ノード「(n+1)−gram」のうち単語IDの最も小さい子ノード(first_child)の位置を、式11により算出して出力するステップと、を有する。
【0035】
【数10】

【0036】
【数11】

【0037】
なお、本発明は、前記各装置としてコンピュータを機能させるためのプログラムの態様としてもよい。このプログラムは記録媒体に記録した態様で配布・提供することができる。
【発明の効果】
【0038】
本発明によれば、n−gram言語モデルの構造を規定するポインタ表現のデータ量が抑制される。このことにより巨大なn−gram言語モデルであっても、ポインタ表現のすべてもしくは大部分を、アクセスの遅いハードディスクドライブ装置に代わって,アクセスの高速なメモリ(RAM)上に保持することが可能となる。本発明により巨大なn−gram言語モデルを用いた機械翻訳や音声認識などにあたって、効率的にn−gram言語モデルにアクセスすることが可能となり、処理の高速化に貢献する。
【図面の簡単な説明】
【0039】
【図1】本発明の実施形態に係る言語モデル圧縮装置および言語モデルのアクセス装置の構成図。
【図2】同 言語モデル記憶部に記憶されたn−gram言語モデルのデータ構造図。
【図3】同 データ構造変換部の変換後におけるn−gram言語モデルのデータ構造図。
【図4】トライ構造に基づくポインタ表現を示す図。
【図5】n−gram構造に基づくポインタ表現を示す図。
【図6】トライ構造の構造図。
【図7】n−gramの構造図。
【発明を実施するための形態】
【0040】
以下、本発明の実施形態に係る言語モデル圧縮装置および言語モデルのアクセス装置を説明する。この両装置は、音声認識装置や機械翻訳機などの自然言語処理システムにおいてコンビネーションとして利用される。ここでは前記圧縮装置は、n−gramの学習装置により生成されたn−gram言語モデルのデータ量を抑制する一方、前記アクセス装置は音声認識や統計的機械翻訳にあたって前記圧縮装置でデータ容量を抑制されたn−gram言語モデルにアクセスする。
【0041】
具体的には前記各装置は、コンピュータにより構成され、通常のコンピュータのハードウェアリソース、例えばCPU,メモリ(RAM)などの主記憶装置,ハードディスクドライブ装置などを備えている。
【0042】
このハードウェアリソースとソフトウェアリソース(OS,アプリケーションなど)との協働の結果、図1に示すように、前記圧縮装置1は、データ構造変換部3,ポインタ表現の圧縮部4,言語モデル記憶部5,変換データ記憶部6,圧縮データ記憶部7を実装する一方、前記アクセス装置2は、n−gramアクセス部(first_child)8,n−gramアクセス部(parent)9を実装する。なお、前記両装置1.2は、必ずしも複数のコンピュータで構成する必要はなく、単一のコンピュータで構成してもよい。
【0043】
概略を説明すれば、前記各記憶部5〜7は、前記ハードディスクドライブ装置あるいは前記主記憶装置に構築されている。このうち前記言語モデル記憶部5は、大量の学習用データ(例えばWebデータなど)に基づく学習結果として生成された言語モデルを格納する。ここで格納される言語モデルは、通常の「n−gram言語モデルのデータ構造」形式で表現されているものとする。
【0044】
前記データ構造変換部3は、矢印Aに示すように、前記言語モデル記憶部5の言語モデルを入力とし、ポインタの固定バイト表現されたn−gram言語モデルのデータ構造に変換する(データ変換ステップ)。この変換後のデータは、矢印Bに示すように、前記変換データ記憶部6に蓄積される。
【0045】
前記ポインタ表現の圧縮部4は、矢印Cに示すように、前記変換データ記憶部6の蓄積データを入力とし、該蓄積データにポインタ配列をコンパクトに表現する処理を加え、データ量を圧縮する(ポインタ表現の圧縮ステップ)。すなわち、ポインタのLOUDS表現されたn−gram言語モデルのデータ構造に圧縮変換し、矢印Dに示すように、前記圧縮データ記憶部7に記憶させる。
【0046】
前記アクセス装置2は、図示省略の入力手段を通じて与えられた単語列(n−gram)を入力とし、矢印E.Fに示すように、前記圧縮データ記憶部7の記憶データ、即ち圧縮表現されたn−gram言語モデルのポインタにアクセスする(アクセスステップ)。具体的には、前記アクセス部8は、矢印Gに示すように、n−gram(単語列)の位置を入力とし、前記圧縮データ記憶部7を参照して、矢印Hに示すように、(n+1)−gramの位置を出力する。一方、前記アクセス部9は、矢印Iに示すように、n−gram(単語列)の位置を入力とし、前記圧縮データ記憶部7を参照して、矢印Jに示すように、(n−1)−gramの位置を出力する。以下、前記両装置1.2の各機能ブロック3〜9の詳細を説明する。
【0047】
≪言語モデル圧縮装置1≫
(1)データ構造変換部3
まず、前記言語モデル記憶部5の格納データ、即ちn−gramのデータ構造を説明する。このn−gramは、図2のデータ構造で表現され(非特許文献2参照)、「1−gram, 2−gram, 3−gram, …」は、それぞれ前記言語モデル記憶部5の別テーブルで表現される。
【0048】
このn−gramのテーブルの各列は、単語wnの単語ID(word id)、式6の平滑化された確率値(probability)、式7のバックオフ係数(back−off)、(X+1)−gramの最初の位置を示すポインタ(pointer)を有している(Xは1≦X≦nの整数)。各テーブルは、このような四つ組の配列として表現される。ポインタとしては、この配列のインデックスを用いることができる。例えば4バイト整数によってポインタを実現できる。
【0049】
ここでX−gram(Xは1≦X≦nの整数)のポインタの指す先の連続した領域には、式12の履歴を共有する(X+1)−gramが、wx+1の単語ID順にソートされて格納される。
【0050】
【数12】

【0051】
この領域の終わりの境界は、X−gramの次のエントリのポインタが指す先で規定される。あるX−gramを探すには、それを構成する単語毎にバイナリ探索が実施されるため、合計X回のバイナリ探索が行われる。単語IDを1−gramテーブルの各行の位置で定義することで、図2に示すように、1−gramの単語IDの列は省略することができる。
【0052】
前記データ構造変換部3は、前記言語モデル記憶部5に格納されている図2のデータ構造を変換し、図3に示すように、単語ID、平滑化された確率値、バックオフ係数、ポインタの各々を別々の配列で表し、前記変換データ記憶部6に格納する。ここでは1−gramの後ろに2−gramの情報を、2−gramの後に3−gramの情報を連結し、該連結処理を順次に実施する。なお、オーダの境界(2−gram,3−gram,…の開始位置)を、別途主記憶装置に記憶し、各オーダの情報にアクセスできるようにする。
【0053】
ポインタ配列としては、図4のトライ(trie)構造に基づく表現(第1形態)と、図5のn−gram構造に基づく表現(第2形態)のいずれかを使用する。なお、図4.5は、それぞれ図6.7の木構造に対応したポインタ構造を表す。配列の要素となるポインタは、固定バイト(例えば4バイト)整数で表現されているものとする。
【0054】
なお、第2形態においては、n−gram言語モデルの最高次数の最初のエントリの位置を記憶しておき、第1形態のポインタ配列ではそれ以降に格納されていた最高次数のn−gramのポインタを第2形態では格納しないものとする。ただし、最高次数n−gramの情報を格納しないのは、ポインタ配列だけであり、その他の単語ID(word id)、平滑化された式6の確率値(probability)、式7のバックオフ係数(back−off)については、最高次数n−gramの情報も格納する。
【0055】
(2)ポインタ表現の圧縮部4
前記圧縮部4は、前記変換データ記憶部6を参照して、前記データ構造変換部3で変換した各配列のうち、ポインタを示す配列をコンパクトに表現して、前記変換データ記憶部6に格納する。以下、各形態の具体的内容を説明する。
【0056】
<第1形態>
まず、前記圧縮部4における第1形態について説明する。トライ(trie)とは、木構造の一種であり、1つルートノードを持つ木構造で表される。図2に示したn−gramのデータ構造は、ルートノードが1つではないためトライではないが、ここでは仮想的なルートノードを設けることにより、n−gramのデータ構造をトライに擬制して、コンパクトなトライ表現法であるLOUDS(非特許文献4.5参照)を応用し、ポインタ配列を圧縮する。
【0057】
詳細を説明すれば、LOUDSによる表現では、ルートノードから始まり、「1−gram,2−gram,…」の階層順で左から右、即ち幅優先の順序で、ノードにノードIDが割り当てられる。ここではd個(d≧0)の子供(子ノード)を有するノード(親ノード)は、「1d0」のビット列で表現される(「1d」は、「1」がd個ならんでいるビット列を表している。)。仮想的なルートノードを指すさらなる仮想的なノードとしてスーパールートノードを設ける。スーパールートノードの子供はルートノード一つであるから、スーパールートノードは「10」で表される。
【0058】
図6はトライ構造の一例を示している。このトライ構造例のLOUDSビット列によるポインタ表現を表1に示す。
【0059】
【表1】

【0060】
前記トライ構造例によれば、ルートノード「0」は、4つの子供を持つことから、4つの「1」と終わりを表す1つの「0」とで表されている。ここでM個のノードを有するトライは、(M+1)個の「0」と,M個の「1」とで表されるため、合計2M+1ビットで表現される.
X−gramの個数をNxと表し、式13を用いれば、n−gram言語モデルでは式14が成立する。したがって、n−gram言語モデルは、式15のビット数でポインタが表現される。ここで圧縮表現されたポインタが前記圧縮データ記憶部7に記憶される。
【0061】
【数13】

【0062】
【数14】

【0063】
【数15】

【0064】
以上のように圧縮表現されたn−gram言語モデルにアクセスするためには、LOUDSビット列上に、ビット列中のi番目の「1」の位置を返す「select1(i)」という操作を定義する。ここでビットの位置は、表1に示すように、「0」から始まっているものとする。同様にビット列中のi番目の「0」の位置を返す操作として「select0(i)」を定義できる。
【0065】
「selectb(i)(b=0 or 1)」は、非特許文献6などの手法を用いて、効率的に実現することができる。この操作を用いることで、ノードx(ノードID=「x」のノード)に対して親ノードIDを返す関数「parent(x)」や、ノードxに対して最初の子供のIDを返す関数「first_child(x)」が式8.式9で実現される。
【0066】
【数8】

【0067】
【数9】

【0068】
例えば、ノード9の親ノードは、「parent(9)=select(9+1)−9−1=12−9−1=2」から、ノード2と求められる。また、ノード9の最初の子ノードは、「first_child(9)=select0(9+1)−9=23−9=14」となり,ノード14であると求まる。
【0069】
ただし、「first_child(x)」が、0以上のノードIDを返すからといってノードxが、子ノードを有することが保証されるとは限らない。ノードxが子ノードを有する必要十分条件は、「first_child(x)≠first_child(x+1)」である。またノードxに係る子ノードのIDの範囲は、[first_child(x),first_child(x+1))で求まる。前記n−gramアクセス装置2では、以上の関数を利用してn−gram言語モデルへのアクセスを行う。
【0070】
<第2形態>
つぎに前記圧縮部4における第2形態を説明する。ここでは第1形態で用いたLOUDSを、n−gramの特性を利用して、さらにコンパクトに表現できるように拡張処理されている。
【0071】
すなわち、図2および図3に示すように、n−gramの場合はルートノードに格納する情報は存在しない。したがって、ルートノードを削除し、仮想的なスーパールートノードが直接1−gramの各ノードを指すようにする。ここではノードIDは、1−gramの最初のノードが「0」となるように番号付けるものとする。これで旧ルートノードの2ビットが削減される。
【0072】
また、n−gramの場合、1〜nまでの階層をもつ構造をしており、最下層にある最高次数nのノードは子ノードを有していない。ここでX−gramのノードの個数をNxとすると、n−gramの最高次数のノード数はNnであり、Nn個の「0」が冗長である。そこで、最高次数の最初のノードIDを前記主記憶装置に記憶しておき、n−gram言語モデルにアクセスする際には該ノードID以外は子ノードを有しないと判定することとする。これにより、Nn個の「0」、即ちNnビットを消去することができる。
【0073】
さらに、スーパールートノードは、式16で表されるが、1−gramの個数N1を記憶しておくことで、これは取り去ることができる。このように前記各ノードが存在しないものとして木構造を生成し、ビットを割り当てる。これでN1+1ビットが削減できる。これにより、第2形態における圧縮表現されたポインタは、スーパーノードに対応したビットと最高次数のn−gramに対応したビットをもたない表現(拡張したLOUDS表現)となる。この圧縮変換されたポインタを、前記圧縮データ記憶部7に記憶する。
【0074】
【数16】

【0075】
第2形態において圧縮表現されたn−gram言語モデルにアクセスするためには、第1形態の式8.式9を、式10.式11に書き換える。
【0076】
【数10】

【0077】
【数11】

【0078】
ただし、最高次数の最初のノードIDをYとすると、「x≧Y」のときは、「select1(x)=select1(Y−1)、select0(x)=select0(Y−1)+x−Y+1」とする。
【0079】
図7に、トライ構造を刈り込みn−gramに最適化した構造を示す。この構造に最適化したLOUDSビット列を表2に示す。
【0080】
【表2】

【0081】
図7および表2のノード8は、図6中のノード9に対応している。ここではN1=4であるため、「parent(8)=select1(8+1−4)+4−8=5+4−8=1」から、ノード8の親ノードはノード1と求められる。また、「first_child(8)=select0(8)+4+1−8=16+4+1−8=13」から、ノード8の最初の子ノードはノード13と求められる。
【0082】
ここでn−gram言語モデルを第1形態に基づき圧縮した場合には式15のビットでポインタ表現されていた。ここから2+Nn+N1+1ビットが削減されるため、第2形態の圧縮によれば、n−gram言語モデルは式17のビット数でポインタが表現され、さらにデータ量を抑制することができる。
【0083】
【数17】

【0084】
≪n−gramアクセス装置2≫
前記アクセス装置2は、前記入力手段を通じて与えられた単語列(式2)を入力として、前記圧縮データ記憶部7を参照する。ここでは前記圧縮装置1により圧縮表現されたn−gramモデルのポインタを辿ることにより、平滑化された確率(式6)およびバックオフ係数(式7)などへアクセスし、これらの値を出力する。
【0085】
具体的には、前記アクセス部(first_child)8は、「w1,...,wn」のn−gramの位置を入力として、「w1,...,wn,wn+1」という「(n+1)−gram」のうち,「wn+1」の単語IDが一番小さいものの位置を前記入力手段に返信する。このとき前記圧縮データ記憶部7の記憶データが、トライ構造に基づくポインタ表現(第1形態の圧縮結果)であれば、式9によって算出する一方、n−gram構造に基づくポインタ表現(第2形態の圧縮結果)であれば、式11によって算出する。
【0086】
また、前記アクセス部(parent)9は、「w1,...,wn-1,wn」のn−gramの位置を入力として、「w1,...,wn-1」の(n−1)−gramの位置を前記入力手段に返信する。このとき前記圧縮データ記憶部7の記憶データが、トライ構造に基づくポインタ表現(第1形態の圧縮結果)であれば、式8によって算出する一方、n−gram構造に基づくポインタ表現(第2形態の圧縮結果)であれば、式10によって算出する。なお、式8〜式11はプログラムなどに定義されているものとする。
【0087】
このように前記両装置1.2によれば、n−gram言語モデルのポインタ配列のデータ量が抑制されるため、高価な計算機(コンピュータ)を使用することなく、汎用的な計算機の主記憶装置にポインタ配列の大部分を記憶でき、前記圧縮データ記憶部7をいわゆるオンメモリデータベースとして利用可能にする。
【0088】
したがって、前記アクセス部8.9のポインタへのアクセス速度が向上し、n−gramを用いた機械翻訳や音声認識などに際して、効率的にn−gramモデルにアクセス可能となる。加えて、頻繁に利用するn−gram言語モデルの確率(式6)およびバックオフ係数(式7)などを記憶バッファなどにキャッシュしておけば、さらに処理を高速化することができる。
【0089】
≪実験例≫
前記圧縮装置1の有効性を確認するために発明者達の実施したn−gramの圧縮実験を説明する。この実験には、表3に示すように、「English Gigaword 3rd Edition」を用いて学習した「English Gigaword 5−gram」と、LDCから公開されている「English Web 1T 5−gram」と、GSKから公開されている「Japanese Web 1T 7−gram」とを用いた。
【0090】
【表3】

【0091】
表3中の”count size (gizp)”は、前記実験に用いた各n−gramの大きさ(サイズ)を示している。ここではn−gramの頻度を格納したASCIIテキストファイルを、gzipで圧縮した結果のサイズを表している。
【0092】
【表4】

【0093】
表4は、前記実験におけるポインタ配列の圧縮結果を示している。表4中の”4−byte Pointer”は、「n−gram言語モデルのデータ構造(ポインタ固定バイト表現)」のポインタを4バイト整数で表現したときのポインタ配列を表している(前記データ変換部3で求めたポインタ配列に相当する)。
【0094】
また、”提案法”は、このポインタ配列をn−gramに最適化したLOUDSビット列で表現した結果(第2形態の圧縮結果)を示している。この”提案法”によれば、表4の各列に示すように、ポインタを4バイト整数で表現する一般的な表現方法が約1/10に圧縮されている。これによりポインタ配列のデータ量が効果的に低減されることが明らかとなった。
【0095】
≪プログラムなど≫
本発明は、前記両装置1.2を構成する各部3〜9の一部もしくは全部として、コンピュータを機能させるプログラムとして構成することもできる。この場合には、前記データ変換ステップ、前記ポインタ表現の圧縮ステップ、アクセスステップの全ステップあるいは一部のステップをコンピュータに実行させる。
【0096】
このプログラムは、Webサイトや電子メールなどネットワークを通じて提供することができる。また、前記プログラムは、CD−ROM,DVD−ROM,CD−R,CD−RW,DVD−R,DVD−RW,MO,HDD,Blu−ray Disk(登録商標)などの記録媒体に記録して、保存・配布することも可能である。この記録媒体は、記録媒体駆動装置を利用して読み出され、そのプログラムコード自体が前記実施形態の処理を実現するので、該記録媒体も本発明を構成する。
【符号の説明】
【0097】
1…言語モデル圧縮装置
2…言語モデルのアクセス装置
3…データ構造変換部(データ構造変換手段)
4…ポインタ表現の圧縮部(ポインタ表現の圧縮手段)
5…言語モデル記憶部
6…変換データ記憶部
7…圧縮データ記憶部
8…n−gramアクセス部「first_child」(第2のアクセス手段)
9…n−gramアクセス部「parent」(第1のアクセス手段)

【特許請求の範囲】
【請求項1】
n個の連続する単語からなる単語列の出現頻度から求めたn−gram言語モデルのモデル表現を圧縮する装置であって、
仮想的なルートノードを設けて、前記n−gram言語モデルの構造をトライ構造に変換するデータ構造変換手段と、
前記データ構造変換手段にて変換されたトライ構造をLOUDS(Level−Order Unary Degree Sequence)表現に圧縮変換する圧縮手段と、
を備えることを特徴とする言語モデル圧縮装置。
【請求項2】
n個の連続する単語からなる単語列の出現頻度から求めたn−gram言語モデルのモデル表現を圧縮する装置であって、
前記n−gram言語モデルの最高次数の最初のノードの位置(ノードID)を記憶装置に記憶し、n−gram言語モデルの構造を表すポインタ表現を、最高次数のn−gramを削除した表現に変換するデータ構造変換手段を、
備えることを特徴とする言語モデル圧縮装置。
【請求項3】
請求項2記載の言語モデル圧縮装置において、
1−gramの個数N1を記憶装置に記憶し、前記データ構造変換手段にて変換したn−gram言語モデルの構造を、スーパーノード(トライ構造のルートノードを指す仮想的なルートノード)および最高次数のn−gramに対応したビットをもたないように拡張したLOUDS表現に圧縮変換する圧縮手段を、
さらに備えることを特徴とする言語モデル圧縮装置。
【請求項4】
請求項1記載の言語モデル圧縮装置にて圧縮変換された前記ポインタを記憶する記憶手段を参照して、n−gram言語モデルにアクセスする装置であって、
入力された単語列のn−gramの位置xに対して、親ノード「(n−1)−gram」(parent)の位置を、式8により算出して出力する第1のアクセス手段と、
【数8】

入力された単語列のn−gramの位置xに対して、子ノード「(n+1)−gram」のうち単語IDの最も小さい子ノード(first_child)の位置を、式9により算出して出力する第2のアクセス手段と、
【数9】

を備えることを特徴とする言語モデルのアクセス装置。
【請求項5】
請求項3に記載の言語モデル圧縮装置にて圧縮変換された前記ポインタを記憶する記憶手段を参照して、n−gram言語モデルにアクセスする装置であって、
入力された単語列のn−gramの位置xに対して、親ノード「(n−1)−gram」(parent)の位置を、式10により算出して出力する第1のアクセス手段と、
【数10】

入力された単語列のn−gramの位置xに対して、子ノード「(n+1)−gram」のうち単語IDの最も小さい子ノード(first_child)の位置を、式11により算出して出力する第2のアクセス手段と、
【数11】

を備えること特徴とする言語モデルのアクセス装置。
【請求項6】
n個の連続する単語からなる単語列の出現頻度から求めたn−gram言語モデルのモデル表現を圧縮する方法であって、
データ構造変換手段が、仮想的なルートノードを設けて、前記n−gram言語モデルの構造をトライ構造に変換するデータ構造変換ステップと、
圧縮手段が、前記データ構造変換ステップにて変換されたトライ構造をLOUDS(Level−Order Unary Degree Sequence)表現に圧縮変換する圧縮ステップと、
を有することを特徴とする言語モデル圧縮方法。
【請求項7】
n個の連続する単語からなる単語列の出現頻度から求めたn−gram言語モデルのモデル表現を圧縮する方法であって、
データ構造変換手段が、前記n−gram言語モデルの最高次数の最初のノードの位置(ノードID)を記憶装置に記憶し、n−gram言語モデルの構造を表すポインタ表現を、最高次数のn−gramを削除した表現に変換するデータ構造変換ステップを、
有することを特徴とする言語モデル圧縮方法。
【請求項8】
請求項7記載の言語モデル圧縮方法において、
圧縮手段が、1−gramの個数N1を記憶装置に記憶させ、前記データ構造変換手段にて変換したn−gram言語モデルの構造を、スーパーノード(トライ構造のルートノードを指す仮想的なルートノード)および最高次数のn−gramに対応したビットをもたないように拡張したLOUDS表現に圧縮変換する圧縮ステップを、
さらに有することを特徴とする言語モデル圧縮方法。
【請求項9】
請求項6記載の言語モデル圧縮方法にて圧縮変換された前記ポインタを記憶する記憶手段を参照して、n−gram言語モデルにアクセスする方法であって、
第1のアクセス手段が、入力された単語列のn−gramの位置xに対して、親ノード「(n−1)−gram」(parent)の位置を、式8により算出して出力するステップと、
【数8】

第2のアクセス手段が、入力された単語列のn−gramの位置xに対して、子ノード「(n+1)−gram」のうち単語IDの最も小さい子ノード(first_child)の位置を、式9により算出して出力するステップと、
【数9】

を有することを特徴とする言語モデルのアクセス方法。
【請求項10】
請求項8に記載の言語モデル圧縮方法にて圧縮変換された前記ポインタを記憶する記憶手段を参照して、n−gram言語モデルにアクセスする方法であって、
第1のアクセス手段が、入力された単語列のn−gramの位置xに対して、親ノード「(n−1)−gram」(parent)の位置を、式10により算出して出力するステップと、
【数10】

第2のアクセス手段が、入力された単語列のn−gramの位置xに対して、子ノード「(n+1)−gram」のうち単語IDの最も小さい子ノード(first_child)の位置を、式11により算出して出力するステップと、
【数11】

を有すること特徴とする言語モデルのアクセス方法。
【請求項11】
請求項1〜3のいずれか1項に記載の言語モデルの圧縮装置を構成する各手段として、コンピュータを機能させるための言語モデル圧縮プログラム。
【請求項12】
請求項4または5のいずれか1項に記載の言語モデルのアクセス装置を構成する各手段として、コンピュータを機能させるための言語モデルのアクセスプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate