yasuokaの日記: GuwenBERT-baseは「孟子[MASK]梁惠王」の[MASK]に何を埋めてくるのか
Transformersのモデルページに、古典中国語モデルGuwenBERT-baseが収録されているのを見つけたので、ちょっとだけGoogle Colaboratoryで試してみた。
!pip install transformers
import torch
from transformers import AutoTokenizer,AutoModelForMaskedLM
tokenizer=AutoTokenizer.from_pretrained("ethanyt/guwenbert-base")
model=AutoModelForMaskedLM.from_pretrained("ethanyt/guwenbert-base")
tokens=tokenizer.tokenize("孟子[MASK]梁惠王")
print(tokens)
mask=tokens.index("[MASK]")
ids=torch.tensor([tokenizer.convert_tokens_to_ids(tokens)])
with torch.no_grad():
outputs=model(ids)
pred=outputs[0][0,mask].topk(5)
for i,t in enumerate(tokenizer.convert_ids_to_tokens(pred.indices)):
tokens[mask]=t
print(i+1,tokens)
「孟子[MASK]梁惠王」という例文に対し、私(安岡孝一)の手元では、以下の結果が得られた。
['孟', '子', '[MASK]', '梁', '惠', '王']
1 ['孟', '子', '见', '梁', '惠', '王']
2 ['孟', '子', '曰', '梁', '惠', '王']
3 ['孟', '子', '谓', '梁', '惠', '王']
4 ['孟', '子', '说', '梁', '惠', '王']
5 ['孟', '子', '对', '梁', '惠', '王']
いきなり「孟子见梁惠王」を当ててくるとは、なかなか素晴らしい。ただ、古典中国語なのに簡化字で、しかも1文字ずつトークナイズしてるようだ。さて、どうしたものかな…。
GuwenBERT-baseは「孟子[MASK]梁惠王」の[MASK]に何を埋めてくるのか More ログイン