スペル訂正エンジンについてのサーベイ #tokyonlp

Post on 11-Jun-2015

3.417 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

第5回自然言語処理勉強会で発表した資料です。

TRANSCRIPT

スペル訂正エンジンについてのサーベイ

#tokyonlp @nokuno

自己紹介•@nokuno / id:nokuno

•#TokyoNLP主催

•Social IME / StaKK開発者

•Web系ソフトウェアエンジニア

近況報告

言語処理学会で発表しました

近況報告その1

シリコンバレーに行ってきました

近況報告その2

近況報告その3

情報処理学会誌にTokyoNLPが載りました

近況報告その4

IJCNLP2011でプログラム委員やります

今日の内容

1.Noisy Channel Model

2.Improved Error Model

3.EM-based Error Model

4.Discriminative Model

5.Phrase-based Error Model

スペル訂正とは

• タイプミスや思い違いを修正• 例:SHCOOL→SCHOOL

例:Googleもしかして

1. Noisy Channel Model

A Spelling Correction Program Based on a

Noisy Channel Model, M. Kernighan+. 1990.

基本原理

• 訂正候補のスコアを確率モデル化

• c: 出力の訂正候補

• t: 入力のタイポ

• スコアが最大or大きい順に候補を選ぶ

Noisy Channel Model

• P(c): 言語モデル

• 使われやすさを表す• P(t|c):エラーモデル

• 間違えやすさを表すKernighan+. 1990

言語モデル

• 単語N-gramモデル

• @machyさんが説明してくれたはず

• スペル訂正では単語unigramも可

エラーモデル

• エラーモデル=間違えやすさ• 間違えやすさってなに?• 文字列として似ているかどうか• キーボード上で近いかどうか• 発音や読みが近いかどうか• 意味が近いかどうか

編集距離

4種類の編集操作の回数を数える

単語 → 誤り

• 挿入: 東京都 → 東京t都

• 削除: 東京都 → 東都

• 置換: 東京都 → 東京群

• 転置: 東京都 → 東都京

重み付き編集距離

• 編集操作と文字の頻度で重み付け• 挿入と削除の1文字前を考慮

置換操作の表

2. Improved Error Model

An Improved Error Model for Noisy

Channel Spelling Correction, E. Brill+.

2000.

Improved Error Model

• エラーモデルに2つの拡張を加えた• 編集操作を複数文字に拡張• 誤りの出現位置を考慮• 単語の先頭は誤りにくい• 先頭、中間、最後の3値

E.Brill+. 2000.

拡張1:編集操作の拡張

f i s i k le

f i s i k al

f i s i c al

f y s i c al

ph y s i c alP(f|ph)×

P(i|y)×

P(k|c)×

P(le|al)

例:physical→fisikleの誤り確率

ちゃんと書くと

• 分割と結合で2つの周辺化が必要• 同じ文字への置換にも確率を与える

めんどいので確率最大の分割で近似

過程や…方法など…

拡張2:誤りの出現位置を考慮

• 編集確率を条件付きにするだけ• P(α→β|Position)

• Position={start, middle, end}

• 単語の先頭は間違えにくい• antler→entler

• reluctant→reluctent

そんなにモデルをリッチにして、スパースにならないの?

訓練フェーズ

• (誤り,正解)ペアの集合から学習する

• 以下の3ステップ

1.アライメントをとる2.複数文字に拡張する3.カウントして確率を求める

1. アライメント

• 誤りの文字と正解の文字を対応付ける• 編集距離が最小となる対応を選ぶ• 1文字の編集ならDPで一意に定まる

• 例: (akgsual, actual)

2. 複数文字に拡張

• 1文字の編集操作を抜き出す

隣接文字を加える※増えてる

3. カウントする

• 最尤推定(?)

• count(α)の推定には元コーパスが必要

• 誤らない回数も含める必要がある• 元コーパスがないとややトリッキー

EMアルゴリズムとの関係

• 「本質的にはEMアルゴリズムの1イテレーションを行っている」?

• コーパス中の分割は隠れ変数• すべての分割を等確率に初期化• 編集確率を推定• 分割方法の期待値を再推定

実験結果1

実験結果2

3. EM-based Error Model

Learning a Spelling Error Model from

Search Query Logs, F. Ahmad+. 2005.

問題設定

• クエリログからクエリの訂正を行なう• 誤りと正解のペアデータは必要ない• クエリログは10〜15%のスペルミスを含むので、ここから学習したい

EM-Algorithm

1.初期化:編集距離テーブルを等確率に2.E-Step:

• クエリログにスペル訂正を適用する3.M-Step:

• 編集距離テーブルを更新する• Eステップの候補と確率を使う

EMアルゴリズム

誤り確率の例

よくある置換

精度

正解データを使った場合よりは悪い

4. Discriminative Model

Improving Query Spelling Correction Using

Web Search Results, Q.Chen+. 2007.

最大エントロピー法

• @sleepy_yohsiさんが説明(ry

• 以下の式を最大化する識別モデル

• 素性としてWeb検索結果を突っ込む

素性

素性

ベースライン(生成モデル)の出力

検索ヒット数

URL文字列に訂正候補を含むか

訂正候補のタイトル・スニペット中の頻度

入力クエリのタイトル・スニペット中の頻度

略語かどうか

モデルの拡張

• 入力クエリだけでなく訂正候補で検索しなおす

実験結果

• M0→M1→M2と精度が向上

5. Phrase-based Error Model

A Large Scale Ranker-Based System for Search

Query Spelling Correction, J.Gao+. 2010.

3つの特徴

• 識別的な手法としてランク学習を利用• Webスケールの言語モデルを利用

• フレーズベースのエラーモデルを提案

1. ランク学習の利用

• 以下のような種類の素性を利用

素性

文字列の表層的な類似度

発音記号に基づく類似度

固有表現抽出に基づく素性

辞書(Wiki/MSDN/ODP)に基づく素性

頻度に基づく素性(クエリログやウェブ検索)

学習はニューラルネットor平均パーセプトロン

2. Webスケール言語モデル

• 合計13TBにも及ぶN-gramを利用

• Absolute Discountでスムージング

• SQLライクなMS製言語SCOPEを使用

• 検索も分散KVSで行なう

SQLライク…?

どうみてもMapReduceです(ry

3. Phrase-based Error

Model

• 単語より長い単位の誤りを扱いたい• 例:theme park → theme part

• 以下の手順に従って生成1.クエリをフレーズに分割2.各フレーズごとに編集操作を加える3.各フレーズを並び替え

誤りプロセス

近似と式変形

S:分割、T:スペル誤り、M:並び替え

sumをmaxで近似

MはA*で一意にアライメント

学習にはブラウザの検索ログを使います(キリッ

実験結果

Noisy Channel Modelによるスペル訂正を実

装してみた

おまけ

AOLのクエリログ

• 2006年にAOLが誤って(?)公開してしまった検索ログデータ

• 3ヶ月分のクエリログ(英語)

• 圧縮状態400MB、36Mクエリ

http://www.gregsadetsky.com/aol-data/

頻出クエリの抽出

頻度 クエリ

480780 -

172358 google

83006 ebay

70258 yahoo

65946 mapquest

59388 yahoo.com

49696 google.com

46089

myspace.co

m

35649 myspace

31185 internet

Trieであいまい検索

t

r

i

e

e

e

y

• 頻出クエリでtrieを作る

• 編集操作を許しながらたどる

訂正候補の例

•shcool→school

•gooogle→google

•nokuno→pokeno

ブートストラップ

• クエリログ自体にスペル訂正を適用スペルミス 訂正候補

goggle google

e-bay ebay

mysapce.com myspace.com

e bay ebay

myspace myspace.com

google google.com

wwww.google.com www.google.com

yahoo yahoo.com

goggle.com google.com

google.co google.com

参考文献

1. A Spelling Correction Program Based on a Noisy Channel

Model, M. Kernighan+. 1990.

2. An Improved Error Model for Noisy Channel Spelling

Correction, E. Brill+. 2000.

3. Learning a Spelling Error Model from Search Query Logs,

F. Ahmad+. 2005.

4. Improving Query Spelling Correction Using Web Search

Results, Q.Chen+. 2007.

5. A Large Scale Ranker-Based System for Search Query

Spelling Correction, J.Gao+. 2010.

発表者を募集しております

ご清聴ありがとうございました

top related