概要

1　はじめに
コンピューターを用いて日本語を入力する際,キーボード操作や日本語IMEにおける，かな漢字変換の選択誤りといった操作上の誤りで意図通りに入力できなかったり，入力を意図した文章自体に文法等の誤りが含まれ，結果的に誤った文章として入力されてしまうことがある.これらの誤った文章は読み手にとって不自然に感じられ、なめらかに読み進めることを阻害するだけでなく，書き手が本来意図した内容が何であるかの推測を強いたり，意図と異なる内容として伝わったり，文章に対する信頼性を下げてしまったりするという問題がある．一方，このような誤りを人の手で確認・訂正することは，継続的な集中を必要とする作業であるため，計算処理により自動化したり支援したりすることが求められる.このような誤りを含む文章を訂正する試みは，主に外国語の学習支援を目的とした，文法誤り訂正(Grammatical Error Correction: GEC）を中心にいくつかのシェアードタスクが提案され研究されてきた[1].また，その周辺ではスペルミスの訂正，文章校正の自動化，入力誤りの訂正などのタスクやデータセットが提案されている. これらのタスクは文章の誤り自体だけでなく，修正すべき箇所や正解の定義が難しく，主に提案されているデータセットの作成プロセスに依存したより広範囲な訂正タスクとなっている.本研究では主に入力誤りを訂正した履歴に基づくデータセットを学習・評価に利用するため，結果的に日本語の入力誤りにフォーカスしたものである.その中でも日本語入力については，その読みをローマ字で入力し、かな漢字変換するのが一般的であったり読みの情報が誤り修正に有用であるという報告[2]から，読み情報を多様な形で利用するいくつかの訂正モデルを構築して比較評価した.
2　関連研究
2.1 文章の誤りの訂正
この分野の研究において近年はニューラルモデルを用いた手法が主流になっているが，主に分類問題として解く方法とSeq2Seq形式で解く方法の2種類に大別される. 1つ目は分類器を用いるアプローチである. GECToR[3]はGECをToken Classification, 具体的には入力文章の各Tokenに対し，KEEP, DELETE, APPEND, REPLACEに分類するとともに，カンマの追加，複数形への変更，置き換え後の単語といった具体的な訂正内容の分類を並行して行う．これにより単に訂正できるだけでなく，分類結果により具体的にどのような文法的な誤りだったかを示すこともできる. 2つ目は機械翻訳で利用されるSeq2Seq形式のモデルを利用するアプローチである．原文から翻訳文への出力の代わりに，誤文から訂正文を出力するSeq2Seqモデルを構築するアプローチであり，機械翻訳で用いられているノウハウの多くを利用するこ

とができる[4].
2.2 マルチタスク学習
本研究では，日本語の入力誤りの一因が読みからの変換誤りに起因することから，読みの情報を利用するために，読みを推定したり読みも含めて誤りを訂正したりするマルチタスク学習をすることで改善を目指した.マルチタスクを解くためのアプローチはいくつか提案されており， 1. prefixに目的とするタスクを入れる方法.  2.入力や出力をテキストとして連結して複数の情報を入出力する方法. 3. Decoderを複数用意し，タスクごとにDecoderを学習する方法などが提案されている.それぞれ1つ目の手法は, T5と呼ばれるマルチタスクで学習された事前学習モデルにも採用されている手法であり，例えば“translate English to German: "というprefixを与えた上で翻訳タスクを, “summarize: ”というprefixを与えて要約を学習させることでそれぞれの能力を同時に持ったモデルを獲得している[5]. 2つ目の手法は，出力に性質の異なる複数の情報を与え，それらも含めた入出力を学習する手法である。例えばEncoder-Decoder構造の音声認識モデルにおいて，Decoderにて音声認識結果のテキスト系列だけでなく言語の判別、音声の開始終了時刻を示すタイムスタンプなど，多様な情報を出力系列に埋め込むことで同時に学習している事例がある[6]. 3つ目の手法は、1つのEncoderの出力を利用して，個別のタスクに特化した複数のDecoderで出力する手法である. 例えば，入力の音声をEncoderで符号化し，その符号情報を入力にして，異なる２つのDecoderで音声認識結果，および音声認識と同時に翻訳結果を出力するタスクを組み合わせて学習した事例が報告されている[7].
3
実験
3.1 構築したモデル
読みの情報を併用して入力誤りを訂正するため,表1に示すような多様な構成でのモデル構築を行った．条件2–4は読みを推定する能力自体をモデルが学習することを期待し，条件5–7は読みの情報を別途与えることで読みの情報も利用する能力をモデルが学習することを期待している.共通して事前学習モデルはretrieva-jp/t5-base- longリを利用し，学習には日本語Wikipedia入力誤りデータセット(v2)[2]のtrain分割データを利用した.また，読みはMeCab(UniDic Lite)にて付与されたカタカナ表記のものをひらがなに変換して利用した.ひらがなに変換したのは予備実験によりカタカナ表記のままより，ひらがな表記に変換して利用した方が概ね良い結果が得られたためである.ファインチューニングにおいて入力として訂正前の誤文を与える際prefixに“訂正: ”を付与した. 入力に読みも含めて与える場合，このprefixと誤文の後に続く形で“読み: ”を続け、その後に読みの文章を与えた．同様に出力について訂正文を出力する際は“訂正文: ”を，読みを出力する場合は“読み方: ”をprefixとして出力するように学習した．条件2,6については訂正文と読みを一つの文章として出力するが，文字列として連結して出力するように学習した.その他、学習時のパラメータは各構築条件で共通して，エポック数=2,勾配累積=2,学習率=1e-4,バッチサイズ=3で実施した.いくつかの構築条件について補足すると，条件3, 7における異なる2つのDecoderについては,  1つの同じEncoderの出力を，それぞれ独立した２つの
Decoderに入力して訂正文，および訂正文の読みを生成する学習を行った．なお，学習時のlossはこれら2つのDecoderのlossの合計を利用している．また予備実験において訂正文を生成する能力と訂正文の読みを生成する能力をバランスよく学習できない状況が見られたため，同じ構成においてパラメータ調整として読み（訂正文）を出力するDecoderのlossを0.5倍して学習する条件も追加して比較検討した. 以降これらを条件3’, 7’と表記する.条件4については誤文から訂正文を生成するデータと，訂正文由来の文章を入力にその読みを生成するデータをprefixにてタスクを分けた上で混合して同時に学習した.
3.2評価
評価は日本語Wikipedia入力誤りデータセット(v2)のtest, およびgold分割に対して適合率，再現率，Ｆ値，GLEU+にて行った．また，評価前にはそれぞれUnicode NFKC正規化をかけた.適合率，再現率の計算は文字単位の追加，削除,置換の最小編集について，誤文からシステムの出力に対する編集と，誤文から正解となるリファレンスに対する編集を比べて編集箇所と内容が一致した編集数を分子に，誤文からシステムの出力の編集数を分母にしたものを適合率，誤文からリファレンスのテキストの編集数を分母にしたものを再現率とした。 GLEU+はGECの評価に用いられる評価指標で[8],文字単位での評価を行った.
結果
4
4.1 定量評価
日本語Wikipedia入力誤りデータセット(v2)のtest, gold分割における評価結果を表2に示す.条件1のbaselineと比較して読みの推定も含めて学習した条件2, 3, 3’, 4や条件6は悪化，読み情報を入力として与えた条件5, 7, 7’は同程度〜精度向上する結果となった.条件2, 6について，それぞれ一連の文字列の中で訂正文と読みを生成する構成であり、この形式での生成が他の条件より困難であり精度が上がらなかった可能性が考えられる．条件2, 3, 3’, 4は読みを生成する構成であるが、学習データの特徴量やサンプル数などが不十分で読みが推定できるまで学習できずに精度が上がらなかった可能性が考えられる．一方，条件5, 7, 7’は読み情報を別途入力として与え,この情報を利用することで精度が向上した可能性があると考えられる．特に条件7’については，読みの情報を使いつつ最終的な目的タスクの学習が促進されるようにlossの調整を行ったことが精度の向上に寄与したと考えられる.日本語Wikipedia入力誤りデータセット(v2)にはマイニングした結果として誤りの分類が付与されている. カテゴリの定義の概要を表3に，test分割に付与されているカテゴリごとの評価結果(F値のみ)を表4に示す.この結果より，条件1のbaselineに対して，特に条件5, 7, 7’において実験前に期待していた誤変換の精度向上が確認できる．一方誤変換以外の誤字や脱字といったカテゴリについても精度向上が見ら
例1例2例3例4れ，読みの情報が他のカテゴリの誤り訂正にも寄与した可能性が考えられる.
5終わりに
4.2入出力事例
最も精度が良かった構築条件7’における入出力の事例を表5に示す.例1においては本来「豚肉」と訂正されるべきものであり，入力時に「ぶたくに」と誤って入力・変換されたものと推察されるが，入力自体が誤りであるため読みの推定に正解を与えること自体困難であることが伺える．このような課題に対しては入力時の変換前の情報や，推定される複数の読み候補の導入が有効であると考えられる.例2は読みの訂正のみが正解した事例である．いくつかのエラーを分析したところ，この例のように元の文章や読みの片方だけ正解する事例も散見された．このことは元の文章での訂正と，読みにおける訂正が独立したDecoderで行われている事が一つの要因として考えられる.例3, 4はそれぞれ正解した事例である．これらの事例だけを見て読み情報が訂正の精度向上に寄与したことを示すのは困難であるが，構築条件1.のbaselineでは【昔く→ (削除)】や【純の→純の】と誤った事例である.本研究では読みの情報を用いる事で日本語の入力誤り訂正モデルの精度向上を目指した．結果的に読みを推定させるより，別途与えた上で読みも含めた訂正を行う事で精度向上を達成することができた.モデルに読みを推定させる構築条件について，読み推定能力を十分に獲得できなかったため精度が下がったと考えられるが，その能力を獲得できた場合，別途読み情報を与えずとも精度向上することが期待される.これには，例えば読みで構成されたデータセットを併用した事前学習モデルや，より大規模なデータに基づき，読み推定が十分にできるような追加事前学習をしたモデルをもとにファインチューニングすることで達成できる可能性がある.また，読み情報を与えた条件5, 7, 7’について，読みも含めた訂正が精度向上に寄与したが，エラー分析結果より読みだけが正解したり，その逆のケースも存在した．条件3, 3', 7, 7'の構成について，2つのDecoderは独立して訂正している. これは，誤り訂正を利用する際に２のうち１つのDecoderだけで良いという計算量上のメリットがあるが，相互結合することで双方の訂正の結果を受けた訂正により精度向上する可能性があると考えられる.