LoginSignup
12
11

More than 1 year has passed since last update.

穴埋め問題で、Bert(日本語)の威力を体感する。

Last updated at Posted at 2021-07-28

はじめに

タイトルのとおり、
穴埋め問題で、Bert(日本語)の威力を体感する。

『今日は最悪の一日だ。』
『今日は最高の一日だ。』

の前振りに対するBertの反応をみた。

環境

OS: windows
transformers: 4.9.1
GPU: I do not have a GPU.

検証結果

問題1

問題文

(今日は最悪の一日だ。財布を XXX した。)

input_ids = tokenizer.encode(f'今日は最悪の一日だ。財布を{tokenizer.mask_token}した。', return_tensors='pt')

回答

[CLS] 今日 は 最悪 の 一 日 だ 。 財布 を 紛失 し た 。 [SEP]
[CLS] 今日 は 最悪 の 一 日 だ 。 財布 を 用意 し た 。 [SEP]
[CLS] 今日 は 最悪 の 一 日 だ 。 財布 を 破壊 し た 。 [SEP]
[CLS] 今日 は 最悪 の 一 日 だ 。 財布 を 発見 し た 。 [SEP]
[CLS] 今日 は 最悪 の 一 日 だ 。 財布 を 回収 し た 。 [SEP]

⇒⇒ 100点かな。。。

問題2

問題文

(今日は最高の一日だ。財布を XXX した。)

input_ids = tokenizer.encode(f'今日は最高の一日だ。財布を{tokenizer.mask_token}した。', return_tensors='pt')

回答

[CLS] 今日 は 最高 の 一 日 だ 。 財布 を プレゼント し た 。 [SEP]
[CLS] 今日 は 最高 の 一 日 だ 。 財布 を 購入 し た 。 [SEP]
[CLS] 今日 は 最高 の 一 日 だ 。 財布 を 用意 し た 。 [SEP]
[CLS] 今日 は 最高 の 一 日 だ 。 財布 を 交換 し た 。 [SEP]
[CLS] 今日 は 最高 の 一 日 だ 。 財布 を 準備 し た 。 [SEP]

⇒⇒100点かな。。。
「なくした財布を」ならば、「発見」したとかだろうけど、、、、この文なら、
「プレゼント」は、面白いと思う。

コード

import torch
from transformers import BertJapaneseTokenizer
from transformers import BertForMaskedLM

tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')

model = BertForMaskedLM.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')

input_ids = tokenizer.encode(f'今日は最悪の一日だ。財布を{tokenizer.mask_token}した。', return_tensors='pt')

masked_index = torch.where(input_ids == tokenizer.mask_token_id)[1].tolist()[0]

result = model(input_ids)
pred_ids = result[0][:, masked_index].topk(5).indices.tolist()[0]
for pred_id in pred_ids:
    output_ids = input_ids.tolist()[0]
    output_ids[masked_index] = pred_id
    print(tokenizer.decode(output_ids))

上記は、
https://www.koi.mashykom.com/bert.html
などを参考にさせて頂きました。
(他のサイトもいろいろ、参考にしています。)

余談

以下の記事で、ネガティブに(笑)に、引用されていた。でも、内容は面白い。
https://ai-de-seikei.hatenablog.com/entry/2022/01/10/111614

まとめ

それなりな感じ。。。

12
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11