赞
踩
基于pytorch1.4
BERT模型本质是一种词嵌入模型,也是句子嵌入模型,输入的最大长度是512
BERT模型把离散的单词变成了空间中连续的向量,即把一个单词变成向量
Bert词向量模型的好处:
#!/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])'''
Google提供了预训练的模型(的checkpoint),目前包括英语、汉语和多语言3类模型:
Uncased的意思是在预处理的时候都变成了小写,而cased是保留大小写。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。