使用BERT获取中文词向量

本文详细介绍如何利用BERT获取词向量,解决一词多义问题。通过肖涵博士的bert-as-service,介绍环境配置、相关包安装及中文模型下载步骤。演示在PyCharm中调用BERT获取词向量的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BERT其中的一个重要作用是可以生成词向量,它可以解决word2vec中无法解决的一词多义问题。

然而BERT获取词向量的门槛要比word2vec要高得多。笔者在这里介绍一下如何获取BERT的词向量。

笔者在获取BERT词向量的时候用到了肖涵博士的bert-as-service,具体使用方式如下。

环境要求:python版本>=3.5,tensorflow版本>=1.10(笔者使用的是1.12)
相关包的安装:

pip install  bert-serving-server
pip install bert-serving-client

下载训练好的BERT中文模型:
https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip
启动bert-as-service :在cmd窗口进入bert-serving-start.exe所在的文件夹,在该文件路径下输入bert-serving-start -model_dir E:/chinese_L-12_H-768_A-12 -num_worker=2(训练好的中文模型路径,num_worker的数量可以自行选择),如果成功开启则出现以下界面

接着可以在pycharm终端写入以下代码:

from bert_serving.client import BertClient
bc = BertClient()
print(bc.encode(['中国', '美国']))

可得到词向量为(词向量的维度为768):

获取完BERT词向量后就可以结合CNN、RNN等模型来实现自己的任务。在博客写作的过程中参考以下网址:

  • https://www.jianshu.com/p/bafdd927ef02

  • https://www.gaozhengjie.cn/archives/240/

BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的语言模型,通过Transformer架构学习文本的上下文信息。要从BERT模型中获取词向量,通常涉及以下几个步骤: 1. **加载预训练模型**:首先,你需要下载一个预训练好的BERT模型,如Hugging Face的`transformers`库提供了多种版本的BERT模型,例如`BertModel`。 ```python from transformers import BertModel, BertTokenizer model = BertModel.from_pretrained('bert-base-chinese') tokenizer = BertTokenizer.from_pretrained('bert-base-chinese') ``` 2. **分词和编码**:使用`tokenizer`将输入文本分割成词汇,并将其转换为模型可以理解的张量格式。例如,对于一段中文文本: ```python text = "这是BERT的一个例子" inputs = tokenizer(text, padding=True, truncation=True, return_tensors="pt") ``` 3. **前向传播**:通过模型对处理后的输入进行前向计算,得到每个词语的词向量。你可以选择特定层(通常是最后的[CLS]表示的词向量)作为整个句子的特征向量: ```python outputs = model(**inputs) last_hidden_state = outputs.last_hidden_state word_embedding = last_hidden_state[:, 0, :] ``` 4. **词向量提取**:`word_embedding`就是对应于给定文本的词向量。如果你需要每个词的单独向量,可以遍历并收集它们。 注意,由于BERT是一个双向模型,它考虑了词语的前后上下文,这使得获取词向量包含了丰富的语义信息。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值