BERT预训练模型简单应用(中文句子向量相关性分析)
目录
一、BERT简单认识
二、Google BERT以及中文模型下载
1、Google BERT源码下载
2、bert-as-server 框架下载
3、中文预训练模型下载
三、bert生成中文句子向量
1、启动BERT服务
2、中文句子向量编码
四、cosine相似度计算
五、完整实验代码
一、BERT简单认识
Google BERT预训练模型在深度学习、NLP领域的应用已经十分广泛了,在文本分类任务达到很好的效果。相比传统的词嵌入word2vec、golve,使用bert预训练得到的效果有更好地提升。
这篇不会很深入复杂地分析bert的原理以及高级应用,而是从零开始,定位于初学者对BERT的简单认识和应用,使用bert框架 bert-as-server(CS架构)。
二、Google BERT以及中文模型下载
1、Google BERT源码下载
Google BERT的完整源码下载地址:https://github.com/google-research/bert
官方给出BERT的解释:
BERT是一种预先训练语言表示的方法,这意味着我们在一个大型文本语料库(如Wikipedia)上训练一个通用的“语言理解”模型,然后将该模型用于我们关心的下游NLP任务(如回答问题)。BERT优于以前的方法,因为它是第一个无监督的,深度双向的预训练自然语言处理系统。
源码的应用在以后学习过程可以进一步研究,现在入门阶段可以使用框架更加简单。
2、bert-as-server 框架下载
pip install bert-serving-server #server
pip install bert-serving-client #client
3、中文预训练模型下载
google下载地址:https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip
哈工大下载地址:https://pan.iflytek.com/link/A2483AD206EF85FD91569B498A3C3879 (密码07Xj)
解压之后文件目录如下,包括bert配置文件、预训练模型和词汇表。
三、bert生成中文句子向量
1、启动BERT服务
bert-serving-start -model_dir D:\PyCharm_Project\bert-use-demo-master\chinese_bert_chinese_wwm_L-12_H-768_A-12 -max_batch_size 10 -max_seq_len 20 -num_worker 1
文件目录为上一步解压的中文预训练模型,参数可以自行设置。
启动成功效果:
2、中文句子向量编码
from bert_serving.client import BertClient
import numpy as npdef main():bc = BertClient()doc_vecs = bc.encode(['今天天空很蓝,阳光明媚', '今天天气好晴朗', '现在天气如何', '自然语言处理', '机器学习任务'])print(doc_vecs)if __name__ == '__main__':main()
得到每个句子的向量表示为:
[[ 0.9737132 -0.0289975 0.23281255 ... 0.21432212 -0.1451838
-0.26555032]
[ 0.57072604 -0.2532929 0.13397914 ... 0.12190636 0.35531974
-0.2660934 ]
[ 0.33702925 -0.27623484 0.33704653 ... -0.14090805 0.48694345
0.13270345]
[ 0.00974528 -0.04629223 0.48822984 ... -0.24558026 0.09809375
-0.08697749]
[ 0.29680184 0.13963464 0.30706868 ... 0.05395972 -0.4393276
0.17769393]]
四、cosine相似度计算
def cos_similar(sen_a_vec, sen_b_vec):'''计算两个句子的余弦相似度'''vector_a = np.mat(sen_a_vec)vector_b = np.mat(sen_b_vec)num = float(vector_a * vector_b.T)denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)cos = num / denomreturn cos
实验结果:
句子:
'今天天空很蓝,阳光明媚', '今天天气好晴朗'
相似度:0.9508827722696014
句子:
'自然语言处理', '机器学习任务'
相似度:0.9187518514435784
句子:
'今天天空很蓝,阳光明媚', '机器学习任务'
相似度:0.7653104788070156
五、完整实验代码
from bert_serving.client import BertClient
import numpy as npdef cos_similar(sen_a_vec, sen_b_vec):'''计算两个句子的余弦相似度'''vector_a = np.mat(sen_a_vec)vector_b = np.mat(sen_b_vec)num = float(vector_a * vector_b.T)denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)cos = num / denomreturn cosdef main():bc = BertClient()doc_vecs = bc.encode(['今天天空很蓝,阳光明媚', '今天天气好晴朗', '现在天气如何', '自然语言处理', '机器学习任务'])print(doc_vecs)similarity=cos_similar(doc_vecs[0],doc_vecs[4])print(similarity)if __name__ == '__main__':main()
这篇简单介绍了BERT的基本应用,使用bert框架对中文句子进行编码,生成句子向量,同时可以进行句子语义的相关性分析。
Google BERT预训练模型在深度学习、NLP领域的应用已经十分广泛了,在文本分类任务达到很好的效果。相比传统的词嵌入word2vec、golve,使用bert预训练得到的效果有更好地提升。
可以看到BERT的基础使用相对简单,这篇没有很深入复杂地分析bert的原理以及高级应用,而是从零开始,定位于初学者对BERT的简单认识和应用,使用bert框架 bert-as-server(CS架构),也算是为之后深入的学习研究做了一点基础功课。
如果觉得不错欢迎“一键三连”哦,点赞收藏关注,有问题直接评论,交流学习!
我的CSDN博客:https://blog.csdn.net/Charzous/article/details/113824876
BERT预训练模型简单应用(中文句子向量相关性分析)相关推荐
- 获得Bert预训练好的中文词向量
安装肖涵博士的bert-as-service: pip install bert-serving-server pip install bert-serving-client 下载训练好的Bert中文 ...
- Pytorch中使用Bert预训练模型,并给定句子得到对应的向量
写在前面 本次的需求是:通过预训练好的Bert模型,得到不同语境下,不同句子的句向量.相比于word2vec.glove这种静态词向量,会含有更丰富的语义,并能解决不同场景不同意思的问题. 建议大家先 ...
- 金融领域首个开源中文BERT预训练模型,熵简科技推出FinBERT 1.0
出品 | AI科技大本营 头图 | CSDN付费下载于东方IC 为了促进自然语言处理技术在金融科技领域的应用和发展,熵简科技 AI Lab 近期开源了基于 BERT 架构的金融领域预训练语言模型 Fi ...
- 刷新中文阅读理解水平,哈工大讯飞联合发布基于全词覆盖中文BERT预训练模型...
作者 | HFL 来源 | 哈工大讯飞联合实验室(ID:rgznai100) 为了进一步促进中文自然语言处理的研究发展,哈工大讯飞联合实验室发布基于全词覆盖(Whole Word Masking)的中 ...
- 使用Bert预训练模型进行中文文本分类(基于pytorch)
前言 最近在做一个关于图书系统的项目,需要先对图书进行分类,想到Bert模型是有中文文本分类功能的,于是打算使用Bert模型进行预训练和实现下游文本分类任务 数据预处理 2.1 输入介绍 在选择数据集 ...
- BERT预训练模型的演进过程!(附代码)
文章目录 1. 什么是BERT 2. 从Word Embedding到Bert模型的发展 2.1 图像的预训练 2.2 Word Embedding 2.3 ELMO 2.4 GPT 2.5 BERT ...
- Pytorch——BERT 预训练模型及文本分类(情感分类)
BERT 预训练模型及文本分类 介绍 如果你关注自然语言处理技术的发展,那你一定听说过 BERT,它的诞生对自然语言处理领域具有着里程碑式的意义.本次试验将介绍 BERT 的模型结构,以及将其应用于文 ...
- 手把手教 | 使用Bert预训练模型文本分类(内附源码)
作者:GjZero 标签:Bert, 中文分类, 句子向量 本文约1500字,建议阅读8分钟. 本文从实践入手,带领大家进行Bert的中文文本分类和作为句子向量进行使用的教程. Bert介绍 Bert ...
- BERT预训练模型系列总结
BERT预训练模型系列总结 文章目录 BERT预训练模型系列总结 BERT模型 BERT模型的输入输出 BERT模型的预训练任务 BERT模型的下游任务 ROBERTa模型 ALBERT模型 MacB ...
最新文章
- 阿里巴巴开源项目nginx_concat_module企业部署实例
- 《系统集成项目管理工程师》必背100个知识点-08项目可行性研究内容
- Qt QWidget实现开关控件SwithButton(SlipButton)
- shell 基本知识
- 利用反射,批量启动WCF服务
- 命令行开发、编译、打包Android应用程序
- 探秘ReSharper 8新功能——XAML编辑
- 使用php下载的文件打不开,自己用着没问题,客户用就不行?
- 我经常逛的技术网站,个个经典
- 编码人员和美工的配合问题
- 如何快速查看Oracle的安装目录
- php 腾讯短信接口api,腾讯云短信发送功能API-PHP接入
- python一维列表变二维列表_使用Python轻松应对一维表与二维表相互转换
- RobotFramework set global/suite/test variable
- 无需代码,极简5步大屏可视化教程,3分钟就能轻松做出酷炫报表
- LabVIEW使用两三年感触
- linux dns劫持转发,linux的dns被劫持(解决方案)
- 少儿python编程课程大纲_1.Python编程-课程教学大纲.doc
- 软件测试之Web测试
- 计算机毕业设计 SSM在线音乐网站设计与实现(源码+论文)