Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

AIによる自然言語処理を活用したゲームシナリオの誤字検出への取り組み

Cygames
August 31, 2023

 AIによる自然言語処理を活用したゲームシナリオの誤字検出への取り組み

2022/08/25 CEDEC2022

Cygames

August 31, 2023
Tweet

More Decks by Cygames

Other Decks in Technology

Transcript

  1. 6/55 はじめに n 社内のシナリオライターが使⽤するツール n 執筆、監修、台本作成などの豊富な機能 n Cygames Tech Conference

    : ウマ娘 プリティーダービーの⼤規模シナ リオ制作を効率化するソリューション 〜社内Webアプリ開発運⽤事例〜 社内向けのシナリオ執筆ツール
  2. 7/55 最初の誤字検出機能を開発 誤字なし 誤字あり 誤字の種類 写真を撮ってほしい 写真を取ってほしい 漢字の間違い おはようございます おはいようございます

    余計な⽂字が⼊っている 掛けてもらった 掛けて貰った 補助動詞が漢字 n 誤字検出機能を開発、ツールへ組み込み n 誤字の位置を求めることができるようになった 最初の誤字検出機能 n シナリオ執筆ツールのユーザー「シナリオの誤字をAIで⾒つけて欲しい」 開発の経緯
  3. 16/55 ⾃然⾔語処理モデルBERT n 2018年10⽉にGoogleから発表された⾃然⾔語処理モデル n 翻訳、⽂書分類、質問応答などのタスクで当時の最⾼スコアを達成 n ⾃然⾔語処理でよく使われている BERT n

    新しいモデルが登場 n 前回使ったので慣れている n ドキュメントが充実 なぜBERT? n 今回の実装で参考 n 資料の最後に記載 参考⽂献
  4. 17/55 BERTの学習 ⼊⼒ 今⽇ は MASK です いい BERT 分類スコアが最⼤の単語

    正解ラベル 今⽇ は ? です いい 今⽇ は 天気 です いい n ⼊⼒トークンをランダムで[MASK]に⼊れ替え n 正しいトークンをクラス分類問題として学習(クラス数=BERTの語彙数) n BERTはトークンごとのラベルの分類スコアを出⼒ テキストの⽳埋め問題
  5. 18/55 BERTによる⽂章校正(学習) 誤字のある⽂章 今⽇ MASK 天気 です いや BERT 誤字のない⽂章

    今⽇ ︖ 天気 です いか 今⽇ は 天気 です いい 分類スコアが最⼤の単語 n ⼊⼒︓誤字のある⽂章 n 正解ラベル︓誤字のない⽂章 ⼊⼒と正解を⼊れ替え
  6. 19/55 BERTによる⽂章校正(推論) 推論時にはトークンごとに分類スコアを求める n 分類スコアが最⼤の単語を選ぶ 誤字のある⽂章 今⽇は は 天気 です

    BERT 分類スコアが最⼤の単語 >訂正候補 今⽇ は 天気 です 推論結果 {c:[ʻ今⽇ʼ,ʼはʼ,ʼいいʼ,ʼ天気ʼ,ʼですʼ], index:2} いや いい
  7. 22/55 ゲームシナリオ 学習データセット ⽣成した誤字パターンの数 シナリオ1⾏ 誤字を⽣成 x5 誤字あり⽂章 元の⽂章 x5

    元の⽂章 元の⽂章 x5 n 元の⽂章も5つ追加して、5:5とした n 正しい⽂章を正しいと学習してほしい ゲームシナリオ1⾏から5パターンの誤字を⽣成
  8. 23/55 プロジェクトA+B プロジェクトB プロジェクトA データセットを分ける︖合体する︖ n 明らかに精度が落ちたのでボツ n ゲームごとのシナリオの傾向が原因か 合体したほうが精度が⾼いのでは︖

    データセット モデル データセット モデル データセット モデル n 90万⾏と170万⾏のゲームシナリオ n 今回はデータセットとモデルをそれぞれ作成 2つのゲームプロジェクトが対象
  9. 24/55 以前のバージョンとの⽐較 以前のバージョン 新しいバージョン 機械学習モデル 3つの機械学習モデル BERT>BERT>RandomForest 1つの機械学習モデル BERT メンテナンス性

    低い ⾼い 実⾏時間(AWS Lambda上) 5〜10分 5分以下 出⼒ 誤字の位置 誤字の位置と訂正候補 誤字が無いことを正しく推論 88% 90% 誤字の位置を正しく推論 23% 63%
  10. 28/55 誤字パターンの改良(その1) n 「よく間違えられる単語リスト」を使って⼊れ替え(*) n ひらがなに囲まれている「ない」を削除 n 「っ」を落とす n 「が」「を」などの助詞を⼊れ替える

    n 助詞を落とす n ひらがなのABをBABにする n ひらがなorカタカナをランダムで1⽂字落とす n 詳細はCEDEC2021の発表資料を参照 以前の誤字パターン(7つ) n (*)の部分と⼊れ替え n 詳細を次で説明 ⽇本語Wikipedia⼊⼒誤りデータセットを導⼊
  11. 29/55 ⼊⼒誤りデータセット 誤字パターンの改良(その2) 訂正前の⽂章 訂正後の⽂章 訂正される単語 訂正後の単語 訂正の種類 n 京都⼤学

    ⿊橋・褚・村脇研究室 n JSON形式で⼊⼒誤りを訂正した情報 ⽇本語Wikipedia⼊⼒誤りデータセットを導⼊
  12. 30/55 ⼊⼒誤りデータセット ゲームシナリオ 誤字パターンの改良(その3) 教 ⇨ 今⽇ 今⽇はいい天気です 学習データ 教はいい天気です

    ゲームシナリオに適⽤ n 訂正後の単語をゲームシナリオから検索 n 訂正前の単語で置き換えて誤字を⽣成 n 単純な⽂字列マッチング(2⽂字以上、品詞は無視)
  13. 32/55 トークンマッチングの⼯夫(その1) n トークン数が⼀致するデータセットしか利⽤できない n 全体の6割程度しか利⽤できない(もったいない︕) 今回の仕組みはトークン数の⼀致が必要 n 2つの⽂章のトークンがずれている場合の処理 n

    元の⽂章にPADを⼊れて対応を取る(⼀番対応が取りやすいところへ) n 推論時の出⼒にPADがあれば削除 PADを使って調整 誤字のある⽂章 教 は 休み に し よ ー 元の⽂章 今⽇ は 休み に し よ ー 誤字のある⽂章 準備 は で い て いる。 元の⽂章 準備 は でき て いる。 調整後 準備 は [PAD] でき て いる。
  14. 33/55 トークンマッチングの⼯夫(その2) PADの数 利⽤できる⽂章の割合 0 64.12% 1 78.57% 2 85.84%

    3 86.50% 4 86.64% n PADの数を増やすと利⽤できる⽂章が増える n 増やしすぎると推論の精度が落ちる n PADの最⼤数3が推論の精度が最⼤に PADの数を増やした場合の⽐較
  15. 37/55 最終的な精度 n テストデータ10万⾏(誤字なし・あり、40%が誤字) n プロジェクトA︓データセット 170万⾏ n プロジェクトB :

    データセット 90万⾏ 分離しておいたテストデータでテスト 正しく判定 プロジェクトA 正しく判定 プロジェクトB 誤字を正しく訂正 38% 32% 誤字の位置を正しく検出 66% 60% 正しく判定 プロジェクトA 正しく判定 プロジェクトB 誤字のない⽂章 94% 87% 誤字のある⽂章 72% 72%
  16. 41/55 誤字検出実⾏までのUIの改善 シナリオ執筆画⾯ ⼀括処理画⾯ シナリオ検索 誤字検出実⾏ 結果待ち 結果確認 以前のUI 新しいUI

    シナリオ執筆画⾯ 誤字検出実⾏ 結果待ち 結果確認 シナリオ執筆画⾯に 追加されたボタン
  17. 44/55 ルールベースの⽂章校正機能 n 漢検1級、準1級の漢字を検出 n よく使われる漢字ならOK n 漢字のテーブルを持っておいてマッチしているだけ 難しい漢字の検出 胡

    坐 n 補助動詞に漢字が使われていたら検出 n 例︓ちょっと寄って来る 補助動詞の漢字を検出 n ⽂章校正のチェック対象 n ら抜き⾔葉が全部NGではない ら抜き⾔葉を検出
  18. 46/55 補助動詞の検出 n Juman++ : 形態素解析システム 京都⼤学 Juman++での形態素解析の結果を利⽤ ⾒出し 参考

    に して 頂く 品詞 名詞 助詞 動詞 動詞 意味情報 - - - 付属動詞候補 n 「参考にして頂く」の「頂く」を検出したい n Juman++で形態素解析 n 品詞と意味情報をパターンとして登録 検出したい⽂章からパターンを作成 パターンとして登録
  19. 47/55 補助動詞の検出例 ⾒出し 今 から 話して 下さい 品詞 名詞 助詞

    動詞 接尾辞 意味情報 - - - - ⾒出し これ まで も 戦って 参り ました が 品詞 指⽰詞 助詞 助詞 動詞 動詞 接尾辞 助詞 意味情報 - - - - 付属動詞候補 - - 品詞 動詞 接尾辞 意味情報 - - 品詞 助詞 動詞 動詞 接尾辞 意味情報 - - 付属動詞候補 パターン マッチング パターン マッチング
  20. 50/55 ら抜き⾔葉を検出(その2) ⾒出し 5 時 に 来 れ ます か

    代表表記 - 時/じ - 来る/くる れる/れる ます/ます か 活⽤形1 * * * カ変動詞来 ⺟⾳動詞 動詞性接尾辞ます型 * n あるトークンの代表表記が「れる/れる」 n ⼀つ前のトークンの活⽤形1が「未然形」「カ変動詞来」「⺟⾳動詞」 検出の例︓5時に来(ら)れますか
  21. 51/55 ら抜き⾔葉を検出(その3) n 検出158 正解148 失敗10 n ⾒逃しているケースもある n 誤検出は少ない

    シナリオ全体でテスト n こんなにたくさん⾷べ(ら)れない n 初⽇の出が⾒(ら)れた n あの⼈が来るとは考え(ら)れない 正しく検出 n 写真撮ってきたから⾒れ︕ n あれ︖あれれれ︖ n 今こそ来たれ︕ 誤検出
  22. 55/55 参考⽂献 n BERTの各種タスクの使い⽅をわかりやすく説明 n 第9章 ⽂章校正を参考にして誤字検出を実装 BERTによる⾃然⾔語処理⼊⾨ ストックマーク株式会社 (編集),

    近江 崇宏, ⾦⽥ 健太郎, 森⻑ 誠, 江間⾒ 亜利 (共著) オーム社 n Transformer/BERTの動作の説明が詳しい 作ってわかる! ⾃然⾔語処理AI 坂本 俊之 シーアンドアール研究所