IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> bert4keras加载BERT模型并获取文本字向量、句向量CLS -> 正文阅读

[人工智能]bert4keras加载BERT模型并获取文本字向量、句向量CLS

bert4keras加载BERT模型并获取文本字向量、句向量CLS

环境依赖

tensorflow2.3+
bert4keras

开源BERT模型下载

BERT模型https://github.com/ymcui/Chinese-BERT-wwm ,BERT-wwm-ext, Chinese TF版
模型解压后文件目录如下:
bert_config.json:保存的是BERT模型的一些主要参数设置
bert_model.ckpt.xxxx:这里有多个文件,但导入模型只需要bert_model.ckpt这个前缀就可以了
vocab.txt:用来预训练时的词典

BERT模型导入

# 设置TF_KERAS = 1,表示使用tf.keras
import os
os.environ["TF_KERAS"] = '1'

import numpy as np
from tensorflow.keras.models import load_model
from bert4keras.models import build_transformer_model
from bert4keras.tokenizers import Tokenizer
from bert4keras.snippets import to_array

# 模型保存路径
checkpoint_path = r"XXX\chinese_roberta_wwm_ext_L-12_H-768_A-12\bert_model.ckpt"
dict_path = r"XXX\chinese_roberta_wwm_ext_L-12_H-768_A-12\vocab.txt"
config_path = r"XXX\chinese_roberta_wwm_ext_L-12_H-768_A-12\bert_config.json"

# 加载预训练模型
bert = build_transformer_model(
    config_path=config_path,
    checkpoint_path=checkpoint_path,
    model='bert',
)

BERT模型预测

tokenizer = Tokenizer(dict_path, do_lower_case=True)  # 建立分词器

# 编码测试
token_ids, segment_ids = tokenizer.encode(u'语言模型')
token_ids, segment_ids = to_array([token_ids], [segment_ids])

# 模型预测
print('\n ===== predicting =====\n')
print(bert.predict([token_ids, segment_ids]))

# 模型保存与加载
print('\n ===== reloading and predicting =====\n')
bert.save('test.model')

del bert
bert = load_model('test.model')
print(bert.predict([token_ids, segment_ids]))

字向量、句向量获取

tokenizer分词器对每句文本进行转换,获取文本的映射 ids 列表,其中首位CLS为句向量,末尾SEP为间隔符。
在这里插入图片描述
使用以下方式获得CLS句向量:其中文本长度为10,返回长度为12的矩阵,即包含首尾CLS、SEP向量
在这里插入图片描述

个人思考

  • 该开源BERT模型是在通用语料库上训练的,因此不具有领域偏向性。
  • 直接使用CLS向量进行文本相似度计算时,效果并不好,需在领域语料库上fine-tune
  • 如果直接使用句中词向量平均来得到句向量,该句向量就失去了语序特点,如 “张三请李四吃饭。” 和 “李四请张三吃饭。”具有高度相似性,如下图。但这种方式可用于寻找使用相同含义词汇的句子(无需考虑语序)。
    在这里插入图片描述

参考博客:bert4keras、transformers 加载预训练bert模型、句向量cls,字向量提取

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:13:20  更:2022-03-03 16:16:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:41:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码