2011年3月10日@豊橋技術科学大学 言語処理学会第17回年次大会(NLP 2011) 変換ログを用いた 仮名漢字変換精度の向上 山口洋平 森信介 河原達也 京都大学情報学研究科 2011年3月10日 背景 • 統計的仮名漢字変換 – ひらがな文を仮名漢字混じり文に変換して出力 きかんしぜんそく ⇒ 気管支喘息 • 仮名漢字変換ログ – 変換システムの入出力の履歴 気管/きかん 支/し 喘息/ぜんそく – ユーザの言語活動の特性を反映 • よく変換する単語、表現 2 背景(続) • 目的:ユーザの特性の自動学習 • 問題 1. 語彙 (未知語の問題) • 語彙にない単語は出力できない 2. 言語モデルの傾向 • 同音異義語の選択を誤る 変換ログの活用の提案 – ユーザの特性を反映した語彙と文脈情報の追加 3 先行研究 • 統計的仮名漢字変換 – [森他, 情処論, 98] [Chen et al., ACL, 00] • テキストの部分文字列を変換候補に挙げる 仮名漢字変換 – [Mori et al. Coling, 06] – 未知語であっても変換候補に列挙 – 文脈情報を考慮 4 統計的仮名漢字変換(単語と読み) • 入力: y 出力: w • モデル: P(w|y) • w* = argmaxw P(w|y) = argmaxw P(w, y) – 確率が最大となる単語列を求める – 解探索: Viterbiアルゴリズム • 言語モデル P(w, y) – 単語と読みの組が単位のn-gramモデル • [森他, 情処論, 10] – 単語に読みがついたコーパスからパラメータ推定 5 テキストの部分文字列の利用(1/2) 1. テキストすべての部分文字列に対してすべての 可能な読みを辞書に追加(単漢字辞書を活用) 文字列表記:関手 可能な読み: かんて、せきて、かんしゅ、かんで、せきしゅ 2. テキスト中の全ての部分文字列を語彙とする n-gramを構築 – テキストの各文字の間の単語境界確率を推定 – テキストから文脈情報も得ている 6 テキストの部分文字列の利用(2/2) • 実際は計算量が膨大 • 近似 – 擬似確率的単語分割 テキストを乱数で揺らしながら単語に分割 – 擬似確率的読み付与 乱数で揺らしながら読みを付与 • 乱数の発生回数が多いと、より良い近似に 7 擬似確率的単語分割 確率的単語分割コーパス+乱数 = 揺れのある単語分割済みコーパス(×倍率) ≒ 確率的単語分割コーパス 例)単 0.2 項0.9イ 0.1デ0.1ア 0.1ル0.9 整0.3域0.3上0.9の 各文字間で 確率は KyTea で推定 1. 単語境界となる確率を推定 2. 0~1の乱数に従って境界かどうかを判定 試行 1 2 3 4 結果 単項 イデアル 整 域上 の 単項 イデ アル 整域 上 の 単項 イデアル 整域上 の 単 項 イデアル 整域 上 の 倍率4 8 擬似確率的読み付与 読み付与誤りに対処 • 単語の可能の読みとその確率を推定 • 乱数に従って、付与する読みを揺らす 関手 乱数(0~1)を発生 x 4 読み候補 せきて かんて かんしゅ 確率 0.434 0.280 0.195 かんで せきしゅ 0.050 0.041 確率は KyTea で推定 関手/せきて 関手/かんて 関手/せきて 関手/かんしゅ 未知語でも1つでも正し い読みが付与されれば、 変換候補に挙がる 9 変換ログ 難溶/なんよう/IN 性/せい/IN の/の/IN 製剤/せいざい/SUB エンゲ/えんげ/UNK 困難/こんなん/IN 、/、/IN • フォーマット – 表記/読み/出典 – IN:内部語彙、SUB:テキストの部分文字列、 UNK:未知語 ⇒ テキストの部分文字列が変換ログに出現 ⇒語彙として獲得 10 3種類のユーザモデル • 変換出力とユーザの意図が異なる時 ユーザはどう振舞うか 1.system IMEの ユーザ 変換出力 の意図 – 1-best出力 2.oracle – ユーザの意図通り 3.simu – 現実のユーザのシミュレーション 11 ユーザモデル1 system • 仮名漢字変換エンジンの出力を選択 – 誤分割や誤変換があってもそのまま確定 – 変換ログは誤変換(ノイズ)も含む 変換ログ ユーザの意図: 難溶性の製剤 変換出力: 南陽 性 の 製材 難溶 正 ノ 政財 南洋 聖 野 製剤 ・・・ 確定 南陽/なんよう 性/せい の/の 製材/せいざい ・・・ ・・・ ユーザモデル2 oracle • 必ずユーザの意図した結果を選択 – 誤分割や誤変換を必ず修正してから確定 – 変換ログは正しく修正された結果のみを含む ⇒未知語なら語彙獲得 変換ログ ユーザの意図: 難溶性の製剤 変換出力: 南陽 性 の 製材 難溶 正 ノ 政財 南洋 聖 野 製剤 ・・・ 確定 難溶/なんよう 性/せい の/の 製剤/せいざい ・・・ ・・・ 13 ユーザモデル3 simu • 現実のユーザのシミュレーション – system と oracle の中間 – 個人の入力の傾向、状況に依存 • 振る舞い – システムの出力とユーザの意図が異なる時 1. 割合 α で誤変換を確定 2. 誤確定箇所を消去 3. 再入力し正しい変換結果を選択 14 実験 • 変換ログを用いた仮名漢字変換精度の評価 – 3種類のユーザを想定 • 評価基準 – カバー率 • 語彙 V = V学習コーパス ∪ V変換ログ がテストコーパスの語彙 をどれだけカバーしているか • SUB は語彙ではなく単語候補 – 変換精度 • F値(文単位) 15 言語資源 学習コーパス テキスト ユーザの入力 テストコーパス 分野 単語境界 入力記号 一般 医薬 医薬 医薬 人手 自動 自動 人手 文字数 単語数 3,919,935 899,030 18,132,813 256,967 208,381 45,318 文数 33,141 275,091 30,000 1,000 一般:現代日本語書き言葉均衡コーパス 医薬:日本医薬情報センター 16 実験手順 1. 2. 3. 4. 5. 6. 学習コーパスから初期言語モデルを構築 ユーザの入力から300文を変換 変換ログを学習コーパスに追加 言語モデルを更新 テストコーパスに対する精度を計算 ユーザの入力全てに行き渡るまで2~5の 繰り返し(全100回) 17 ユーザの変換ログの作り方 • system: 1-best を変換ログに追加 • oracle: 正解を変換ログに追加 • simu – 誤変換の割合: α = 13/200 = 0.065 • あるユーザの変換ログから推定 a. systemとoracleが同じならsystemの方を追加 b. そうでないとき、 1. 乱数(0~1)を発生 α以下なら system の変換ログも追加 2. oracle の変換ログを追加 18 カバー率 100% 98% 96% 94% ユーザ system oracle 92% 90% 0回目の カバー率 89.63 simu 100回目の カバー率 system oracle 差(%) 98.06 99.56 +8.42 +9.92 99.54 +9.90 simu 88% 0 20 40 60 80 100 追加 回数 19 変換精度(1/3) 100% 95% 90% system oracle simu 85% 80% 75% 0 20 40 60 80 100 追加 回数 20 変換精度(2/3) 99% 99% 98% 98% system oracle simu 97% 97% 結果: simu > oracle > system 期待: oracle > simu > system 96% 96% 95% 0 20 40 60 80 100 追加 回数 21 変換精度(3/3) ユーザ system oracle simu 0回目の F値(%) 100回目の F値(%) 100回目の 再現率(%) 100回目の 適合率(%) F値の差(%) 78.14 97.95 98.39 98.46 98.07 98.38 98.45 97.84 98.40 98.46 +19.81 +20.25 +20.32 • 精度が向上 – 理由1:未知語である単語候補が語彙としてとれた – 理由2:言語モデルがよくなった • 100回目のF値: simu > oracle > system – 理由1:simu の変換ログの量は oracle の (1+α) 倍 – 理由2:ユーザの入力とその正解データを自動で分割 22 まとめと今後の課題 • ユーザの特性を動的に学習 – 変換ログの活用 • 語彙とその文脈情報の言語モデルへの追加 – 3種類のユーザモデルによる実験 • 今後の課題 – 変換ログの活用方法の工夫 • 補間 • ノイズ有りデータからの学習 – 文断片(文節程度)単位での実験 23 24 評価基準 • カバレージ – 語彙がテストコーパスをどれだけカバーできてるか • F値 – 仮名漢字変換の第一候補の精度 文 文字数 正解 警官の厚い人垣 に 傍まれた 出力 景観の熱い人が気にはばまれた 共通 の い人 に まれた F値 = Nref = 12 Nsys = 14 NLCS = 7 NLCS 1 2 7 = 13 (Nref + Nsys) 25 読み推定[森他, NLP, 10] • Q1: 学習コーパスに出現しているか? • yes – Q2: 読みが唯一か複数か • 複数⇒分類器を用いて読みを選択 • 唯一⇒その読みを選択 • no – Q2’: 辞書に入っているか • yes⇒最初の項目の読みを選択 • no⇒各文字の一般的な読みの連接 26 語彙 44000 42000 40000 system oracle simu 38000 36000 34000 32000 0 20 40 60 80 100 27
© Copyright 2024 ExpyDoc