2023年4月17日月曜日

品詞パズルを作った

小中学校の品詞文法を秒速で学ぶことができる 品詞パズル を作りました。 以前から国語の文法学習はゲームで良いのではと思っていたので、 小中学校の 9年分を秒速で学べるゲーム作りました。 小学校や中学校で文法の勉強や、外国人の方の語学学習、NLP な人の学習に使うことを想定しています。

ちなみに国語で習う文法をおおまかにまとめると、 小1で助詞、 小2で接続詞 (小5でも復習)、 小3で動詞・名詞・形容詞・副詞を学習し、 中学校で連体詞・助動詞・形容動詞・感動詞・接頭詞などを習います。 これらを一気に学べるアプリです。



学校文法の問題点

アプリを作るからには、学校文法の問題点についても多少考えました。 個人的には学校文法の過度な学習は注意が必要と思っています。 日本の学校文法 (橋本文法) は前世紀から変化しておらず、 現代口語では無理が生じており、計算機処理にも向いておらず、 助動詞と動詞を区分できないケースがあり、 日本語には主語が存在しないため文型がわかりにくく理解しづらいなど、 問題点が指摘されています。 しかし今でもその学校文法を学び続けています。 形態素解析だけでなく、勉強の効率にも関連する問題ですね。

効率面から考えると、学校文法は現代口語に適用できないのが、学問的にも教育的に最も致命的です。 2番目は主語がないので文型がわかりにくいことだと言えそうです。 3番目は形容動詞のような微妙な分類でしょうかね。

現代口語の問題は形態素解析でみんなが苦労していることで、あまりにも大きいです。 現代口語の問題はつまるところ活用形の問題なので、 教育的には活用形の重要度をもっと下げたほうが良い気もします。 ちなみに私は漢字/ひらがな/カタカナの配分を考慮した形態素解析をすればそれで良いと思っているので、 活用形は重要な概念ではなく、重要なのはひらがなの終端である「助詞」と考えています。 あとは名詞・形容詞・動詞・副詞をきちんと理解できていれば十分じゃないかな。 主語の問題も助詞をしっかりするように教育すれば、長期的にはだいぶ緩和されるような気はしています。

ただ形容動詞や連体詞などは教育が変わらないことにはどうしようもなさそう。 これらの存在を消したほうが教育は楽になるし、教育効果も高くなると思うんですがね。 この問題は、形態素解析そのものの問題にもなります。 ただ実装的には簡単なので、きちんとサポートはしています。

実装

学校文法の闇さえクリア(?)すればあとの実装は簡単です。 長さの異なる例文をたくさん作って、Mecab で事前解析したものを保存し、カリキュラムごとに形態素の品詞を当てます。 Web 上で解析しても良いのですが、わざわざ重くする必要もないので事前解析にしました。 ちなみに品詞の解析ミスは、明らかに間違っている例文を削除することで対処します。 わかりやすい文章なのでほとんど解析ミスはないと信じます。 学校文法について考えると実装の仕方も明確に定まります。 UniDict は細かく分類され過ぎてしまうので、ゲームとしては煩雑になりそうで微妙です。 JumanDic は良いものですが、判定詞が今回のアプリでは微妙かも知れません。 品詞体系の影響を受けやすいアプリなので、形態素解析器は意外と大切です。 現時点で使いやすいのはおそらく IPADic, Neologd, SudachiDict となります。 高速に事前処理できれば良いので、処理時間と粒度と精度のバランスを考えると結局は Mecab + IPADic が良さそうです。

Mecab より高速な Vibrato/Vaporetto を使えないかなあとも思ったのですが、Deno から呼び出そうとするとまだ大変そうだったので、諦めました。 最初は deno_mecab で実装していて少し遅いなと思っていたのですが、自前のコードにしたら 30倍ほど高速化できるとわかりました。 これだけ早ければまあ良いか…という気も最近はしています。

最後に学校のカリキュラムを考えながら細かく調整しました。 主に助動詞に関して色々な整形処理が必要です。 たとえば中学生向けでは形容詞語幹+助動詞を形容動詞に変換する必要があります。 小学生は助動詞を習っていないので、動詞+助動詞を動詞に変換する必要があります。 ものすごい久々に Mecab の解析結果をガチャガチャした気がします。

まとめ

学校文法には注意が必要ですが、割と使いやすいアプリと思っています。 国語の基本が身に付いていない子には良い練習になりそうです。 まだ習っていない文法を視覚化できるのが個人的には結構いい感じだと思っています。

0 件のコメント: