Survey Kanakanji
Upcoming SlideShare
Loading in...5
×
 

Survey Kanakanji

on

  • 4,350 views

 

Statistics

Views

Total Views
4,350
Views on SlideShare
3,702
Embed Views
648

Actions

Likes
1
Downloads
17
Comments
0

5 Embeds 648

http://d.hatena.ne.jp 580
http://okyuu.com 40
http://cptl.corp.yahoo.co.jp 22
http://www.slideshare.net 5
http://beta-cptl.corp.yahoo.co.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Survey Kanakanji Survey Kanakanji Presentation Transcript

  • かな漢字変換エンジンの基礎 萩原研究室 M2  奥野 陽
  • 本発表の目的 かな漢字変換エンジンの基礎 奥野陽 かな漢字変換に関する情報のシェアとディスカッション
  • 「日本語入力」と「かな漢字変換」
    • 「日本語入力」 と「かな漢字変換」は使い分ける
    • Social IME は「日本語入力」についての研究
    かな漢字変換エンジンの基礎 奥野陽 日本語の入力方式 ・かな漢字変換 ・予測入力 ・音声入力 ・手書き入力 かなを漢字に変換するエンジン  ・入力:ひらがな文  ・出力:漢字かな混じり文 (Input Method: 日本語に限らず入力方式 )
  • かな漢字変換の歴史
    • ヒューリスティクス (80 年代)
      • Canna,Wnn
      • 人手による地道なパラメータ調整
    • 確率的言語モデル (2000 年代)
      • MS IME2007, ATOK2008, Anthy
      • コーパスによる自動的なパラメータ設定
    職人芸的な手法から 統計的な手法 へ (本発表では主に後者について解説) かな漢字変換エンジンの基礎 奥野陽
  • かな漢字変換エンジンの構造 かな漢字変換エンジンの基礎 奥野陽 ラティス構造
    • 「研究」
    • 「建久」
    • 研究する
    • 件窮する
    • 件急須る
    「けんきゅう」 けんきゅう けん きゅうす きゅう する る
  • 辞書検索
    • 線形探索
      • 辞書を上から順に見ていく
      • 実装が簡単だが…
      • 非常に低速:  O( 辞書サイズ )
    • 事前に索引を準備
      • ハッシュテーブル
      • Trie( トライ)
    かな漢字変換エンジンの基礎 奥野陽 かな漢字変換ではたくさんの辞書引きが発生するため、 事前に索引を準備 して高速化することが重要 ハッシュ 単語 0001 ジョジョ 0002 就活 0003 名取
  • ハッシュテーブル かな漢字変換エンジンの基礎 奥野陽 $address ["okuno "] = " 神奈川県 "; $address["saito"] =" 埼玉県 "; $address["ando"] = " 神奈川県 "; printf($address[" okuno "]); printf($address["saito"]); printf($address["ando"]); 使用例:名前から住所を検索する PHP コード 固定長の表に格納して検索するためには、 文字列を一定範囲の整数に変換する関数 が必要 ハッシュ関数 ハッシュテーブル: 固定長 の表 hash key value 00 - - ... 29 okuno 神奈川県 ... 51 saito 埼玉県 ... 92 ando 神奈川県 ...
  • ハッシュ関数
    • 一定範囲内でばらける関数(衝突が少ない関数)
    • 効率を追求するとキリがない
    かな漢字変換エンジンの基礎 奥野陽 int hash (char *kbuf, int ksiz, int bnum ) { int result = 751; while(ksiz--) { result = result * 37 + *kbuf++; } return result % bnum; } 例:ある DBM で使われているハッシュ関数 ※   kbuf, ksiz: ハッシュを計算する文字列とそのサイズ    bnum:  ハッシュテーブルのサイズ(格納するデータ数の数倍に設定) 参考 URL : http://alpha.mixi.co.jp/blog/?p=84
  • Trie (トライ)
    • 文字列検索に特化したデータ構造
    • 多分探索木の文字列版
    • 1文字=1ノードとして辿っていく
    • 様々な検索方法ができる(後述)
    かな漢字変換エンジンの基礎 奥野陽 キー: " おくの ", " おくれ ", " おこる ", " はい " Double Array というコンパクトかつ高速な実装方法が有名 参考 URL : http://nanika.osonae.com/DArray/index.html 文字列検索なら Trie
  • Trie で前方一致検索
    • 「研究」
    • 「健康」
    • 「剣士」
    • 「ケンタッキー」
    かな漢字変換エンジンの基礎 奥野陽 Trie なら先頭一致検索が可能 「けん」 予測入力に利用できる? ※ Double Array の場合、工夫が必要
  • Trie で部分文字列検索 かな漢字変換エンジンの基礎 奥野陽 Trie なら部分文字列検索が高速 「けんきゅうする」
    • 「研」「件」「県」「剣」…
    • 「建機」「嫌気」
    • 「研究」
    • 「急」「旧」「級」「球」…
    • 「急須」
    • 「臼」「薄」
    • 「する」
    ※ ハッシュだと文長 ^2 の辞書引きが発生
  • Trie で「もじぴったん」
    • 「もじぴったん」も部分文字列検索の一種
    かな漢字変換エンジンの基礎 奥野陽
  • ハッシュテーブル vs Trie かな漢字変換エンジンの基礎 奥野陽 完全一致検索だけならハッシュでもいいが、 部分一致検索や前方一致検索なら Trie ※ クエリ:検索する単語や文 ※ 追加や削除は両方とも比較的高速 両方とも実装はそれなりに難しいのでライブラリを使うとよい (ハッシュは衝突時の処理、 Trie は効率的な圧縮方式が面倒) 完全一致検索 部分一致検索 前方一致検索 ハッシュ O( クエリ長 ) O( クエリ長 ^2) × Trie O( クエリ長 ) O( クエリ長 ) O( クエリ長 )
  • かな漢字変換エンジンの構造 かな漢字変換エンジンの基礎 奥野陽 ラティス構造
    • 「研究」
    • 「建久」
    • 研究する
    • 件窮する
    • 件急須る
    「けんきゅう」 けんきゅう けん きゅうす きゅう する る
  • ラティス構造
    • ラティス構造 を用いて全ての変換候補をコンパクトに表現
    かな漢字変換エンジンの基礎 奥野陽 入力:「けんきゅうする」 「研究する」 「件窮する」 「件急須る」 … 入力を辞書から部分文字列検索して構築 けんきゅう ( 文頭 ) けん きゅうす きゅう する る (文末)
  • 接続コスト最小法 かな漢字変換エンジンの基礎 奥野陽 単語自体の「生起コスト」と単語どうしの「接続コスト」の和が 最も小さい経路 を正解とする 1 1 5 10 2 1 15 10 2 5 1 5 5 8 10 従来このコストは人手により調整されていたが… けんきゅう ( 文頭 ) けん きゅうす きゅう する る (文末)
  • 確率的かな漢字変換 かな漢字変換エンジンの基礎 奥野陽 0.05 0.05 0.05 0.001 0.08 0.1 0.001 0.001 0.08 0.05 0.1 0.05 0.05 0.02 0.001 確率的言語モデルを使い、 その文の生起確率が 最も高い経路 を選択する 確率値はコーパスを使って統計的に推定する けんきゅう ( 文頭 ) けん きゅうす きゅう する る (文末)
  • 生成モデルによる定式化 かな漢字変換エンジンの基礎 奥野陽 P(x) :確率的言語モデル 生コーパスから推定 c.f. ベイズの定理 「 確率的言語モデル 」と「 確率的かな漢字モデル 」に分割 P(y|x) :確率的かな漢字モデル 読みつきコーパスから推定 参考 URL : http://cl.naist.jp/~mamoru-k/chaime/statime.html :出力する変換候補 :入力の読みがな
    • 文 x を単語列 {w i } のマルコフ過程とみなす
    確率的言語モデルの例: N-gram かな漢字変換エンジンの基礎 奥野陽 C(w): コーパス中の w の頻度 0.1 0.05 0.1 0.08 直前の単語のみに依存するように近似
  • Google 日本語 N グラム
    • Web 全体から 200 億文を統計処理
    • 日本語 N-gram 形式 ( N:1 ~ 7 )
      • 単語1 単語2  頻度
      • 日本人 かっこいい 134
      • 日本人 かも 2592
      • 日本人 から 95266
      • 日本人 かわいい 21
      • 日本人 かわいそう 20
      • 日本人 が 1779058
    2-gram の 例:
  • 確率的かな漢字モデル C(...): コーパス中の頻度 読みがふられたコーパスを使って推定する必要がある 1.0 1.0 0.9 1.0 1.0 ( Social IME のログが使えるのではないか?) ぶろぐ で にっき を かく ブログ で 日記 を 書く
  • まとめ:隠れマルコフモデル かな漢字変換エンジンの基礎 奥野陽 「文の生成確率」と「読みの生成確率」の両方を考慮 0.1 0.05 0.1 0.08 1.0 1.0 0.9 1.0 1.0 ぶろぐ で にっき を かく
  • 経路の探索 かな漢字変換エンジンの基礎 奥野陽 全探索では       の計算量になり、重すぎる n m 格子状に単純化した例
  • ビタビアルゴリズム かな漢字変換エンジンの基礎 奥野陽 不要な計算を省くことで、計算量を       に抑えられる n m 計算方向 ※ 一つ前のノードが一意的に決まる
  • その他の応用 かな漢字変換エンジンの基礎 奥野陽   P(x) P(y|x) で色々できる 言語モデル × 応用モデル
  • 参考文献
    • 北研二 , 辻井潤一 . 確率的言語モデル , 東京大学出版会 ,1999
      • Daniel Jurafsky, James H. Martin. Speech and Language Processing
    • 森信介ほか . 確率モデルによる仮名漢字変換 , 情報処理学会論文誌 , 1998
    • 森信介 . 無限語彙の仮名漢字変換 , 情報処理学会論文誌 , 2007
    • http://zelch.dnsalias.org/mori/research/public/NL06Mar.pdf
    • 小町守 . ChaIME: 大規模コーパスを用いた統計的仮名漢字変換
    • http://cl.naist.jp/~mamoru-k/chaime/statime.html
    • ハッシュテーブルについて
    • http://alpha.mixi.co.jp/blog/?p=84
    • Jyunniti Aoe etc. An Efficient Implementation of Trie Structures 1992
    • http://www.cs.ubc.ca/local/reading/proceedings/spe91-95/spe/vol22/issue9/spe777ja.pdf
    • Double Array について
    • http://nanika.osonae.com/DArray/index.html
    • 工藤拓 , 賀沢秀人 . Web 日本語 N グラム第 1 版 . 言語資源協会発行 . 2007
    かな漢字変換エンジンの基礎 奥野陽