ここの記事を参考に、ローカルディスクにダウンロードしたデータを利用する方法を予習しておく。ここにあるようにまず、
git lfs install
git clone https://huggingface.co/cl-tohoku/bert-base-japanese-char-v2
因みにlfsがよく分からず調べるとlarge file sizeつまり、大きなファイルをgitで扱うための仕組みらしい。
さて、このディレクトリで
jupyter notebook
を起動し、
import copy
import torch
import numpy as np
from transformers import AutoTokenizer, AutoModel, BertJapaneseTokenizer, BertForMaskedLM
model_path = './bert-base-japanese-char-v2'
bert_tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModel.from_pretrained(model_path)
tokenizer = BertJapaneseTokenizer.from_pretrained(model_path)
bert_mlm = BertForMaskedLM.from_pretrained(model_path)
を実行すると、
Some weights of the model checkpoint at ./bert-base-japanese-char-v2 were not used when initializing BertForMaskedLM: ['cls.seq_relationship.weight', 'cls.seq_relationship.bias'] - This IS expected if you are initializing BertForMaskedLM from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model). - This IS NOT expected if you are initializing BertForMaskedLM from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).
というwarningが出て、一応データがロードできているのかな?
ここで「BERTによる自然言語処理入門」の第五章#5-7のスクリプトを走らせると、
今日は海へ行く。 今日は街へ行く。 今日は東へ行く。 今日は南へ行く。 今日は家へ行く。 今日は北へ行く。 今日は外へ行く。 今日は西へ行く。 今日は山へ行く。 今日は空へ行く。
と少なくとも間違ってはいない単語で穴埋めされる。そしていろいろと文章を変えてみると、どうやら一文字の単語しか出てこないようだ。妥当そうなのだけれど、一文字の単語しか選択されない…。これは何が間違ってるのだろうか。
と思ってよく見ると、charモデルを使っていたのだった。後でwordpiece版に変更してみよう。