4.Transformers
この項では、
Transformersというライブラリで、
単語の分散表現を得るために、
1.Tokenizerで、文章データをBERTに入力可能な形に変換する(符号化)
2.BertModelに、符号化データを入力して出力(トークンの分散表現)を得る
まずは、
1.Tokenizer(トークナイザ)
いくらA Iが賢いといっても、
日本語をそのまま受け付けるわけではない。
BERTの日本語モデル(*1)のトークナイザでは、
1.文章をMecab (*2)で単語に分割し、
さらに、
2.WordPieceでトークンに分割するのだ。
さらにさらに、
トークン化しただけではだめで、
トークンを数字(ID)に変換する(符号化)。
さらにさらにさらに、
系列長(トークン列の長さ)を揃えるために、paddingとtruncationを行い、
データ形式をtorch. Tensor(*3)にするために、tokenizer関数の引数に、return_tensors=‘ptを加える。
ここまでお化粧して初めて、
BERT様に文章データを入力できるのだ。
これら一連の処理を、
「データの前処理」という(*4)。
2年前、キカガクのA Iスクールで文章生成したときは、
Mecabで単語分割だけをして符号化した。
が、このモデルでは、
さらにWordPieceを使ってトークンに分割している(ここで「サブワード分割」が出てくる)。
あと、
Mecabで使う辞書は、デフォルトのipadicではなく、
新語対応しているNEologd(mecab-ipadic-neologd)を使ったほうがいい、
と聞いた気がするが、
このモデルの場合はどうだろう?
余裕ができたら試してみよう。