bert生成句子向量

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

1. bert中文语料库下载

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作文本分类

2. 如何使用bert的词向量

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

3.直接使用bert源码生成词向量

1.下载bert项目

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

其中extract_features.py文件为bert句向量生成文件
在这里插入图片描述

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内存比较小,可以减小这个值,节省存储

输出结果为(None,768)

{"linex_index": 1, "features": [{"token": "[CLS]", "layers": [{"index": -1, "values": [-0.2844, 0.450896, 0.285645, 0.421341, 0.411053, ...
BERT(Bidirectional Encoder Representations from Transformers)是一种预训练模型,用于从输入文本中生成密集的表示,这些表示可以捕捉到句子级别的语义信息。通过BERT抽取句子向量,你可以获得每个句子的固定长度向量,这些向量能够反映句子的语法和语义结构[^1]。 具体操作步骤如下: 1. **使用`extract_features.py`脚本**:这个脚本通常会调用预训练的BERT模型,如Hugging Face的transformers库[^2]。它接受参数,如要处理的文件路径、模型名称和输出文件名。 ```python # (假设脚本中) from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') def get_sentence_vector(sentence): inputs = tokenizer.encode_plus(sentence, add_special_tokens=True, return_tensors='pt') with torch.no_grad(): outputs = model(**inputs) sentence_vector = outputs.last_hidden_state.mean(dim=1).numpy() return sentence_vector # 获取句子向量 sentence = "今天记一次采用BERT抽取句子向量的实战过程" sentence_vector = get_sentence_vector(sentence) ``` 2. **利用`Bert-as-server`服务**:如果你不想自己运行BERT模型,还可以使用`Bert-as-server`这样的工具,它允许你在服务器上运行BERT并远程请求句子编码。安装好服务后,客户端可以发送HTTP请求来获取指定句子向量。 - 安装:`pip install bert-serving-server bert-serving-client` - 启动服务:`bert-serving-start -model_dir /path/to/your/bert/model -num_worker=4` - 使用客户端:`curl -X POST -d '{"text": "你的句子"}' http://localhost:5555/predictions` 通过这种方式,你就可以获得每个句子的特征向量,它们可以用作许多自然语言处理任务的基础表示,比如情感分析、文本分类等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值