AA・テキスト領域検出器公開
こんにちは,ikazameです.
この度AAデベロップメント界隈の重鎮 @scrpgil様 よりアスキーアート総合 Advent Calendar 2019 参加の打診をいただき,この記事を作成することとなりました. というわけでアスキーアート総合アドベントカレンダーの3日目の記事が始まります.
今回自分が語るネタはAA・テキスト領域検出器です.これは今年の5月に記事にしたやつで,やっとこさソースコード&デモを公開できる算段になりました.
AA・テキスト領域検出器
まずAA・テキスト領域検出器とは何なのかという話です.過去の記事をご覧いただければ同じことが書いてあるので軽く書きます.
AA・テキスト領域検出器はアスキーアートを含む(もしくは含まない)入力文書から,AAの領域,セリフの領域,レスヘッダの領域などを自動的に認識・抽出するツールです. 以下のようにアスキーアートと自然言語のテキストが並列に扱われている文書から,AAの部分とテキストの部分を適切に分離し,AAスレのテキストのみを対象にした解析やAAスレの応用利用等を支援することができます.
デモサイト
上で説明したAA・テキスト領域検出器が実際に動いているデモを以下のURLで確認できます.
上のテキストボックスに好きなAAを貼り付けて認識してみてください.なおデモサイトのAA表示にはaahub.org様のaahub fontsを利用させていただきました.
ソースコード
上のサイトで動いているデモと同じ機能を有した学習済みモデルと学習用スクリプトはgithubで配布しています.学習データには「やる夫が銀行員になるようです」全8話のアノテーション済みデータを添付しています.ライセンスは何でもいいですが,使うときには一言うちのブログのURL入れといてもらえると嬉しいです.
使い方
README.mdに詳しく書いたので,そちらをご覧ください
AA・テキスト領域検出器の限界
AA・テキスト領域抽出器は機械学習を用いた識別モデルなので,不得手なデータに対してはおかしな出力をする可能性があります.例えば最近evianのTwitterアカウントがアスキーアートをつぶやいて話題になっていました.
delete
— evian France (@evianFrance) November 29, 2019
⊂_ヽ
\\ your
\( ͡° ͜ʖ ͡°)
> ⌒ヽ
/ へ\
/ / \\account
レ ノ ヽ_つ
/ /
/ /|
( (ヽ
| |、\
| 丿 \ ⌒)
| | ) /
ノ ) Lノ
(_/ https://t.co/dUvJ7H3m6n
このAAをAA・テキスト領域検出器をかけると以下のような出力がされます.
accountなんかはきちんと取れていますが,delete yourはちゃんと取れていません(でも人間が見ても"your"がAAの帽子に見えるような気もする). また,上記のデモサイトを試していただければ分かると思いますが,認識性能は案外低いです.自分もこのツールを使うときには,前処理として利用し必ず人間の目で確認して修正する作業を行います.
こういった状況は更に学習データを増やすことで解決する可能性がありますが,学習データを作るのは容易なことでは有りません,結構コスト(時間)がかかります. なので,AA・テキスト領域検出器に過度な期待はしないでくださいという,そういう話です.
結び
ソースコードを公開できる状態に持っていくのと,デモサイト作るのに心血を注ぎすぎて記事がめちゃくちゃ薄くなってしまいました.明日以降もAA界隈の猛者による超面白いアドベントカレンダーが続くと思うのでお楽しみに.