ダウンロードしたbert-base-japanese-v2を使う

タイトルにあるデータをダウンロードし、同じように

 

import copy
import torch
import numpy as np

from transformers import AutoTokenizer, AutoModel, BertJapaneseTokenizer, BertForMaskedLM
 
model_path = './bert-base-japanese-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)

 

でロードしてみた。そのあと、「BERTによる自然言語処理入門」の第五章#5-7のスクリプトを走らせると、

 

今日はニューヨークへ行く。
今日はどこへ行く。
今日はイタリアへ行く。
今日はアメリカへ行く。
今日は日本へ行く。
今日はパリへ行く。
今日は東京へ行く。
今日はフランスへ行く。
今日はインドへ行く。
今日は中国へ行く。

 

とちゃんと普通の単語が出てきた。さらに、

text = '今日は[MASK]を食べる。'

 

と変えてみて走らせると、

 

今日はチョコレートを食べる。
今日はバナナを食べる。
今日はケーキを食べる。
今日は寿司を食べる。
今日はトマトを食べる。
今日はラーメンを食べる。
今日は魚を食べる。
今日はカレーを食べる。
今日はパンを食べる。
今日は肉を食べる。

 

となった。実はtransformersに標準で含まれる東北大学の日本語モデル(たぶんVer.1)で同じことをすると、一番上に「ワイン」が出てきてしまい、なんだかな~、と思っていたのだった。下記がその実例。

 

今日はワインを食べる。
今日はコーヒーを食べる。
今日はビールを食べる。
今日はカレーを食べる。
今日はパンを食べる。
今日はソーセージを食べる。
今日は牛乳を食べる。
今日はチョコレートを食べる。
今日はスープを食べる。
今日はジャガイモを食べる。

V2も同じ方法で作成しているはずでWikipediaのデータも大きく変わったはずがないので、何が変わったのかわからないけれど、ちゃんと食べるものが出てきているのを見ると安心する。逆にV1の情報が大丈夫なのか心配になる。