stop-the-world

takuya-a のブログ

Information Retrieval and Web Search まとめ(10): スペル訂正

前回は、Permuterm インデックスや k-gram インデックスを使ったワイルドカード検索について解説した。今回は、クエリのスペル訂正を扱う。

この記事は Information Retrieval and Web Search Advent Calendar 2020 の10日目の記事です。

adventar.org

スペル訂正

  • スペル訂正の応用
    • 文書作成 (MS Word, Google Docs, ...)
    • 携帯電話での入力
    • Web 検索
  • スペルミスの頻度
    • アプリケーションによるが、 ~1-20%
    • 26%: Webクエリ [Wang et al. 2003]
    • 13%: バックスペースなしでのリタイプ(英語とドイツ語) [Whiteelaw et al.]
    • 7%: 携帯電話サイズのハンドヘルドで、単語がリタイプで修正されたとき [Soukoreff & MacKenzie 2003]
    • 2%: 携帯電話サイズのハンドヘルドで、単語が修正されなかったとき [Soukoreff & MacKenzie 2003]
    • 1-2%: リタイプ [Kane and Wobbrock 2007, Gruden et al. 1983]

スペル訂正のタスク

  • スペル誤りの検知
  • スペル誤りの訂正
    • オートコレクト (hte --> the)
    • スペル候補のサジェスト
    • サジェストリスト

スペル誤りのタイプ

  • Non-word(単語ではない)エラー
    • graffe --> giraffe
    • Non-word エラーは歴史的には文脈に依存しないものだった
    • (古典的には)文脈に依存しない
  • Real-word(実単語の)エラー
    • タイポエラー
      • three --> there
    • 認識エラー(異形同音異義語 (homophone))
      • piece --> peace
      • too --> two
      • your --> you're
    • Real-word エラーはほとんど文脈に合わせて訂正する必要がある

Non-word スペル誤り

  • Non-word スペル誤りの検知
    • 辞書に入っていない単語はエラーとする
    • (ある一定までは)辞書を大きくすると改善される
    • Web 検索ではスペルミスが非常に多いので、大きい辞書の必要性は低い
  • Non-word スペル誤りの訂正
    • 候補生成
      • 元の入力と似ている実単語を候補とする
    • もっとも良い候補を選択
      • 重み付き編集距離 (weighted edit distance) が最短のもの
      • 雑音のある通信路 (noisy channel) での確率が最も高いもの

Real-word スペル誤り

  • 各単語 w について、候補集合を生成する
    • 発音が似ているもの
    • スペルが似ているもの
    • w も候補に含める
  • 最もよい候補を選択
    • 雑音のある通信路でスペル誤りを評価
    • 文脈依存
    • "Flying form Heathrow to LAX" --> "Flying from Heathrow to LAX"

候補生成

  • 以下の基準で候補となる単語を列挙する
    • 似ているスペルの単語
      • 編集距離が小さいもの
    • 似ている発音の単語
      • 発音の距離が小さいもの
  • 80% の誤りは編集距離 1 まで
  • 編集距離 2 まででほとんどの誤りがカバーできる
  • 以下のような方法で候補生成ができる
    • 辞書をなめて各単語について編集距離をチェック
    • 編集距離が k (k = 1 or 2) 以下の単語をすべて生成し、辞書との共通集合をとる
    • 文字 k-gram インデックスを使い、 Jaccard 係数などでもっともらしい k-gram の単語を辞書から探す
      • IIR 3.3.4 節参照
    • Levenshtein 有限状態トランスデューサで高速に候補単語を計算
    • 事前計算したマッピングを使う

Damerau-Levenshtein 編集距離

  • Damerau-Levenshtein 編集距離 (Damerau-Levenshtein edit distance) は、2つの文字列の編集距離を測る尺度の1つ
  • 文字の編集
    • 挿入
    • 削除
    • 置換
    • 隣接文字交換
      • これ以外は Levenshtein 編集距離と同じ
  • 編集距離については IIR 3.3.3 節を参照

Noisy channel モデルによる文脈非依存のスペル訂正

  • Noisy channel (雑音のある通信路)モデル
    • 観測された単語(誤りを含む)が、元の単語に何らかの雑音が付与されたと考える
    • 雑音を取り除くデコーダを構成し、それで逆変換することで、元の単語を推定することができる
  • 1990 年代に提案された
    • IBM
      • Mays, Eric, Fred J. Damerau and Robert L. Mercer. 1991. Context based spelling correction. Information Processing and Management, 23(5), 517–522
    • AT&T Bell Labs
      • Kernighan, Mark D., Kenneth W. Church, and William A. Gale. 1990. A spelling correction program based on a noisy channel model. Proceedings of COLING 1990, 205-210

f:id:takuya-a:20201210225842p:plain
Noisy channel モデルの概念図

  • ベイズの定理を使う
    • 真の単語の確率変数 w
    • 観測された単語の確率変数 x
    • 予測された単語 w^
  • P(xw) が Noisy channel モデルを表す
  • P(w) は単語の事前分布
    • 入力ログから学習できる
  • Non-word スペル誤りに対しては文脈(単語の周辺の情報)は不要
w^=argmaxwVP(wx)=argmaxwVP(xw)P(w)P(x)argmaxwVP(xw)P(w)

言語モデル

Noisy channel モデルの確率分布

P(xw)={del[wi1,wi]count[wi1wi],if deletionins[wi1,xi]count[wi1],if insertionsub[xi,wi]count[wi],if substitutuiontrans[wi,wi+1]count[wiwi+1],if transpositin
  • Add-1 スムージング
    • 混合行列のデータに出てこなかったスペル誤りは訂正できない
    • すべてのカウントに 1 を足すスムージングを入れて、これを回避する

評価データ

Noisy channel モデルによる文脈依存のスペル訂正

  • Real-word スペル誤りに対しては文脈(単語の周辺の情報)が必要
  • 文(クエリ)中の各単語について
    • 候補集合を生成する
      • 単語そのもの
      • 1文字までの編集で辞書に入っているもの
      • 異形同音異義語 (homophone)
  • すべての候補からもっともよいものを選択する
    • Noisy channel モデルを使って計算

Real-word スペル訂正の流れ

  • 候補生成
    • x1, x2, x3, ..., xn があったとする
      • xi は単語
    • 各単語 xi に対して候補集合を生成
      • Candidate(x1) = {x1, w1, w1', w1''}
      • Candidate(x2) = {x2, w2, w2', w2''}
      • Candidate(x3) = {x3, w3, w3', w3''}
  • 候補選択
    • P(Wx1,...,xn) を最大化する単語の並び W を選択する
    • P(w1...wn) には言語モデルを使う
      • たとえばバイグラム (bigram) 言語モデル
      • P(w1...wn)=P(w1)P(w2w1)...P(wnwn1)

Noisy channel モデルの改良

  • 重み付き Noisy channel モデル
    • w^=argmaxwVP(xw)P(w)λ
    • λ は開発セット (development test set) から学習
  • Richer edit [Brill and Moore 2000]
    • ent --> ant
    • ph --> f
    • le --> al
  • 発音を通信路のモデルに組み込む [Toutanova and Moore 2002]
  • バイスを通信路のモデルに組み込む
    • 端末ごとの違いを取り入れる
    • バイスごとにシステム的に分けてもよい

講義資料

参考資料