梅雨明けをまだかまだかと待つ時期です。「ジメジメ」としか言いようがない気候が続いておりますが、皆さまいかがお過ごしですか? 肌に湿気や汗その他がまとわりついて、だらだら・じっとり・ベタベタ・ペタペタ、と触覚が得意なオノマトペとしては様々なキーワードが挙げられそうです。今日はそういった身体感覚とオノマトペ、からは少し離れて、オノマトペと機械処理・自然言語処理のお話をしたいと思います。
自然言語処理とオノマトペ
以前から自然言語処理(私たちが普段使っているような言語を機械で処理すること)の技術はずっと進歩してきましたが、最近はAIと呼ばれ始めてにわかに注目が集まっています。また、今まで専門的すぎる技術ととらえられていて手が出しにくかったのが、産業側が手を出しやすくなってきたため、活用機会が見え始めているから、というのもあります(仕組みがわかりやすくなった、というわけではななく、進歩とともにより複雑になってきているのですが)。
自然言語処理とオノマトペも、それなりに長い付き合いになるのですが、処理の一番最初の段階の形態素解析で割とコケることが多い、という悲しい関係性でした。今日は、オノマトペと形態素処理が現状どうなっているのか、調査してみようと思います。
Mecabとオノマトペ
自然言語処理について知っている人であれば必ず知っているソフトが「Mecab」だと思います。Mecabは文を入力すると、分かち書き(付属の辞書を元に、文を単語単位にバラバラにすること)をしてくれる機能を持っています。例えば、「今日は良い天気です」という文をMecabに入れると、
今日 キョウ 今日 名詞-副詞可能
は ハ は 助詞-係助詞
良い ヨイ 良い 形容詞-自立 形容詞・アウオ段 基本形
天気 テンキ 天気 名詞-一般
です デス です 助動詞 特殊・デス 基本形
というように、バラバラにした上で、どのような品詞の単語なのかを示してくれます。自然言語処理では、まず第一段階として文章をこのように分割した上で、それらの関係性や構造を分析していく流れがオーソドックスなものとなっています。そして、オノマトペが立ちはだかるのがこの部分です。うまく分かち書きがうまくいかないオノマトペがあるのですね。いくつか試してみましょう。
「ふわふわ」
ふわふわ フワフワ ふわふわ 副詞-助詞類接続
「しっかり」
しっかり シッカリ しっかり 副詞-助詞類接続
「むにむに」
むにむに むにむに むにむに 名詞-一般
「むにむに」は名詞と判定されるのが少し意外ですが、オノマトペを入れても間を区切らずにひとまとまりの副詞として判定してくれることがわかります。問題無さそうに見えますが、こちらをご覧下さい。
「もこもこ」
も モ も 助詞-係助詞
こも コモ こむ 動詞-自立 五段・マ行 未然ウ接続
こ コ くる 動詞-非自立 カ変・クル 未然形
「もこもこ」はひとまとまりのオノマトペとしてではなく、分割された違う語として解析されてしまいました。これでは正しい意味として解析されないことになります。もしかしたらオノマトペ単独だから難しかったのかもしれませんので、「もこもこ」を用いた文で試してみましょう。
「あの雲はもこもこしている」
あの アノ あの 連体詞
雲 クモ 雲 名詞-一般
は ハ は 助詞-係助詞
も モ も 助詞-係助詞
こ コ こ 名詞-一般
も モ も 助詞-係助詞
こし コシ こす 動詞-自立 五段・サ行 連用形
て テ て 助詞-接続助詞
いる イル いる 動詞-非自立 一段 基本形
…やはりダメなようです。カタカナではどうなのでしょう。
「モコモコ」
モコモコ モコモコ モコモコ 名詞-固有名詞-組織
今度は組織の固有名として判定されました。どこかにそういった名前の組織があるのでしょうか。謎は深まるばかりですが、一部のオノマトペがこのように誤って分割されてしまう理由を考えてみましょう。実は、このMecabが分かち書きを行う際に、いくつかの語だとうまく行かない場合が報告されています(有名なのは「外国人参政権」などですが、これは以下のようになります)。
「外国人参政権」
外国 ガイコク 外国 名詞-一般
人参 ニンジン 人参 名詞-一般
政権 セイケン 政権 名詞-一般
これは、Mecabに標準搭載されている辞書が既にやや古くなっており、特に流行語・新語に対応できていないため起こることが多いです。私たち人間も初めて聴く単語はどこで区切れば良いのかわからない場合もありますよね。ということで、辞書を新しい物にすることで、改善されることが多いようです。新しいMecab用辞書として有名なのが「NEologd」と呼ばれる辞書です。数ヶ月毎に更新されており、新語にも随時対応していくという素晴らしいMecab用辞書です。こちらをインストールして、同じオノマトペを解析してみましょう。
NEologd辞書を入れて、再分析してみる
さて、それでは「もこもこ」はどうなるのでしょうか…?
「もこもこ」
もこもこ 副詞,一般,*,*,*,*,もこもこ,モコモコ,モコモコ
ちゃんと副詞と判定されました!(解析後の結果表示が少し異なるのは、こちらのオプション指定がうまくできなかったからです…)文に含まれる場合もうまくいくでしょうか?
「あの雲はもこもこしている」
あの 連体詞,*,*,*,*,*,あの,アノ,アノ
雲 名詞,一般,*,*,*,*,雲,クモ,クモ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
もこもこ 副詞,一般,*,*,*,*,もこもこ,モコモコ,モコモコ
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
いる 動詞,非自立,*,*,一段,基本形,いる,イル,イル
素晴らしいですね!ちゃんと「もこもこ」をオノマトペだと捉えてくれているようです。このNEologd辞書は、「恋ダンス」や「ペンパイナッポーアッポーペン」などの流行語も固有の語として認識してくれるそうです。オノマトペに対する自然言語処理も、新しい辞書を使うことで悩まずに進められそうですね。
自然言語処理技術分野の研究は、どこまで人間に似た振る舞いをできるか、どのようなビジネス課題へ応用できるか、などが注目されがちですが、言語研究の進展にも大きく寄与することと思います。オノマトペ研究でもどんどん使われるようになるとよいと思ってはいますが、随分敷居が低くなったとは言え、一から自然言語処理を学ぶのは結構大変そうだ、というのが素直な感想です(今回の解析も見よう見まねでやりました)。
【参考サイト】
・Google ColabでMecabを使う
http://pepper.is.sci.toho-u.ac.jp/pepper/index.php?%A5%CE%A1%BC%A5%C8%2FPython%2FMeCab-GoogleColab
・https://gist.github.com/hurutoriya/1c417853a723206d5deb19b5083538ff