辞書なしでタイプミスの修正を実行する 

タイプされた文字の列を観察として,正しい文字の列を隠れ状態としてモデリングするこの例では,正しい文字の進化に対する2つの異なるモデルを使ってタイプミスを修正する.最初のモデルは,指定された文字に続くものの頻度をエンコードするために,一次マルコフ過程を使う.2つ目のモデルは,指定された最後の2文字に続くものの頻度をエンコードするために二次マルコフ状態を使う.

ダーウィンの「The Origin of Species」を使い,文字以外のシンボルをすべてスペースに変換する.

In[1]:=
Click for copyable input
X
In[2]:=
Click for copyable input
X

ランダムに文字を標準のQWERTYキーボードで隣り合う文字に置き換えて,20%の比率でタイプミスを導入する.スペース文字がタイプミスされることはない.

完全なWolfram言語入力を表示する
In[4]:=
Click for copyable input
X
In[5]:=
Click for copyable input
X
完全なWolfram言語入力を表示する
Out[6]=

最初の80,000文字をテスト列として取り,残りのテキストは訓練列とする.テスト列には16.5%のタイプミスがある.これが20%に満たないのは,スペース文字がタイプミスされることはないからである.

In[7]:=
Click for copyable input
X
Out[7]=

隠れマルコフ過程を使って,タイプされた文字のストリームをモデル化する.正しい文字は隠れ状態であり,実際にタイプされた文字は観察である.

In[8]:=
Click for copyable input
X

訓練データを使って,隠れマルコフ過程を推測する.

In[9]:=
Click for copyable input
X
Out[9]=
In[10]:=
Click for copyable input
X

事後デコーディングを使って,タイプミスのあるテキストのテスト部分のスペルミスを修正する.

In[11]:=
Click for copyable input
X
Out[11]=

修正されたテキストにはまだ11%のタイプミスがあるが,はじめにタイプされたテキストよりも5.5%少ない.

完全なWolfram言語入力を表示する
Out[12]=
In[13]:=
Click for copyable input
X
Out[13]=

二次マルコフ過程を使って,隠れ状態の進化をモデル化する.つまり,文字の確率は2つの先行する文字だけに依存すると想定するのである.二次マルコフ過程は連続する文字のペアの拡大状態空間を持つ一次マルコフ過程としてモデル化される.

In[14]:=
Click for copyable input
X
In[15]:=
Click for copyable input
X

実際にタイプされた文字の確率は,潜在する実際の文字だけに依存する.

In[16]:=
Click for copyable input
X

高次の隠れマルコフモデルで事後デコーディングを繰り返す.

In[17]:=
Click for copyable input
X
Out[17]=

タイプミスの割合は6%未満にまで減少した.

In[18]:=
Click for copyable input
X
Out[18]=
完全なWolfram言語入力を表示する
Out[19]=
de en es pt-br zh