言語AIの進化史⑨バイト対符号化(BPE)
前回はトークンをベクトル化する埋め込みについて解説しました。トークンの数値化によって、トークン間の関係を計算することが可能となりました。その代表的な例としてWord2Vecなどを紹介しました。
ただし、どのように文章のトークン化がなされるかについては、英語などを想定とした手法を前提としていました。
例えば、アルファベットだけを考慮した処理として以下があります。
小文字化(Aからaへなど、大文字を全て小文字にする)
単語レベルでのトークン化(スペースやカンマなどで区切る)
なお、英語ベースのトークン化の処理についてはこちらでも解説しています。
こういった手法は日本語など多言語にはそのまま適用することができません。
さらに、未知語の問題も生じます。
これはそもそも語彙(ボキャブラリ)に含まれていない単語などの言語要素に対応できないという問題です。例えば、各トークンに対してそのIDとなる整数値を設定する場合、将来的に処理したいテキストの中に未知の単語が含まれていると未知語(あるいは未登録語)として扱うしかありません。
かといって、どんどん登録するトークンを増やしていくわけにもいきません。単語レベルのトークン化では語彙サイズが非常に大きくなり過ぎてしまいます。また、未知語や新しい単語を常に追加し訓練し直すのは非常に時間と労力がかかります。
よって、これらの問題を乗り越える必要があります。つまり、多言語と未知語の問題を解決できるようなトークン化の仕組みが必要となります。
そこで今回紹介するバイト対符号化(Byte Pair Encoding、BPE)や SentencePieceといった手法が登場します。
この記事が気に入ったらチップで応援してみませんか?