SB Intuitionsから日本語生成AI「Sarashina1・2」がリリースされた。独自構築のトークナイザに力を入れたらしい。
Sarashina1・2にはそれぞれ独自に構築したトークナイザを用いました。 具体的には,sentencepieceの提供するユニグラム言語モデルのアルゴリズムを用いてサブワードを構築しました。 その際,Sarashina2の語彙サイズ(102,400)はSarashina1の語彙サイズ(51,200)の倍に設定しました。 これにより,日本語・英語・プログラミングコードといった複数種類のデータを効率的に学習可能です。
とりあえず、sarashina2-7bのトークナイザを試してみよう。
>>> from transformers import AutoTokenizer
>>> tkz=AutoTokenizer.from_pretrained("sbintuitions/sarashina2-7b")
>>> print(tkz.convert_ids_to_tokens(tkz("国境の長いトンネルを抜けると雪国であった。","夜の底が白くなった。")["input_ids"]))
['国境', 'の長い', 'トンネル', 'を抜け', 'ると', '雪', '国', 'であった', '。', '</s>', '夜の', '底', 'が', '白', 'くなった', '。', '</s>']
残念ながら、日本語トークナイザとしてはボロボロだ。特に「の長い」「を抜け」「ると」に関しては、単語の切れ目を完全に無視していて、日本語における言語処理としては話にならない。Sentencepieceのサブワード構築については「Sentencepieceの分割をMeCabっぽくする」っていう記事が1年以上前に出てるのだけど、ちゃんと読まずに構築しちゃったんだろうなあ。