当前位置: 首页 > news >正文

bert实现完形填空简单案例

使用 bert 来实现一个完形填空的案例,使用预训练模型 bert-base-chinese ,这个模型下载到跟代码同目录下即可,下载可参考:bert预训练模型下载-CSDN博客

通过这个案例来了解一下怎么使用预训练模型来完成下游任务,算是对怎么使用 bert 的流程有一个初步的了解,代码都写注释了,直接看代码注释就好:

import torch
from transformers import BertTokenizer, BertForMaskedLM, BertConfig#加载预训练模型 tokenizer (vocabulary),词表文件
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')#输入文本
# [CLS] 表示段落开始,只有一个
# [SEP] 表示句子的结束,可以有多个
text = "[CLS] 我是谁 ? [SEP] zjk原来是程序员 [SEP]"
# 转换输入文本,有点像分词,如词在词表中找不到,会以 # 开头
tokenized_text = tokenizer.tokenize(text)
print(tokenized_text)# 将索引为 11 的字用 [MASK] 屏蔽,如果被屏蔽的是 # 那么预测不出来结果
masked_index = 11  # 掩码一个标记,用' BertForMaskedLM '预测回来
tokenized_text[masked_index] = '[MASK]'
print(tokenized_text)# 将标记转换为词汇表索引
indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)
print(indexed_tokens)# 将输入转换为PyTorch张量
tokens_tensor = torch.tensor([indexed_tokens])
print(tokens_tensor)#指定设备
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print(device)# 加载预训练模型 (weights)
model = BertForMaskedLM.from_pretrained('bert-base-chinese')
# 为了确保模型在处理新样本时能提供稳定且具有代表性的预测结果,禁用dropout和batch normalization等在训练阶段启用但在预测时应关闭的功能。
model.eval()
model.to(device)# 段标识索引,标识输入文本中的第一句,第2据,0对应属于第一个句子的,1代表对应属于第二个句子的
segments_ids = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]
segments_tensors = torch.tensor([segments_ids]).to(device)tokens_tensor = tokens_tensor.to(device)  # 输入句子的张量,其实就是每个字在词表中的索引
# 预测所有的tokens,可以理解为标准固定写法
with torch.no_grad():  # 模型不会累积梯度,适合用于预测任务outputs = model(tokens_tensor, token_type_ids=segments_tensors)  # 传入了tokens张量和对应的句子类型张量
# BERT模型的输出是一个元组,其中第一个元素通常是 mask 对应于每个位置上所有可能token的概率分布,
# 形状与输入tokens张量相同(这里为 [1, 16, 21128],表示batch大小为1、序列长度为16、词汇表大小为21128的三维张量)
# 的是模型在每次迭代更新参数时处理的样本数量,这里我们就处理了一个样本
predictions = outputs[0]  # [1, 16, 21128]
# 找到在mask位置上的概率最高的token索引。masked_index 是待预测 token 在 tokens 张量中的位置
predicted_index = torch.argmax(predictions[0, masked_index]).item()
predicted_token = tokenizer.convert_ids_to_tokens([predicted_index])[0]  # 转成单词
print('Predicted token is:', predicted_token)

运行结果:

相关文章:

bert实现完形填空简单案例

使用 bert 来实现一个完形填空的案例,使用预训练模型 bert-base-chinese ,这个模型下载到跟代码同目录下即可,下载可参考:bert预训练模型下载-CSDN博客 通过这个案例来了解一下怎么使用预训练模型来完成下游任务,算是对…...

Jmeter 分布式测试

Jmeter单机进行压测,受到单台机器的性能影响,Jmeter支持分布式测试,用一个控制节点去控制多个工作节点去模拟更多的用户。 版本信息 内容版本号JDK1.8Jmeter5.6.2 分布式测试原理 jmeter 官网对分布式测试有说明,jmeter分布式…...

在 Ubuntu 上安装 Docker Engine

系列文章目录 前言 要在 Ubuntu 上开始使用 Docker Engine,请确保满足先决条件,然后按照安装步骤进行操作。 一、先决条件 注意事项 如果您使用 ufw 或 firewalld 管理防火墙设置,请注意当您使用 Docker 暴露容器端口时,这些端口…...

Mac安装nvm,安装多个不同版本node,指定node版本

一.安装nvm brew install nvm二。配置文件 touch ~/.zshrc echo export NVM_DIR~/.nvm >> ~/.zshrc echo source $(brew --prefix nvm)/nvm.sh >> ~/.zshrc三.查看安装版本 nvm -vnvm常用命令如下:nvm ls :列出所有已安装的 node 版本nvm…...

【开源】基于JAVA+Vue+SpringBoot的智慧家政系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服务4.2 新增单条服务订单4.3 新增留言反馈4.4 小程序登录4.5 小程序数据展示 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的智慧家政系统&#xff0…...

Python NLP深度学习进阶:自然语言处理

自然语言处理(Natural Language Processing,NLP)是人工智能领域中的一个重要分支,涉及到处理和理解人类语言的方法和技术。随着深度学习的快速发展,NLP的研究和应用也在不断进步。 在Python中,有许多强大的…...

STM32单片机基本原理与应用(三)

矩阵键盘工作原理 矩阵键盘由多个独立按键组成,按键的一端接地,一端接MCU的GPIO。当按键没有被按下时,电路其实是一个断路,将单片机该引脚设置成输入上拉状态,读到的电平为高电平。当按下按键时,引脚会被拉…...

Android studio布局详解

文章目录 一、Android studio布局详解二、Android studio六大布局案例三、优缺点四、热门文章 一、Android studio布局详解 Android Studio是一种用于开发Android应用程序的集成开发环境(IDE),用于设计和编辑Android应用程序的用户界面布局。在Android …...

第四篇:怎么写express的路由(接口+请求)

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 📘 引言: &#x1f4…...

算法学习记录:有关树的基础

前言: 算法学习记录不是算法介绍,本文记录的是从零开始的学习过程(见到的例题,代码的理解……),所有内容按学习顺序更新,而且不保证正确,如有错误,请帮助指出。 学习工具…...

2. 《大数据之路:阿里巴巴大数据实践》学习笔记,持续更新ing

笔记链接(飞书):https://t0s016els2a.feishu.cn/docx/JrNydGljUonH1ExcGCpcoC8unTb 密码:r661391 该书籍部分目录如下: 文章目录 第1篇 数据技术篇第2章 日志采集2.1 浏览器的页面日志采集2.1.1 页面浏览日志采集流程2.1.2 页面交互日志采集…...

编程笔记 html5cssjs 062 JavaScrip如何使用

编程笔记 html5&css&js 062 JavaScrip如何使用 一、 引入JavaScript二、DOM操作三、事件处理四、数据验证五、异步编程六、使用库和框架七、模块化开发小结 开始学习使用JavaScript进行前端开发的基本步骤和常见实践。 这里先列示基本的步骤和内容,后面慢慢…...

【前端基础--7】

DOM操作 DOM&#xff0c;全称(Document Object Model)&#xff0c;文档对象模型。 提供操作HTML的方法&#xff08;操作页面元素&#xff09; 获取节点 --- 操作元素标签 <body><div id"box">我是盒子标签</div><p class"text"&g…...

微信小程序如何搜索iBeacon设备

1.首先在utils文件夹下创建bluetooth.js和ibeacon.js 2.在 bluetooth.js文件中写入 module.exports {initBluetooth: function () {// 初始化蓝牙模块wx.openBluetoothAdapter({success: function (res) {console.log(蓝牙模块初始化成功);},fail: function (res) {console.l…...

JVM篇:垃圾回收算法

标记清除 通过遍历GC Root后得到不再被引用的对象&#xff0c;对没被引用的对象做一个标记处理&#xff0c;然后对其进行清除。 优点&#xff1a;速度快 缺点&#xff1a;会产生内存碎片&#xff0c;可能会导致空闲的内存足够保存对象&#xff0c;但由于不连续而保存失败。 标…...

2024年数学建模美赛 分析与编程

2024年数学建模美赛 分析与编程 1、本专栏将在2024年美赛题目公布后&#xff0c;进行深入分析&#xff0c;建议收藏&#xff1b; 2、本专栏对2023年赛题&#xff0c;其它题目分析详见专题讨论&#xff1b; 2023年数学建模美赛A题&#xff08;A drought stricken plant communi…...

05-Nacos-配置中心接入

1、pom依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency> 2、配置文件 spring:application:name: nacos-config## 当前环境&#xff0c;这个和…...

服务端开发小记02——Maven

这里写目录标题 Maven简介Maven在Linux下的安装Maven常用命令 Maven简介 Apache Maven Project是一个apache的开源项目&#xff0c;是用于构建和管理Java项目的工具包。 用Maven可以方便地创建项目&#xff0c;基于archetype可以创建多种类型的java项目&#xff1b;Maven仓库…...

DjangoURL调度器(一)

一、介绍 当一个用户请求 Django 站点的一个页面&#xff0c;下面是 Django 系统决定执行哪个 Python 代码使用的算法&#xff1a; Django确定要使用的根URLconf模块&#xff0c;一般是在settings中的ROOT_URLCONF设置的值&#xff0c;但是如果传入 HttpRequest 对象具有一个ur…...

Typora 无法导出 pdf 问题的解决

目录 问题描述 解决困难 解决方法 问题描述 我的 Windows 下&#xff0c;以前&#xff08;Windows 11&#xff09; Typora 可以顺利较快地由 .md 导出 .pdf 文件&#xff0c;此功能当然非常实用与重要。 然而&#xff0c;有一次电脑因故重装了系统&#xff08;刷机&#x…...

PvZ Toolkit:植物大战僵尸全能修改工具全面解析

PvZ Toolkit&#xff1a;植物大战僵尸全能修改工具全面解析 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit PvZ Toolkit 是一款专为《植物大战僵尸》PC版设计的开源修改工具&#xff0c;支持从Wind…...

解决IDEA/DataGrip连接SQL Server时的TLS协议兼容性问题

1. 为什么IDEA/DataGrip连不上SQL Server&#xff1f; 最近帮同事排查一个数据库连接问题&#xff0c;发现不少人在用IDEA或DataGrip连接SQL Server时都会遇到这个报错&#xff1a;"The server selected protocol version TLS10 is not accepted by client"。这个错误…...

4个免费开源工具帮你省下OpenAI Deep Research的200美元月费(附详细配置指南)

4款开源工具实现专业级AI研究&#xff1a;零成本替代OpenAI Deep Research全攻略 当OpenAI推出Deep Research功能时&#xff0c;许多研究者和开发者的眼睛都亮了——自动完成复杂研究任务、整合海量信息并生成专业报告的能力&#xff0c;正是知识工作者的梦想工具。但每月200美…...

Java全栈开发工程师的实战面试经历:从基础到微服务的深度探讨

Java全栈开发工程师的实战面试经历&#xff1a;从基础到微服务的深度探讨 1. 面试官开场介绍 面试官&#xff1a;你好&#xff0c;欢迎来到我们的面试环节。我是今天的面试官&#xff0c;负责对候选人的技术能力进行评估。我看到你的简历上写着有5年的Java全栈开发经验&#…...

ECharts甘特图实战:5分钟搞定项目进度可视化(附完整代码)

ECharts甘特图实战&#xff1a;5分钟搞定项目进度可视化&#xff08;附完整代码&#xff09; 项目管理中&#xff0c;进度可视化是团队协作的核心需求。传统表格难以直观展示任务依赖关系&#xff0c;而专业项目管理软件又过于笨重。ECharts作为国内最流行的数据可视化库&…...

微信小程序-live-player-实时视频-截图与文件流转换实战

1. 微信小程序live-player组件基础使用 微信小程序的live-player组件是专门用于播放实时视频流的核心组件。我在多个实际项目中使用过这个组件&#xff0c;发现它比普通的video组件更适合直播场景。live-player支持RTMP、FLV等常见直播协议&#xff0c;延迟可以控制在3秒以内&…...

YouDownSet v1.3.76-多平台无需会员即可下载8K/4K视频,满速109.5MB/s!

一款面向电脑端打造的多平台视频下载工具&#xff0c;支持高分辨率内容获取和多线程任务处理&#xff0c;适合经常需要保存在线视频的用户使用。软件的一大亮点在于支持 8K、4K 等高画质下载&#xff0c;并且整体流程非常直接&#xff0c;用户只需开启一键下载功能后粘贴目标地…...

CYBER-VISION零号协议Transformer原理与应用实战

CYBER-VISION零号协议Transformer原理与应用实战 如果你对AI大模型背后的“发动机”感到好奇&#xff0c;想知道为什么现在的模型能理解上下文、生成连贯的文本&#xff0c;甚至看懂图片&#xff0c;那么“Transformer”就是你绕不开的核心。它不像过去那些依赖顺序处理的模型…...

Qwen3-0.6B-FP8极速对话工具:STM32F103C8T6最小系统板集成

Qwen3-0.6B-FP8极速对话工具&#xff1a;STM32F103C8T6最小系统板集成 让AI对话能力跑在指甲盖大小的开发板上 1. 场景与痛点 你可能很难想象&#xff0c;一个能进行智能对话的AI模型&#xff0c;居然可以运行在一块只有拇指大小的STM32开发板上。传统的AI模型部署往往需要强大…...

Kaggle Notebook中文乱码终结者:3分钟搞定Matplotlib字体配置(附Noto Sans CJK全流程)

Kaggle Notebook中文乱码终结者&#xff1a;3分钟搞定Matplotlib字体配置&#xff08;附Noto Sans CJK全流程&#xff09; 在数据可视化过程中&#xff0c;中文显示问题一直是困扰许多Kaggle用户的痛点。当你在Notebook中满怀期待地运行代码&#xff0c;却发现图表中的中文变成…...