bert源码学习(一)——tokenization.py&&WordPiece

bert谷歌官方源码地址:https://github.com/google-research/bert

这篇博客主要讲关于tokenization.py文件的源码阅读

 

1. bert—tokenization.py官方文档

首先来看一下bert上tokenization.py的官方文档。

 

对于句子级(或句子对)任务,tokenization.py的使用非常简单,run_classifier.py和extract_features.py中有使用它的例子。句子级任务的tokenization基本流程如下:

  1. 定义tokenization中定义的FullTokenizer类的一个对象,即tokenizer = tokenization.FullTokenizer
  2. 将原始文本变成一个个tokens,即tokens = tokenizer.tokenize(raw_text)
  3. 将生成的每一组tokens都裁剪到max_seq_length长度
  4. 在正确的地方加上[cls]和[sep]标识符

 

词级任务会复杂一些,因为我们需要保持输入文本和输出文本的对应,只有这样才能为输出文本添加正确的labels(since you need to maintain alignment between your input text and output text so that you can project your training labels

在开始详细地描述如何处理词级任务之前,可以先看一下tokenizer对输入的处理,主要包含三个步骤:

  1. Text normalization文本归一化):将所有的空白字符转换为空格,并且小写。E.g., John Johanson's, → john johanson's
  2. Punctuation splitting
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常是由于使用了错误的tokenizer类导致的。在使用HuggingFaceEmbeddings时,你需要使用与模型相对应的tokenizer。如果使用了不兼容的tokenizer,就会出现这个错误。 在BERT模型的情况下,可以使用`BertTokenizer`或`BertTokenizerFast`。但是值得注意的是,这两个类的输入格式不同: - `BertTokenizer`的输入是单个句子或句子对,可以使用`encode`方法将句子转换为输入向量。 - `BertTokenizerFast`的输入是一批句子,需要使用`__call__`方法将句子转换为输入向量。 所以,如果你使用`BertTokenizerFast`类,你需要将句子封装成列表或元组,并将其传递给tokenizer。例如: ```python from transformers import BertTokenizerFast, BertModel from sentence_transformers import SentenceTransformer tokenizer = BertTokenizerFast.from_pretrained('bert-base-cased') model = BertModel.from_pretrained('bert-base-cased') sentences = ['This is an example sentence', 'Each sentence is converted'] input_ids = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt') outputs = model(**input_ids) sentence_transformer_model = SentenceTransformer(modules=[model, tokenizer]) embeddings = sentence_transformer_model.encode(sentences) ``` 在这个例子中,我们使用了`BertTokenizerFast`类,并将句子列表传递给tokenizer进行编码。然后使用编码后的输入向量来计算BERT模型的输出。最后,我们使用SentenceTransformer将句子转换为嵌入向量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值