人間が扱いやすいBertモデルを作るには?

A8バナー広告

仕事の関係でSentence Piece+の組み合わせを扱うことがあった。

ここで困ったことに、Sentence Pieceがぼくの想定通りの形態素に区切っていないことがわかった。

しかし、これはもっともなことで、開発者の工藤さんも「Sentence Pieceは他のTokenizerの代替ではない」と言っている。あくまで、「Sentence PieceはEnd-2-Endの(DNN)Deep Neural Networkに向いているよ」という意味が強い。Qiitaの工藤さんの記事

どういう点で「Sentence PieceはEnd-2-EndのDeep Neural Networkに向いているよ」かというと、DNNのためにされたVocabularyを作成できるという利点がある。その結果、語彙数が圧縮できてモデルサイズも小さくなるから嬉しいよ。という意味が強い。この話は、このブログにも書いてあった。

DNNのEnd2Endの利用目的というと、機械翻訳や文書分類などが考えられるだろうか?例えば、Tweetの極性分類をしてみたよというこんブログ記事

一方で、Sentence PieceがDNNに最適化した語彙というのは、人間には扱いづらかったりする。例えば「今日はいい天気でした」が「今日はいい / 天気でした」と2Tokenに分割されてしまう可能性もある。人間としては「今日/は/いい/天気/で/した」と区切ってほしいところ。

特に情報抽出系のタスクでは、形態素が人間の想定通りに区切られていないと困ってしまう。そこで解決策として、形態素解析器(Juman)で形態素に区切ってからBertモデルを作るアプローチがある。

このアプローチならば、Jumanが「少なくとも人間がよく知ってる形態素に区切ってくれる」と保障してくれる。形態素に区切った上で、形態素をsub-wordに分割してモデルを作るというアプローチになる。

参考ブログなど