BERTでの言葉の単位

今回は「fromZEROでAI体験」で使っているBERTが処理するときの言葉の単位について考えてみたいと思います。

こんにちは。このサービスで使っているBERTについて、前回は入力された文章をどうやって数値データに変換しているのかについてお話ししました。今回は、数値データにするときの言葉の単位(長さ、どこで切るのか)について考えていきたいと思います。日本語と英語での扱いの違い等についても触れたいと思います。ぜひお付き合いください。

言葉の単位とは何か

BERTでは文章を入力として処理を行いますが、まず最初にその文章を単語等に分割します。前回お話ししましたように、分割したものに対して分散表現(大量の種類ごとの数値データ)に変換して、BERTの中身であるニューラルネットワークに渡していきます。さて、その分割の方法はどうすれば良いのでしょうか。例えば、前回の例だと、

りんごとみかんを棚に置いて時計を棚から取りました。

という文章は、

りんご, と, みかん, を, 棚, に, 置い, て, 時計, を, 棚, から, 取り, まし, た, 。

という単位に分割しました。これは日本語の単語という単位で分割しています。文節という単位だと少し長めに分割して、

りんごと, みかんを, 棚に, 置いて, 時計を, 棚から, 取りました, 。

という分割になります。逆に短く分割する方法として、単純に文字単位というのも考えられます。

り, ん, ご, と, み, か, ん, を, 棚, に, 置, い, て, 時, 計, を, 棚, か, ら, 取, り, ま, し, た, 。

このように、分割の仕方にもいろいろ考えられますね。これは、日本語ならではの話です。日本語の場合、文字が全て空白なしで繋がっており、どこで区切れば良いかというのを考えなければならないからです。例えば、英語だと、

I put apples and oranges on the shelf.

という文章は、

I, put, apples, and, oranges, on, the, shelf, .

というように、空白のところで切るだけで分割できます。あまりそれ以外の分割方法を考える必要はなさそうです。もちろん、英語にもNew Yorkのように空白を含む単語がありますので、単純に空白で切れば良いというわけではないですが、日本語に比べると問題は簡単と言えます。

では、日本語のように文字が空白で区切られていないものをどうやって単語に分割すれば良いのでしょうか。その分割処理のことを形態素解析と呼びます。次の章ではその形態素解析についてお話ししたいと思います。

形態素解析とは

では、どうやって単語に分割するのでしょうか。その単語のことを形態素と呼び、文章がどのような形態素でできているのかを調べる処理を形態素解析と呼びます。

形態素解析では、形態素辞書と大量のテキスト(教師データ)を用いて解析をします。形態素辞書とは、

りんご: 品詞=名詞みかん: 品詞=名詞棚: 品詞=名詞時計: 品詞=名詞:置く: 品詞=動詞, 活用形=終止形, 標準形=置く置き: 品詞=動詞, 活用形=連用形, 標準形=置く置い: 品詞=動詞, 活用形=連用形, 標準形=置く:取る: 品詞=動詞, 活用形=終止形, 標準形=取る取り: 品詞=動詞, 活用形=連用形, 標準形=取る:と: 品詞=格助詞を: 品詞=格助詞から: 品詞=格助詞て: 品詞=接続助詞:ます: 品詞=助動詞, 活用形=終止形, 標準形=ますまし: 品詞=助動詞, 活用形=連用形, 標準形=まし:た: 品詞=助動詞, 活用形=終止形, 標準形=た:  

のようなもので、それぞれの形態素の見出しから情報(品詞や活用形等)を取り出すことができます。

そして、大量のテキスト(教師データ)とは、文章を形態素に区切って、それぞれの情報を付与したものです。

りんご:品詞=名詞 を:品詞=格助詞 置き:品詞=動詞,活用形=連用形,標準形=置く まし:品詞=助動詞,活用形=連用形,標準形=まし た:品詞=助動詞,活用形=終止形,標準形=た

のような情報を付与した文章を大量に用意して、形態素解析に、どんな品詞の次にはどんな品詞が来そうか、どんな活用形になりそうかなどを学習させます。

これにより、形態素解析は、辞書を引きながら、かつ、学習した情報も用いて、どのように分割して、分割した形態素の品詞がどういうものかを推測していきます。推測する際には、一つの文でも複数の推測ができる場合もあり、それは文全体として、教師データにより近いものが選ばれるような仕組みになっています。

日本ではこの形態素解析・辞書が大学や研究機関からオープンソースで公開されており、JUMAN・ChaSen(開発終了)・MeCab・Sudachiなどが開発されてきました。最近ではニューラルネットワーク技術に基づくJuman++というものもあります。

BERTではどう分割するのが良いのか

では、話をBERTに戻しましょう。

BERTでは、入力された文章を分割する必要がありました。日本語では形態素解析で単語に分割し、英語では空白で単語に分割するということがよく行われています。形態素解析では、品詞や活用形などの情報も出力できますが、BERTではあまり用いられません。BERTは文脈を見ることができるため、品詞等の情報をつけなくても前後の関係から自分で見分けてほぼ正しく処理できるためです。

そう考えると、BERTではどう分割するのが良いのでしょうか。それはBERTで何をやりたいのかにも依存しますし、まだはっきりとこういう分割をするのが良いという法則が決まっているわけではありません。ですので、現段階では、形態素解析で単語分割をすることが多いですが、文字単位で分割する場合もありますし、単語をさらに分割する手法(サブワード)や、形態素解析を使わずに出現する文字列の頻度等から統計的に分割する手法(Sentencepiece)も使われます。

とはいえ、BERTの事前学習では大量のテキストを大変な時間をかけて学習させることが必要ですので、各所で公開されている事前学習の結果データ(BERT日本語事前学習モデルと呼ばれます)を使うことが多いです。よく使われるBERT日本語事前学習モデルには、以下の2つがあります。

両方とも用いているものは異なりますが、形態素解析の結果をさらにサブワードに分割するという方法を使用していますので、その方法が今のところ無難なところかと思います。上記以外にも、Sentencepieceで分割しているもの等、いろいろ公開されていますので、BERTでやりたいことに合わせて選んでみるのが良いと思います。

ここまでで、BERTでの言葉の単位はどうなっているのかを見てきましたが、BERTそのものを取ってみても、まだまだ世界中で研究が進行中です。それに応じて言葉の単位も変わってくるかもしれません。皆様も自分がやりたいことに適切な単位はどんなものなのかについて考えを巡らせてみると面白いと思います。

>人工知能(AI)の入門なら体験して学べる 「fromZEROでAI体験」

人工知能(AI)の入門なら体験して学べる 「fromZEROでAI体験」

AI時代を生き抜くためには、開発者だけでなく利用者も「AIとは何か」を知ることが重要です。私たちは、すべての人に「AIとは何か」を知ってもらうために、AIを体験して学べるオンライン学習サービス「fromZEROでAI体験」をはじめました。

CTR IMG