ベイズ理論を用いたキー入力の間違い推定法の検討
西村 希槻 * 寺澤 卓也*
A study on error estimation method of key input using Bayesian theory
Kizuki NISHIMURA* Takuya TERASAWA*
Abstract: In this paper, we proposed and evaluated a novel method to find mistypes in documents based on Bayesian
theory. We considered that the characters entered just before mistyping are factors causing input errors. First, log data of key input is acquired for each user. Next, we obtain only the characters entered just before mistyped characters from the log data then analyze them. Finally, with these parameters, using the Bayes' theorem formula, the probability of mistaking the character immediately after the character which becomes the factor of mistype is calculated for each character. Under the cooperation of students, we confirmed there is a habit of keyboard input that cause mistype for each user, which we supposed for our method. Using documents from students that were made by themselves, we verified our method. Comparing characters that were placed just before mistypes found by eyes in a document and the characters with high probabilities that were calculated for that student by our method produced match rate of 93% in a realistic case.
Keywords: Proofreading Support, Bayes' Theorem, Keyboard input log data analyze, n-gram
1. はじめに 近年,PC で数千字の文書を書くことは少なくな い.これだけの字数があると,一定量の誤入力が起 きることが考えられる.しかし,数千字の中から目 視で誤字を検出することは困難である.そのため, PC で文書作成,資料を作成する際には文書校正機 能の必要性は高い.ワードプロセッサには,文法的 な校正機能が搭載されており,日本語の文法情報が 登録された辞書を用いて,文章の文法構造が正しい かチェックしている.したがって文法構造が正しい 場合は,単語の打ち間違いや文章中の不自然な位置 に入力された文字の校正ができないことがある. その例を図 1 に示す. 図 1 ワードプロッセッサによって検出できない 誤入力の例(Microsoft Word 2016) 図 1 の例は,それぞれ「自動的に、」,「アンドロイ ドの開発ツールである。」とするはずであったと考え られる.これらは,文法的には正しいと判断された * 東京工科大学大学院 バイオ・情報メディア研究科
Graduate School of Bionics, Computer and Media Sciences, Tokyo University of Technology
ため,誤入力として検出されなかったと考えられる. また,文書の誤りでは,ミスタイプや誤変換とい った局所的に現れる誤りのほうが文法的な誤りより も多いといわれている[1].現在は,ワープロソフト によっては校正用辞書があり,単語の打ち間違いを 校正する機能がある.しかし,単語を入力する際に どの文字を別の文字として打ち間違うことが多いか など,打ち間違いのパターンを把握した上で,登録 する必要がある.例えば,あるユーザが「あと」と 入力しようとして「あっと」と入力してしまったと する.この場合,文法構造が正しいと判断されると, これが打ち間違いであると判断されるには,単語の 校正辞書に「あっと」が打ち間違いであること,そ して正しい単語が「あと」であることが1つのパタ ーンとして登録されている必要がある.そのため, 個人ごとの打ち間違いパターンに適応するためには, 事前に個人単位でどのように打ち間違えるかなどの 詳細な入力間違いパターンを知る必要がある. そこで本研究では,PC で文書作成を行うユーザ を対象に,各自にキーボード入力の癖があることを 前提に校正用辞書を用いずに,入力間違いを検出す る方法を提案する.具体的には,まず,ユーザごと に PC のキーボード入力を一定量取得し解析する. そして打ち間違えたキー入力の直前に入力された文 JeLA学会誌 Vol.19 2019 2019.4.12 採録
字を取得し,それらの文字ごとに,総入力回数と打 ち間違えた文字の直前に出現して,打ち間違いの要 因となった回数を解析する.そして,ベイズの定理 [2][3]で計算することで,その文字の直後に入力する 文字がどのくらいの確率で間違いになるかを示す. この手法では,図 1 のようなケースの誤入力の検出 が可能になる. 2. 関連研究 校正支援については,形態素解析や構文解析を使 用するなど自然言語処理を応用した研究が以前から 行われている[4].近年では機械学習で推敲などが行 われるようになっており,一般ユーザでも利用でき るように API として機能を提供している企業もある [5].また,日本語の読点の位置に明確な基準がない ことを問題としてあげ,大量の文章の形態素や係り 受け,節境界などの情報を分析し,読点の位置に関 する統計データから,適切な読点の位置を検出する 研究がある[6].この研究ではある程度読点の位置を 検出できる結果が得られている.また直近では, RNN の1つである LSTM[7]の手法を用いて,長期的 かつ連続性を持つデータの学習が可能になり,この 連続性の利用が,校正などの分野で注目を集めてい る.これに関して,パラメータ調整,学習データの 選択などの調査が行われている[8].また,この手法 を用いた製品も存在しており実用化されている[9][10]. 一方,我々は,ユーザから得たキー入力ログから, 同じユーザの新規文書の打ち間違い箇所を推定する 手法を提案した[11].この手法によってある程度打ち 間違いを検出することができたが,確率が高いほど 打ち間違いが存在しやすい傾向があるなどの,相関 関係を見つけるまでには至らなかった. 3. 提案手法 本研究では,まず確率を算出するためのキー入力 を取得する必要がある.そのため,打ち間違えた文 字や,BackSpace キーなどによる修正の過程を含ん だキー入力全体の取得を行う.ここで本来入力する はずだった正しい文字を「本来文字」,本来文字の代 わりに間違えて入力した文字を「誤入力文字」と呼 ぶことにする. 図 2 本研究の処理の流れ 次に,得られたキー入力の中から,打ち間違いを引 き起こす要因と考えられる,誤入力文字の直前に入 力された英数字のキー入力をローマ字に対応する平 仮名もしくは片仮名単位で抽出する.以降,これを 「要因文字」と呼ぶ.そして,抽出された数字,文 字について,総入力回数と誤入力文字の直前に出現 した回数をカウントする.最後にベイズの定理を使 用することで,文字ごとに今後その文字が要因文字 となるかを確率で示す.そして,その確率の結果を 校正対象の文書に適用し,誤入力文字と推定された 文字をユーザに提示する.この処理の流れを図 2 に 示す. 3.1. キー入力の取得方法 キー入力を取得する方法としてキーロガーを用い た.キーロガーは英数字や記号によるキーボードの 入力を監視し,入力のログデータを主にテキスト形 式などで記録できるソフトウェアである.これを使 用し,ユーザから,一定量のキー入力を取得する. ベイズの定理では,少ないデータ量でも,推定はで きるが,データ量が増えるほど,推定に関する精度 が向上するという特性がある[12].本研究の場合,事 前のキー入力の取得量がデータ量にあたるため,一 定の精度を得るには,ある程度の量を取得する必要 性がある.またキーボードの種類が違うなど,入力 環境の違いによって,同一人物でも打ち間違いの傾 向などが異なってしまう可能性がある.そのため, キー入力(ログデータ)を取得するための入力作業 と,校正対象となる文書の作成は同一の入力環境で 行う必要がある. 3.2. 打ち間違いの直前の文字の抽出 ログデータ内には,Tab キーなど文そのものとは 関係のないキーの入力が入っていることが考えられ る.そのため,まずログデータから Delete キーと BackSpace キーおよび英数字キー以外のキー入力を 取り除く.次に,打ち間違いを抽出する.BackSpace もしくは Delete キーで訂正された文字の直前に入 力されたローマ字に対応した平仮名もしくは片仮名 に着目する.そのため,ローマ字表記の平仮名もし くは片仮名のように,子音と母音,母音のみで構成 されるものと,アルファベットなど 1 文字で処理す る英数字に分ける必要がある.それを Python のラ イブラリを用いたプログラムを作成することで実現 した.しかし,このプログラムは単純にログデータ のアルファベットを参照し,ローマ字の平仮名と片 仮名に対応するかのみで判断しているため,例えば 「apple」という単語に関しては最初の「a」を「あ」
としてしまい,意図通りに取得できない.したがっ て,ある程度の人間の手による修正は必要である. ローマ字に対応した平仮名もしくは片仮名に分類 した後は,要因文字を抽出する.図 3 は「ぴったり の人物」という文の一部分であり「じ」を入力する ために本来文字である「J」を入力する際に,誤って 「G」と入力してしまっている.この場合,「の」に あたるローマ字表記の要因文字「NO」が本来文字「J」 を入力間違えさせてしまった要因になったと考えら れ,この場合,要因文字「NO」を取得する.仮に, 要因文字を「NO」ではなく,アルファベット単位の 「O」にすると,ローマ字の構成上,母音が要因文 字になることが多くなり,推定に大幅な偏りが発生 する可能性が高いため,ローマ字 1 文字単位の取得 を行う. 図 3 打ち間違いの直前の文字の取得 しかし,BackSpace または Delete が複数回押される こともあるため,その場合の対応策を考える必要も ある.図 4 は,BackSpace が 4 回押された例である. 「傍聴席」とするため「聴」を「C」,「H」,「O」, 「U」と入力しようとして,誤って「S」,「H」,「O」, 「U」と入力してしまったものである.この場合,ロ ーマ字表記で「傍」の「う」にあたる要因文字 1 の 「U」が誤入力文字 1 の「SHO」を,ローマ字表記 で「しょ」にあたる要因文字 2 の「SHO」が,直後 にある誤入力文字 2 の「U」と入力間違いをさせた 要因文字であると考えられる.しかし,誤入力文字 2 の「U」と本来文字 2 の「U」は同じであることか ら,「U」は打ち間違いとは考えられない.そのため, ここでは要因文字 1 の「U」のみを取得する. 図 4 打ち間違いが複数ある場合 以上の処理を行い,要因文字としてローマ字に対応 する平仮名もしくは片仮名 1 文字相当のローマ字, あるいは,英単語の末尾などの場合は,英数字のみ を取得する. 3.3. 打ち間違えた要因となった文字のカウント 要因文字を取得した後,Python のライブラリであ る gensim[13]のクラスの 1 つである Phrases を使用 して,要因文字と誤入力文字をセットにする.これ により,文書中(以降,特定の記載がない限り,「文 書」はログを取得した文書を指すものとする)にお いて要因文字が実際に要因となった回数をカウント する. Phrases は本来,分かち書きによって,意図 しない部分で切られてしまった単語を一つの単語と して扱えるようにするために用いられる.分かち書 きする際,名詞などの単語は意図しない部分で区切 られてしまう場合がある.そこですべての分かち書 きされた単語を参照し,設定した出現回数以上,そ の単語同士がセットで出現した場合,それらを一つ の単語として扱うものである.本研究では,それら の機能を利用し,要因文字と考えられる文字のカウ ント,そして1回しか打ち間違えていないような, 偶発的に打ち間違えてしまったパターンを取り除く 処理に使用した. 3.4. ベイズの定理による推定 ベイズの定理は,結果を示す数値などの観測デー タ(結果)から,式を用いて原因を推定するときに 用いられる.つまり,結果に対し,因果関係が成り 立つ原因を推定する前提で,結果を示す観測データ が集まることで適用することができる.応用例とし て,スパムメールの分類[14]のベイジアンフィルタな どがある.ベイズの定理では,事前に保有している データを活用することができ,データ量の増加によ って,精度の向上が期待できる.また収集したデー タの数が少ない場合においても,求めたいパラメー タの値の推定をある程度することができる利点があ る.そのため,本研究において,ユーザすべてのデ ータの統計を参照するのではなく,ユーザごとに対 応した結果を算出するにあたって,一定量のデータ がない場合でも推定することが可能と判断した.ベ イズの定理を用いて推定する場合,まず事前確率を 求める必要がある.この事前確率は観測者が観測し た結果からもっともらしい確率をあらかじめ設定す るものである.この値は通常,確率密度関数といわ れる確率分布から決定することが多い[15]. キー入力の場合は,ユーザごとの複数の文書のキ ー入力のログデータが集まるにつれ,そのログデー タ中の要因文字が文字ごとに文書内で何回出現した かの,もっともらしい事前確率を推定することがで きる.次に,事前確率を利用し,被験者の文書から 取得した実際に要因文字となった文字の出現回数,
入力した文字の総数などの数値を用いて,式( 1 )で, 事後確率𝑃𝑃(𝐵𝐵|𝐴𝐴)を求める. 𝑃𝑃(𝐵𝐵|𝐴𝐴) =𝑃𝑃(𝐴𝐴|𝐵𝐵)𝑃𝑃(𝐵𝐵)𝑃𝑃(𝐴𝐴) … ( 1 ) 𝑃𝑃(𝐵𝐵|𝐴𝐴)を求めることにより,文字ごとに,実際に文 書中で要因文字として出現した回数を用いて,校正 対象文書内で要因文字として出現する確率を推測で きる.式( 1 )の𝑃𝑃(𝐵𝐵)は前述の事前確率である.𝑃𝑃(𝐴𝐴|𝐵𝐵) は同時確率または尤度であり,A と B の両方の事象 が起こる場合の確率をさす.𝑃𝑃(𝐴𝐴)は通常,規格化定 数と呼ばれ,事後確率の総和が1になるように設定 するための定数である. 3.5. 事前確率 事前確率の設定方法として,ユーザごとに,要因 文字が文書中にどの割合で存在したか,確率密度関 数などを使用して事前確率として,あらかじめ設定 する必要がある. 本研究では,実験において使用したデータが 1 文 書の入力ログ1つであったため,1つのデータから 事前確率のもっともらしい確率を決定する方法とし て,3.3 の手法で1つの文書内の文字をカウントし た結果を用いて,次の式( 2 )で,事前確率を求めた. 𝑃𝑃(𝐵𝐵)=文書内の要因文字の総計 文書内の総文字数 … ( 2 ) これは,ユーザが文書を作成すると,要因文字がど の程度出現するかを確率化したものである.そして, 要因文字と判断した文字の直後には,必ず誤入力文 字が出現すると仮定している.また,要因文字が文 書内にどのくらいの割合で含まれているかを反映し た観測データであるため,要因文字がユーザの校正 対象の文書内にどの程度出現するかを推定する確率 として適切だと判断した.これは,式( 1 )の𝑃𝑃(𝐵𝐵)に あたる. 3.6. 同時確率 次に同時確率である𝑃𝑃(𝐴𝐴|𝐵𝐵)は,3.3 の手法を用い て,式( 3 )で,求めることができる. 𝑃𝑃(𝐴𝐴|𝐵𝐵)=文書内でその文字が実際に要因文字となった回数 文書内の要因文字の総計 … ( 3 ) この場合,いずれかの要因文字が出現する時に,特 定の要因文字の直後の文字を打ち間違えた確率にな る. 3.7. 規格化定数 𝑃𝑃(𝐴𝐴)は,事後確率の合計を 1 に設定するための定 数であり,次の式( 4 )で,求めることができる.
P(A)=P(B)P(A|B) + P�B�P�A|B� … ( 4 ) これによって推定されたすべての文字の確率を足し た際に 1 になるように設定することで,式( 1 )の適 切な分母を設定することができる.この場合の 𝑃𝑃�𝐴𝐴|𝐵𝐵�は, 𝑃𝑃�𝐴𝐴|𝐵𝐵�=1−𝑃𝑃(𝐴𝐴|𝐵𝐵) … ( 5 ) で求められる.つまり,ある 1 つの要因文字ではな い要因文字が出現する場合の確率になる.そして, 式( 2 ) ,式( 3 ),式( 5 )の計算結果を使用し,式( 4 ) を用いて要因文字ごとに算出したすべての確率を足 した際に 1 になるように𝑃𝑃(𝐴𝐴)を設定できる.したが って,これらの数式を要因文字ごとに用いて,文書 中において実際に要因文字となった文字の出現回数 に応じた確率設定が可能になる. 3.8. 要因文字の入力回数の反映 この段階では,文書中において実際に要因文字と なった文字の出現回数のみが,反映されており,要 因文字の文書内での入力回数が反映されていない. そのため,要因文字が文書内で出現した回数のみが 反映された確率になってしまう.このままでは,例 えば「j」が文書内で 10 回入力され,3 回要因文字 として出現した際の確率と,「k」を文書内で 100 回 入力し,3 回要因文字として出現した際の確率は一 緒になる.しかし,両者は実際に要因文字となる度 合いが異なる.そこで,文字ごとに要因文字を何回 入力することで要因文字として出現したかの観測デ ータを使用することにした.式( 6 )がそのデータか ら要因文字へのなり易さを求める式である. 𝛼𝛼 =文書内でその文字が実際に要因文字となった回数 その要因文字の文書内での総入力回数 … ( 6 ) これを,数式( 1 )で算出された確率に式( 7 )のように 掛け合わせる. 𝑃𝑃′(𝐵𝐵|𝐴𝐴)=𝑃𝑃(𝐵𝐵|𝐴𝐴)𝛼𝛼 … ( 7 ) これにより実際に要因文字として出現した回数が同 じ文字同士であっても,要因文字の入力回数の影響 を掛け合わせ,それを反映させることができる. 𝑃𝑃′(𝐵𝐵|𝐴𝐴)を文字ごとに算出し,今後その文字が打ち間 違いを引き起こす確率として使用する. 4. 評価,実験,結果 4.1. 実験概要 本研究では,大学生 13 名に協力してもらい実験 を行った.この中の 7 名には,キー入力と校正対象 の文書を提供してもらった.13 名のタイピング能力 の熟練度は,ポジションが確立されており,タッチ タイピングができるレベルであった.キーロガーは
特性上,英数字しか取得できない.IME などの通常 のインプットメソッドでは,日本語入力モードでロ ーマ字入力をすると,例えば「KI」は自動的に「き」 に変換されてしまうため,修正は1度の BackSpace となり,ログで取得される文字と実際に入力される 文字との整合性が取れなくなる.そのため,ローマ 字を直接入力モードで入力する形にした.その際, 事前の実験で入力時に参照する文章が,ローマ字表 記しかされていないと,日本語の感覚で入力できな いことがわかった.これは,入力環境面を考慮する 上で不適切である.そこで,ローマ字の上に日本語 のルビを振ることで,ローマ字と日本語を対応して 見られるようにした.また紙媒体を見ながらの入力 と PDF ファイルなどの電子媒体を同一画面上で見 ながらの入力の実験を行った結果,紙媒体の場合は 画面から目を離す,もしくはその逆があるため,入 力している箇所が分からなくなる現象が起きた.そ れらを考慮し図 5 の実験環境を PC 画面上に実現 し,被験者に入力してもらった. 図 5 実験における PC 上の入力環境 被験者にあらかじめ入力してもらう文章のローマ 字の入力文字数はアルファベット 10000 文字程度と して実験を行った.ベイズの定理においては,明確 な標本数が存在しないため,今回は被験者が1時間 半で入力できる 10000 文字程度とした.入力する文 書の特性として,今回は「#」のような Shift キーを 押しながら記号を入力するキーは使用しないように し,数字,Shift キーを押さず入力できる記号,日本 語に対応したローマ字,日本語では使用頻度の低い キーを使用してもらうため英字略語を対象とした. 日本語のニュースサイトの文章がそれに該当したた め,これをローマ字化しルビをローマ字の上に振る ことで被験者の入力テキストを作成した.そして, 被験者が使用できるキーは文字キー,括弧や句読点 などの記号キー,そして BackSpace キー,Delete キ ーに限定し,キーロガーで取得できない文字をなく した.次に,あらかじめ提供してもらった校正対象 文書から目視で誤入力箇所の検出を行った.そして, 検出した誤入力箇所の直前に存在する,要因文字を 検出した.最後に,10000 文字の文書を本研究の手 法により解析して推定した要因文字の中に,目視で 検出した箇所の要因文字が含まれているかを検証し た.図 6 に 13 名の収集したログデータの言語,時 期,入力時に参照した文書の環境を示す. 4.2. 癖が要因文字に与える影響の調査 4.2.1. 概要 今回の手法を,我々が以前検証した時点[16]では, 要因文字の出現傾向にキー入力の「癖」が影響して いるかは不明確であった.これについて,被験者ご とに要因文字の出現傾向が同じであれば,何らかの 癖が存在し,それが入力ミスに影響すると仮定し, 調査を行った.検証するにあたり,事前に取得した 図 6 の被験者 A,B,G,H のログデータを使用し, 以下の 3 つの調査を行った. 図 6 調査における被験者リスト 比較 1: 同じアルファベットで構成される英語とローマ字 では違いが生じないと考え,英語テキストとローマ 字のみのテキストの調査を被験者 4 名(被験者 A, 被験者 B,被験者 G,被験者 H)に実施した. 比較 2: 期間をあけることで要因文字の出現傾向が変化す るかを調査するため,間をあけて取得したローマ字 ルビありのデータについて比較した.1 名(被験者 B)から取得した 1 月のローマ字ルビありの結果,7 月のローマ字ルビありの結果を比較した. 比較 3: 取得するごとに要因文字の出現傾向が変化するか を調査するため,時間を置かずに同じ分量,同じ英 文テキスト,同じ環境で入力すると同じ結果が得ら れるか,2 名(被験者 G,被験者 H)で検証した. 時間は 1 日あけた.
MS Word への入力
例文 PDF の表示
4.2.2. 調査結果 まず,英語テキストとローマ字テキストの入力で 調査した比較 1 の 4 名(被験者 A,被験者 B,被験 者 G,被験者 H)の結果を記述する.ある程度タイ ピングの熟練度が高いと,要因文字の出現回数の多 少の増減はあるが,出現する文字が同じである傾向 があった.そのため,英語とローマ字の場合で要因 文字の出現傾向に変わりがないことから,キー入力 の癖があり,それが原因で出現していることがうか がえる. 次に,比較 2 で調査した 1 名(被験者 B)の結果 について記述する.1 月と 7 月のデータに共通して 存在する要因文字の割合は7割であり,共通して存 在する要因文字は,それほど大きく変化しなかった. そのため,ある程度のタイピングの熟練度があれば 期間をあけても癖は変化しないものと判断できる. 最後に,比較 3 で調査した 2 名(被験者 G,被験 者 H)の結果を記述する.特にタイピングの熟練度 が高いと考えられる被験者 H からは,2 回のデータ で約 95%の共通した要因文字を検出することがで きた. これら 3 つの結果から,タイピングには各個人の 癖があり,その習熟度が高いと少なくとも半年程度 では癖は変化しないと言える.そのため,本研究の 手法は,タイピングの習熟度が高い人であれば有効 であることが確認された. 4.3. 実験結果と評価 まず実験日と,提供してもらった校正対象文書の 作成日が近く,それがユーザ自身でほとんど校正を 行っていない文書であり,特に誤入力文字が多かっ た被験者1名(被験者 M)の解説を行う.まず,本 研究で取得した被験者 M の 10000 文字程度の入力 ログから,1回しか出現しない偶発的と考えられる 誤入力の場合は削除した上で,要因文字と推定され た文字と,今後,要因文字となりうる確率,実際に 要因となっていた回数,要因文字の総入力回数を表 1 に示す(確率が高い文字から降順にソートしてい る). 表 1 取得したログからの推定結果(被験者 M) 打ち間違いの要 因となった直前 の文字 今後打ち間違い の要因となりう る確率 ログ内で打ち間違 いの直前に出現し た回数 ログ内で入力され た総入力回数 j 0.010526316 2 4 s 0.004678363 2 9 う 0.00426983 12 355 じゅ 0.002631579 2 16 い 0.00215311 9 396 か 0.001691729 6 224 ば 0.001684211 2 25 ら 0.001199201 3 79 る 0.000937989 3 101 っ(子音2回) 0.000937989 3 101 や 0.000935673 2 45 た 0.000859291 4 196 。 0.000838379 3 113 き 0.000823799 3 115 も 0.000725953 2 58 く 0.000627396 3 151 と 0.000595829 3 159 り 0.00056899 2 74 が 0.000421053 2 100 に 0.000316581 2 133 し(shi) 0.000273411 2 154 ん(n) 0.000180709 2 233 次に,同じ被験者 M の作成した校正対象文書 (3200 文字程度)から,目視で検出した要因文字と, その文字が要因文字として,表 1 中に存在するかを 検証した結果を表 2 に示す.これを「う」の例で説 明する.まず,ログ内で実際に要因文字となってい た文字の確率を算出した結果,「う」は0以外の値が 算出されたため,今後要因文字になる可能性がある 文字と「推定」される.これにより,「う」は表 1 に 掲載されている.次に,「う」は校正対象文書内で要 因文字になっていることが確認されている.したが って,表 2 に掲載されている.表 2 中の「う」が, 要因文字と推定される文字のリストである表 1 に 存在しているので推定は当たり,実際に「検出」で きたとして,表 2 では「◯」としている.以降,ロ グ中のある文字が実際に要因文字となる確率をベイ ズの定理を用いて算出した結果,0 以外の値が算出 されることを要因文字として「推定」されたと表現 する.そして校正対象文書で,目視で実際に要因文 字になっていた文字が,推定された文字の中に存在 していれば,その文字,あるいは,それによる誤入 力を「検出」できたと表現する. 表 2 校正対象文章中から目視で検出された 要因文字(被験者 M) 目視で検出した打ち 間違いの要因になっ た文字 その文字が表 1 に存在するか 文書内で要因文 字として出現し た回数 、 × 1 る ◯ 3 や ◯ 1 く ◯ 1 い ◯ 4 う ◯ 3 た ◯ 1 以上から,この1名に関しては「、」を除いた要因 文字を検出することができた.検出できなかった文 字は校正対象文書中の「もはやインターネット意識 せずともそこにあり,に常時接続可能な状態という ことから」という文に存在する「に」の前の「、」で ある.この理由として考えられるのは以下のような シナリオである.ユーザが文書を作成した直後には 「、に」の位置にもっとフレーズが存在しており, その後にユーザ自身が BackSpace キーを使用して「、」 と「に」の間に存在していた文の一部分を削除する
という,ユーザ自身の校正が行われた.そのため, 目視で打ち間違いと判断した「に」と打ち間違いの 要因と考えた「、」には入力時の連続的な前後関係が ないため本手法では推定できなかったと考えられる. 本手法によって算出された表 1 の推定結果と,実 際にその要因文字が校正対象文書内で,打ち間違い につながった回数との関係を図 7 に示す. 図 7 推定された要因文字と直後に打ち間違えが 見つかった回数の関係 図 7 のグラフは,より上の文字の方が実際に打ち間 違いにつながった回数が多い,三角形状の結果にな ることが期待された.今回の結果はその傾向が見て とれ,本手法の有効性を示している.確率が最も高 い 2 種の文字の直後に打ち間違いが生じなかった理 由として,ログを取得するための文書内で入力する 回数が少なかったことが考えられる.表 1 の結果か ら,特に「j」は,ログ内で 2 回要因文字として出現 しているが,4 回しか入力されていない.そのため 確率を算出して推定を行っているが,精度面ではあ まりよくないことが考えられる.「s」に関しても要 因文字として出現した回数が2回であり,入力され た回数が 9 回であるため同様のことが言える.つま り要因文字の入力回数が極端に少ないことによって 十分な推定ができないことがわかる.したがって, 10000 文字の入力ログは,必ずしも十分な量とは言 えず,入力内容を多様化し量も増やす必要がある. 一方,ログ内で入力回数が多く,推定確率が高い 「か」の後に誤入力文字が出現しなかったのは,被 験者 M の校正対象文書が 3200 文字程度であり,字 数が少なかったことが原因と考えられる.このため, 校正対象文書の字数がもっと多ければ,出現するも のと考えられる. 最後に他の被験者 6 名(B,E,I,J,K,L)の結 果を表 3 に示す.検出できた場合は「◯」,できな かった場合は「×」,偶発的と判断されたが検出でき た文字は「△」として,検出の可否を記述している. 偶発的な誤入力は,本研究の手法では検出できない ものとしているため確率は記載していない.表 3 の 校正対象文書内で要因文字として出現した文字ごと の回数については,被験者 L の「る」のみが 2 回で あり,その他の文字が出現した回数は 1 回である. 表 3 被験者 B,E,I,J,K,L の実験結果 被験者 名 校正対象文書中 で見つかった 要因文字 被験者ごと の検出結果 今後打ち間違い の要因となりう る確率 ログ内で打ち 間違いの直前 に出現した回 数 ログ内で入 力された 総入力回数 被験者B h × s ◯ 0.004678363 2 9 じ × う ◯ 0.00426983 12 355 被験者E 、 △ 1 122 被験者I も ◯ 0.000851323 2 58 ら ◯ 0.000940852 3 79 う ◯ 0.000833964 12 355 被験者J こ △ 1 91 き ◯ 0.000823799 3 115 に ◯ 0.000316581 2 133 被験者K p × か ◯ 0.001691729 6 224 被験者L る ◯ 0.000937989 3 101 まず,検出できなかった文字として,被験者Bの「h」, 被験者 K の「p」は,英語の単語の打ち間違いであ った.今回ログで取得した文字は,ほぼすべて日本 語であることから,日本語の入力データからは英語 の打ち間違いを正しく推定することができないと考 えられる.次に,被験者 B の「じ」は「その中でも、 同じの間違いが何回存在したら、」という文であった. これは,「の」が誤入力文字で,「じ」が要因文字で あるが,この場合の「の」は格助詞である可能性が 高い.そのため,被験者 M の校正対象文書で検出で きなかった「、」と同じで,「じの」の位置に元々, フレーズが存在しており,作成した後にユーザ自身 の校正が行われたため,入力時の連続的な前後関係 がないと考えられる.被験者 E の「、」と被験者 J の 「こ」は,それぞれ校正対象文書の文字数が約 1200 文字,2500 文字程度であり,文字数が少ないため検 出できなかったと考えられる.データの傾向として, 被験者 J の「に」,この 6 人より先に解説した被験者 M の「く」以外は比較的確率が高い文字が,要因文 字になる傾向がある.被験者7名の結果から,ユー ザごとにキー入力のログを取得することで,本人の 新規文書中の誤入力文字がある程度検出できると実 証できた. 本手法がどの程度の検出性能を持つかを,ログ内 確率高
で推定した文字が,どの程度,目視で校正対象文書 から検出した要因文字の中に含まれているかの割合 で評価した.具体的には、被験者 M を例にとると, 表 2 の最も右の列の「校正対象文書内で要因文字と して出現した回数」の総数のうち,中央の列で丸が ついているものの合計の割合となる.被験者 M の場 合は 13/14=約 93%である.同様の計算を他の被験 者に対しても行うと,0%1 名,50%2 名,66%1 名, 100%2 名となった。この値のばらつきは,各被験者 のタイピングの正確さや校正対象文書の文字量,ど の程度校正された状態で提供されたかなどに左右さ れる.今回は表 3 に示すように,M 以外の 6 名から 提供を受けた校正対象文書中にはそもそも少数の種 類の要因文字がそれぞれ 1 回もしくは 2 回だけ出現 していたことが原因であると考えられる.したがっ て,ある程度の文字数があり,あまり校正されてい ない初期段階の文書に対しては,本手法は被験者 M の場合のように有効であると考えられる. 5. おわりに 本研究では,ベイズの定理を用いて,誤入力の要 因文字を推定する手法を提案し,それを実際に検証 することで,性能の評価を行った.また,その前提 である誤入力はキー入力の癖が原因で発生している 可能性が高いことを明らかにした.本手法は,ある 程度の文字数があり,あまり校正されていない初期 段階の校正対象文書に対しては,被験者 M における 93%の検出性能のように有効であると考えられる. ベイズの定理の特性から,各個人の大量の入力デー タが集まることによって,推定の精度向上が望める. その際,定期的に入力データを集めるようにするこ とで,タイピングの癖の変化にも対応できるものと 考えられる.またキー入力のログを取得した文書内 で入力が少なかった要因文字は,データ量が増加す るに従って,確率の推定精度が向上すると考えられ る.今後は,入力ログの量を増やし,精度の向上を 実証するとともに,どの程度のログ量が十分なのか 検証する必要がある. また,本研究の実験の対象ではなかったが,目視 では校正対象文書中の脱字を確認しており,その脱 字は要因文字の直後に存在した.そのため,脱字が 存在している文書を対象に推定結果を適用させ,実 証を行いたいと考えている. 6. 今後の展望 6.1. n-gram の手法を用いた改善 本研究では,要因文字の推定から誤入力文字をあ る程度検出できることが明らかになった.しかし, 実際に校正対象文書で見つかった誤入力の直前の文 字(要因文字)はログから推定された要因文字と一 致する割合が高かったが,これは,校正対象文書中 で,ログから推定された要因文字である文字が入力 された箇所のすべてで誤入力文字が発生しているこ とを意味するわけではない.実際,文献[11]ではシェ アウェアのエディタを用いて要因文字のハイライト 表示を試みたが,対象箇所が多すぎ,実用性に乏し かった.これを改善するため,要因文字を 1 文字だ けではなく,複数文字取得することを検討している. 例えば本論文の手法では,要因文字が「RA」の場合, すべての「RA」の後に誤入力文字があると推定され てしまう.そこで,「RA」の直前に入力された文字 も取得し,同じ「RA」であっても実際に要因文字で あるかを区別できるようにする.このように,n-gram を利用することにより,誤検出される誤入力文 字を減らせる可能性がある.そして,この手法は, 日本語のように分かち書きされず,大規模な語彙を 対象とした場合に誤り箇所の指摘に有効な手法であ る[17].次に,n-gram とマルコフ連鎖[18]を用いる方 法は,自然言語で書かれた文を評価することができ る.これを文書校正に応用した手法として,n-gram 統計データを生成し,マルコフ連鎖確率が連続して 落ち込む回数に着目して,誤りを校正する手法があ る[19].しかし,推定通りの位置で推定通り落ち込ま ない場合があると言われている[20]. そこで本研究では,次のような改良を検討してい る.まず,ユーザのキー入力から要因文字を上記の n-gram の手法で取得し,文字ごとにベイズの定理で 確率を算出する.次に,算出した確率を用いて,要 因文字のマルコフ連鎖確率の統計データを作成する. それを校正対象の文書に適用し,確率が高い箇所を 校正箇所とすることで,誤入力文字の誤検出の改善 を行う. 6.2. キー入力ログの取得法の改善 ログの取得に関して,直接入力だけではなく,IME などのインプットメソッドを対象とできる可能性が ある.これは,Python のプログラムを改良すること で,入力されたローマ字が,どの平仮名に変換され たかを,取得したログ中のアルファベットの並びか ら判断する.そして,BackSpace の箇所を IME など のインプットメソッドと整合性が取れるように調整 することで,平仮名に変換された文字を対象にでき る.しかし,IME などのインプットメソッドは,平 仮名だけでなく,漢字の変換も含まれている.どの 漢字に変換したかを,ログで取得した文字などで判 断するのは困難である.したがって,取得したログ の使用以外で判断する別のアプローチを考える必要 がある.また,Shift キーなどのキーは,キーロガー によって取得できることから,アルファベットの大 文字などの Shift キーを押しながら入力する文字は Python のプログラムの改良で対応できる.今後は, 実用性を高めた検証を行うため,IME などのインプ ットメソッド,Shift キーを押して入力される文字を 対象とした実験を行う. 入力ログを増やすことに関しては,様々な種類の 文章をより多く取得するため,仮に個人の日常的な キーボード入力を安全に継続的に取得できることが 可能であれば,精度が向上すると考えられる.例と して,OS レベルで取得を行い,ワープロソフトやメ ールソフト,Web ブラウザなどに本研究の手法によ る推定結果が利用できれば,プラグイン程度の実装 でこれらのソフトの入力支援・校正機能を向上させ られる可能性が高いと考えられる.
参考文献 [1] 鈴木恵美子,武田浩一,藤崎哲之助,日本語文 書校正支援システム CRITAC,情報処理学会 研究会報告 ヒューマンコンピュータインタラ クション(HCI) 1986(57(1986-HI-008)),pp.1-9(1986) [2] 岩波データサイエンス刊行委員会,岩波データ サイエンス vol.1,岩波書店(2015) [3] ベイズ推論による機械学習入門,須山敦志,杉 山将,講談社(2017) [4] 池原悟,小原永,高木伸一郎,文書校正支援シ ステムにおける自然言語処理,情報処理学会 情報処理 vol.34 No.10,pp.1249-1258(1993) [5] A3RT,(株式会社リクルートテクノロジーズ): https://a3rt.recruit-tech.co.jp/ [6] 村田匡輝,大野誠寛,松原茂樹,日本語テキス トにおける読点位置の検出,言語処理学会 第 16 回年次大会 発表論文集,pp.812-815(2010) [7] S. Hochreiter, J. Schmidhuber, Long
short-term memory. Neural computation, 9(8), pp.1735-1780(1997) [8] 中島寛人,山田剛,誤り文の自動生成による校 正エンジンの学習,言語処理学会 第 24 回年次 大会 発表論文集,pp.1272-1275(2018) [9] 文賢,(株式会社ウェブライダー): https://blog.bun-ken.net
[10] DATUM STUDIO,(DATUM STUDIO 株式 会社):https://datumstudio.jp [11] 西村希槻,寺澤卓也,キー入力の癖に基づく入 力間違い推定法の検討,情報処理学会 第 79 回 全国大会講演論文集,pp.611-612(2017) [12] 岩崎篤,吉永博之,ベイズ統計を用いた回帰係 数分布の更新による損傷同定モデルの高精度 化,日本機械学会論文誌(A 編)77 巻 783 号, pp.95-105(2011) [13] gensim,(Radim Řehůřek): https://radimrehurek.com/gensim/ [14] 田端利弘,SPAM メールフィルタリング:ベイ ジアンフィルタの解説,情報科学技術協会情報 の科学と技術 56 巻 10 号,pp.464-468(2006) [15] 辻義之,田中宏彦,大野哲靖,確率密度関数 とその応用,プラズマ・核融合学会誌 = Journal of plasma and fusion research, pp.665-673(2009) [16] 西村希槻,寺澤卓也,キー入力の癖に基づく入 力間違い推定法の検討,日本 e-Learning 学会 2017 年度学術講演会,pp.55-61(2017) [17] 河田岳大,工藤峰一,外山淳,中村篤洋,両方 向 N-gram 確率を用いた誤り文字検出法,電子 情報通信学会論文誌 D-Ⅱ Vol.J88 No.3, pp.629-635(2005) [18] 小高知宏,はじめての AI プログラミング C 言 語で作る人工知能と人工無能,オーム社(2006) [19] 荒木哲郎,池原悟,塚原信幸,小松康則,田川 崇史,橋本 憲久,m 重マルコフ連鎖モデルを 用いた日本語文の誤字,脱落,挿入誤り文字列 の検出と訂正法,電子情報処理学会論文誌 D-II Vol.J83-D-D-II No.6,pp.1516–1528(2000) [20] 荒木哲郎,池原悟,佐藤政伸,榮代正男,マル コフ連鎖モデルを用いた日本語文の置換型,挿 入型及び 脱落型誤りの検出・訂正法の改善, 電子情報通信学会論文誌 D–II Vol. J85-D-II No. 1,pp.66–78(2002)