目录

一、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预训练模型简单应用(中文句子向量相关性分析)相关推荐

  1. 获得Bert预训练好的中文词向量

    安装肖涵博士的bert-as-service: pip install bert-serving-server pip install bert-serving-client 下载训练好的Bert中文 ...

  2. Pytorch中使用Bert预训练模型,并给定句子得到对应的向量

    写在前面 本次的需求是:通过预训练好的Bert模型,得到不同语境下,不同句子的句向量.相比于word2vec.glove这种静态词向量,会含有更丰富的语义,并能解决不同场景不同意思的问题. 建议大家先 ...

  3. 金融领域首个开源中文BERT预训练模型,熵简科技推出FinBERT 1.0

    出品 | AI科技大本营 头图 | CSDN付费下载于东方IC 为了促进自然语言处理技术在金融科技领域的应用和发展,熵简科技 AI Lab 近期开源了基于 BERT 架构的金融领域预训练语言模型 Fi ...

  4. 刷新中文阅读理解水平,哈工大讯飞联合发布基于全词覆盖中文BERT预训练模型...

    作者 | HFL 来源 | 哈工大讯飞联合实验室(ID:rgznai100) 为了进一步促进中文自然语言处理的研究发展,哈工大讯飞联合实验室发布基于全词覆盖(Whole Word Masking)的中 ...

  5. 使用Bert预训练模型进行中文文本分类(基于pytorch)

    前言 最近在做一个关于图书系统的项目,需要先对图书进行分类,想到Bert模型是有中文文本分类功能的,于是打算使用Bert模型进行预训练和实现下游文本分类任务 数据预处理 2.1 输入介绍 在选择数据集 ...

  6. BERT预训练模型的演进过程!(附代码)

    文章目录 1. 什么是BERT 2. 从Word Embedding到Bert模型的发展 2.1 图像的预训练 2.2 Word Embedding 2.3 ELMO 2.4 GPT 2.5 BERT ...

  7. Pytorch——BERT 预训练模型及文本分类(情感分类)

    BERT 预训练模型及文本分类 介绍 如果你关注自然语言处理技术的发展,那你一定听说过 BERT,它的诞生对自然语言处理领域具有着里程碑式的意义.本次试验将介绍 BERT 的模型结构,以及将其应用于文 ...

  8. 手把手教 | 使用Bert预训练模型文本分类(内附源码)

    作者:GjZero 标签:Bert, 中文分类, 句子向量 本文约1500字,建议阅读8分钟. 本文从实践入手,带领大家进行Bert的中文文本分类和作为句子向量进行使用的教程. Bert介绍 Bert ...

  9. BERT预训练模型系列总结

    BERT预训练模型系列总结 文章目录 BERT预训练模型系列总结 BERT模型 BERT模型的输入输出 BERT模型的预训练任务 BERT模型的下游任务 ROBERTa模型 ALBERT模型 MacB ...

最新文章

  1. 阿里巴巴开源项目nginx_concat_module企业部署实例
  2. 《系统集成项目管理工程师》必背100个知识点-08项目可行性研究内容
  3. Qt QWidget实现开关控件SwithButton(SlipButton)
  4. shell 基本知识
  5. 利用反射,批量启动WCF服务
  6. 命令行开发、编译、打包Android应用程序
  7. 探秘ReSharper 8新功能——XAML编辑
  8. 使用php下载的文件打不开,自己用着没问题,客户用就不行?
  9. 我经常逛的技术网站,个个经典
  10. 编码人员和美工的配合问题
  11. 如何快速查看Oracle的安装目录
  12. php 腾讯短信接口api,腾讯云短信发送功能API-PHP接入
  13. python一维列表变二维列表_使用Python轻松应对一维表与二维表相互转换
  14. RobotFramework set global/suite/test variable
  15. 无需代码,极简5步大屏可视化教程,3分钟就能轻松做出酷炫报表
  16. LabVIEW使用两三年感触
  17. linux dns劫持转发,linux的dns被劫持(解决方案)
  18. 少儿python编程课程大纲_1.Python编程-课程教学大纲.doc
  19. 软件测试之Web测试
  20. 计算机毕业设计 SSM在线音乐网站设计与实现(源码+论文)

热门文章

  1. Hermit间谍软件“入侵”Android和iOS,你的手机还安全吗?
  2. JAVA练习 ——火车
  3. 基于opencv视觉库,通过numpy进行像素矩阵处理,压缩图片、做像素图
  4. 华为交换机vlan配置举例_华为S5700系列配置实例
  5. Linux任务计划详解(crontab、at)
  6. oracle CTE
  7. 我爱背单词 crucial 030
  8. js点击下拉菜单申请a3_js下拉菜单语言选项简单实现
  9. 利用FME自动绘制等高线
  10. 数学(1)初一上学期数学笔记