当前位置:   article > 正文

[一起学BERT](二):BERT快速使用_bert是词嵌入吗

bert是词嵌入吗

快速使用

基于pytorch1.4

BERT模型本质是一种词嵌入模型,也是句子嵌入模型,输入的最大长度是512

BERT模型把离散的单词变成了空间中连续的向量,即把一个单词变成向量

Bert词向量模型的好处:

  • 对比word2vec,包含了语境(context)信息
  • 对比ELMo,速度快,并行程度高
  • 对比GPT模型,包含双向(bidirectional)语境信息
  • 在各类NLP任务上效果出众,例如文本分类、问答、词性标注、实体识别等等
  • 有预训练模型,只需要微调即可
#!/usr/bin/env python
# coding: utf-8


from transformers import BertTokenizer,BertModel
# BertTokenizer:分词工具
# BertModel:Bert模型
tokenizer = BertTokenizer.from_pretrained("bert-base-chinese")
model = BertModel.from_pretrained("bert-base-chinese")



inputs = tokenizer('让我们来试试Bert模型吧',return_tensors='pt')  # 指定的类型必须是pytorch
# 如果是两个句子前面就写两句
#inputs = tokenizer('让我们来试试Bert模型吧','Bert模型很厉害吧',return_tensors='pt')
print(inputs)
'''
{'input_ids': tensor([[ 101, 6375, 2769,  812, 3341, 6407, 6407,  100, 3563, 1798, 1416,  102]]), 'token_type_ids': tensor([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]), 'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])}
'''


tokenizer.decode(inputs['input_ids'].data.cpu().numpy().reshape(-1))  # UNK表示Unknow,句首自动加[CLS],句尾自动加[SEP]
''''[CLS] 让 我 们 来 试 试 [UNK] 模 型 吧 [SEP]''''


outputs = model(**inputs)
sequence_outputs,pooled_outputs = outputs

# token embedding,BERT词向量
outputs[sequence_outputs].shape  # 12是12个input_ids生成的向量,768是Bert-base模型默认768维度的向量
'''torch.Size([1, 12, 768])'''

# sentence embedding,句子向量
outputs[pooled_outputs].shape
'''torch.Size([1, 768])'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

模型类别

Google提供了预训练的模型(的checkpoint),目前包括英语、汉语和多语言3类模型:

  • BERT-Base, Uncased:12层,768隐藏,12头,110M参数
  • BERT-Large, Uncased:24层,1024个隐藏,16个头,340M参数
  • BERT-Base, Cased:12层,768隐藏,12头,110M参数
  • BERT-Large, Cased:24层,1024个隐藏,16个头,340M参数
  • BERT-Base, Multilingual Cased (New, recommended):104种语言,12层,768隐藏,12头,110M参数
  • BERT-Base, Multilingual Uncased (Orig, not recommended) (不推荐使用,Multilingual Cased代替使用):102种语言,12层,768隐藏,12头,110M参数
  • BERT-Base, Chinese:中文简体和繁体,12层,768隐藏,12头,110M参数

Uncased的意思是在预处理的时候都变成了小写,而cased是保留大小写。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/360683?site
推荐阅读
相关标签
  

闽ICP备14008679号