5. 日本語学習支援ユーザインターフェース 40
5.2 日本語校正ユーザインターフェース Chantokun
5.2.2 訂正エンジン
格助詞の訂正エンジンには,単純な確率ベースの訂正手法を使用している.こ のモジュールでは,学習者の作文をユーザインターフェースから受け取り,前処 理としてIPADic-2.7.037で学習させたMeCab-0.9838を用いて単語分割を行う.
我々の訂正エンジンではkakujoshiListを用いる.
kakujoshiList=
(が,を,の,に,から,と,で,へ,まで,より,は,には,からは,とは,では,へは,までは,よりは) (3)
37http://sourceforge.jp/projects/ipadic/
38http://mecab.sourceforge.net/
図 10 2つのモードを自由に切り替え
今日、私は学校を行き ました。
日本語の学習
辞書
学校 を 行き ……… 出現頻度低い 学校 に 行き ……… 出現頻度高い 学校 へ 行き ……… 出現頻度高い 学校 が 行き ……… 出現頻度低い :
今日、私は学校を行きま した。
日本語の学習
大規模 データ
作成
図 11 格助詞誤り訂正の概観
訂正箇所の検出 単語分割された学習者の作文の中で,kakujoshiListに含まれる 単語があれば,その単語と前後の単語を含む単語トライグラムw1, w20, w3の確率 を式4より計算し,一定の閾値より低い場合に誤りだと検出した.閾値の決定は 実際にアプリケーションを使用してみて妥当である値に定めるというヒューリス ティクスな方法を用いた.
P(w20|w1, w3) = C(w1, w02, w3)
P
w2C(w1, w2, w3) (4) w2はkakujoshiListの要素である.
訂正候補の提示 誤りだと検出された箇所に対し,システムが出力する訂正候補 は,前後の単語w1, w3は変更せずに,訂正対象の助詞w02をjoshiList内の他の要 素と入れ替えて構成されたトライグラムの頻度をそれぞれ求め,もっとも頻度が 高くなる助詞wˆ2であるとする.
ˆ
w2 = arg max
w2
P(w2|w1, w3) = arg max
w2
C(w1, w2, w3) 図11に格助詞誤り訂正の概観を示す。
図12はシステム全体の構造の概要を示している.CGIサーバで動作している
図 12 アプリケーション全体の構造
訂正エンジンはユーザインターフェースを介して学習者からの入力文を受けとり 誤り訂正などの処理を行う.そしてJSON形式で返送すると,ユーザインター フェース側がJSONのデータを解析し,誤りに応じた装飾などのマークアップを 行い表示する.以下に訂正エンジンが取り扱う入出力の例を示す.
表 15 訂正エンジンが取り扱うJSONの要素
要素名 格納される値 値の型
node id 単語の識別番号 int
word 単語の表層 string
error 誤りの種類とそのスコア stringとfloatのタプル
correct 訂正候補 string
score39 誤りのスコア float
訂正エンジンが取り扱う入出力の例
・入力(文): 私はご飯が食べる
・出力(JSON): {”items”:[
{”node id”:0,”word”:”私”,”error”:”None”:0,”correct”:”None”,”score”:”None”}, {”node id”:1,”word”:”は”,”error”:”None”:0,”correct”:”None”,”score”:”None”}, {”node id”:2,”word”:”ご飯”,”error”:”None”:0,”correct”:”None”,”score”:”None”}, {”node id”:3,”word”:”が”,”error”:”kakujoshi”:6.254126534,”correct”:”
を”,”score”:6.254126534},
{”node id”:4,”word”:”食べる”,”error”:”None”:0,”correct”:”None”,”score”:”None”} ]}
ここで各フィールドが持つ要素を表15に示す.
インタラクティブな操作を実現するためには,入力に対して即時の対応が要求 される.総異なりトライグラム数がおよそ4億種類もある非常に大規模なデータ のWeb日本語Nグラムを素早く辞書引きするため,大規模データ検索システム のssgnc-0.4.640を利用した.ssgncを用いることにより辞書引きの時間はかなり短 縮されるが,辞書引き回数が多くなると,即時性が求められるアプリケーション ではボトルネックになりうる.そこで,格助詞の確率を求めるときに,毎回すべ ての格助詞の頻度を辞書引きして和を求めるのは時間がかかるため,あらかじめ 和を計算して,Key-Value StoreのKyoto Cabinet-1.2.7241に格納しておくことで 辞書引き回数を減らし,高速化のための工夫を行った.
39error要素内のスコアと同じ値が格納されるがscore要素は誤り検出時に,error要素は誤り
訂正時に参照することを想定している.
40http://code.google.com/p/ssgnc/
41http://fallabs.com/kyotocabinet/
アプリケーション実行時に,格助詞誤り訂正の対象となりうるすべての箇所に 対して,誤りを検出するために式4の確率を計算する必要があり,Kyoto Cabinet を用いる前ではすべてのkakujoshiListの要素に対するトライグラムの頻度を調べ るために18回ssgncを用いて辞書にアクセスする必要があったが,Kyoto Cabinet に和を格納しておくことにより,分母のPw2C(w1, w2, w3)を求めるためにKyoto Cabinetに1回,分子のC(w1, w20, w3)を求めるためにssgncに1回の,計2回の アクセスで確率の計算をすることが可能となった.