Bert完形填空

转载自:| 03_language_model/03_Bert完形填空.ipynb | 基于transformers使用Bert模型做完形填空 |Open In Colab |

完形填空

利用语言模型,可以完成完形填空(fill mask),预测缺失的单词。

当前,效果最好的语言模型是Bert系列的预训练语言模型。

python 复制代码
!pip install transformers
python 复制代码
import os

from transformers import pipeline

os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
model_name = "hfl/chinese-macbert-base"

nlp = pipeline("fill-mask",
               model=model_name,
               tokenizer=model_name,
               device=-1,  # gpu device id
               )
from pprint import pprint

pprint(nlp(f"明天天{nlp.tokenizer.mask_token}很好?"))
print("*" * 42)
pprint(nlp(f"明天心{nlp.tokenizer.mask_token}很好?"))
print("*" * 42)
pprint(nlp(f"张亮在哪里任{nlp.tokenizer.mask_token}?"))
print("*" * 42)
pprint(nlp(f"少先队员{nlp.tokenizer.mask_token}该为老人让座位。"))

模型默认保存在:~/.cache/huggingface/transformers

不通过pipeline,可以自己写预测逻辑:

python 复制代码
from transformers import AutoModelWithLMHead, AutoTokenizer
import torch

# tokenizer = AutoTokenizer.from_pretrained("distilbert-base-cased")
# model = AutoModelWithLMHead.from_pretrained("distilbert-base-cased")
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelWithLMHead.from_pretrained(model_name)

sequence = f"明天天{nlp.tokenizer.mask_token}很好."
input = tokenizer.encode(sequence, return_tensors="pt")
mask_token_index = torch.where(input == tokenizer.mask_token_id)[1]
token_logits = model(input).logits
mask_token_logits = token_logits[0, mask_token_index, :]
top_5_tokens = torch.topk(mask_token_logits, 5, dim=1).indices[0].tolist()
for token in top_5_tokens:
    print(sequence.replace(tokenizer.mask_token, tokenizer.decode([token])))
相关推荐
Eiceblue2 分钟前
将 Python 列表导出为 Excel 文件:一维、二维、字典列表
开发语言·python·excel·visual studio code
Swizard7 小时前
别再让你的 Python 傻等了:三分钟带你通过 asyncio 实现性能起飞
python
过期的秋刀鱼!8 小时前
人工智能-深度学习-线性回归
人工智能·深度学习
IE068 小时前
深度学习系列84:使用kokoros生成tts语音
人工智能·深度学习
IE068 小时前
深度学习系列83:使用outetts
人工智能·深度学习
Darkershadow9 小时前
python学习之串口通信
python·学习
3824278279 小时前
python:输出JSON
前端·python·json
也许是_10 小时前
大模型应用技术之 详解 MCP 原理
人工智能·python
沙漠豪10 小时前
提取PDF发票信息的Python脚本
开发语言·python·pdf