美文网首页
bert生成句向量

bert生成句向量

作者: 飘涯 | 来源:发表于2019-07-10 15:12 被阅读0次

BERT本质上是一个两段式的NLP模型。第一个阶段叫做:Pre-training,跟WordEmbedding类似,利用现有无标记的语料训练一个语言模型。第二个阶段叫做:Fine-tuning,利用预训练好的语言模型,完成具体的NLP下游任务。

Google已经投入了大规模的语料和昂贵的机器帮我们完成了Pre-training过程
bert中文模型链接:https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip

这里分两步介绍bert的使用:第一怎么使用bert的词向量,第二如何fine-tuning做其他任务。

  • 如何使用bert的词向量

  • 如何用fine-tuning作文本分类

如何使用bert的词向量

传统的句向量采用词向量的方式求加权平均,无法解决一词多义对句子的影响,bert向量由于包含了上下文信息,从理论来看要比传统方法好。

方法一:直接生成词向量

1.下载bert项目
下载地址:https://github.com/google-research/bert

其中extract_features.py文件为bert句向量生成文件

image.png

2.下载中文预训练模型
下载地址:https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip
3.直接进行句向量特征提取
传入参数

--input_file="./data/input.txt"
--output_file="./data/output.jsonl"
--vocab_file="./chinese_L-12_H-768_A-12/vocab.txt"
--bert_config_file="./chinese_L-12_H-768_A-12/bert_config.json"
--init_checkpoint="./chinese_L-12_H-768_A-12/bert_model.ckpt"
--layers=-2
--max_seq_length=128
--batch_size=8
layers: 是输出那些层的参数,-1就是最后一层,-2是倒数第二层,一次类推
max_seq_length: 是最大句子长度,根据自己的任务配置。如果你的GPU内存比较小,可以减小这个值,节省存储

输出结果如下:

{"linex_index": 1, "features": [{"token": "[CLS]", "layers": [{"index": -1, "values": [-0.2844, 0.450896, 0.285645, 0.421341, 0.411053, ...

方法二:bert-as-service两行代码加载词向量

详细介绍文章:https://zhuanlan.zhihu.com/p/50582974
github地址:https://github.com/hanxiao/bert-as-service
1.安装bert-as-service

pip install bert-serving-server  # server
pip install bert-serving-client  # client, independent of `bert-serving-server`

2.下载中文预训练模型,前面提到过
3.开启服务

bert-serving-start -model_dir D:/数据/实体链接/bert相识度匹配/chinese_L-12_H-768_A-12 -num_worker=1

4.直接加载词向量

from bert_serving.client import BertClient
bc = BertClient()
bc.encode(["今天天气真好","我感冒了"])

输出:

array([[ 0.43153867, -0.22524145,  0.02924719, ..., -0.12929817,
         0.3106631 , -0.1888775 ],
       [ 0.6095807 , -0.2103941 , -0.20782037, ..., -0.24075384,
        -0.25313932, -0.45011818]], dtype=float32)

方法三不用开启servers服务,简单生成句向量

地址:https://github.com/terrifyzhao/bert-utils

代码如下:

from bert.extrac_feature import BertVector
bv = BertVector()
bv.encode(['今天天气不错'])

输出:

[[ 1.21984698e-01  7.84057677e-02 -1.06496774e-01 -3.25891018e-01
   4.94978607e-01 -4.69692767e-01  2.54333645e-01 -8.82656407e-03...

相关文章

  • bert生成句向量

    BERT本质上是一个两段式的NLP模型。第一个阶段叫做:Pre-training,跟WordEmbedding类似...

  • tensorflow.python.framework.erro

    使用Bert生成句向量,使用github上的bert-utils项目使用方式为 报以下信息错误: 看到github...

  • 如何将Bert句向量应用于深度神经网络中

    Bert开源了预训练的中文模型,如果你想直接使用Bert模型生成句子向量(当做一个黑盒),并用于深度学习模型中,本...

  • bert-serving-server搭建bert词向量服务

    1. BERT BERT工具能够快速的得到词向量表示。名称叫做: bert-as-service,只要调用该服务就...

  • 利用Word2vec生成句向量(二)

    在之前的文章《利用Word2vec生成句向量(一)》中,介绍了两种句向量的生成方法,本文将介绍一种号称"简单却具有...

  • 无监督语义相似度匹配之Bert抽取文本特征实战

    今天记一次采用bert抽取句子向量的实战过程,主要是想感受一下bert抽取出来的句子特征向量是否真的具有不错的语义...

  • 命名实体识别中的CRF层

    Bert+CRF 层 Bert把中文文本进行了embedding,得到每个字的表征向量 dense操作得到了每个文...

  • 句子相似度计算

    思路一:先求句向量,然后求余弦相似度 1.求得两个句子的句向量 生成文本词频向量用词频来代替,句子,当然这样做忽略...

  • BERT笔记

    BERT是在OpenAI GPT基础上发展起来的,是一种动态词向量技术。与传统静态词向量不同,动态词向量可以根据具...

  • 比较向量相似度的思考

    背景:当前问答模块思路是通过BERT将用户问题向量化后与收集的问答数据的问题也全部向量化,然后通过比较向量相似度,...

网友评论

      本文标题:bert生成句向量

      本文链接:https://www.haomeiwen.com/subject/hyockctx.html