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基本流程如下:
- 定义tokenization中定义的FullTokenizer类的一个对象,即tokenizer = tokenization.FullTokenizer
- 将原始文本变成一个个tokens,即tokens = tokenizer.tokenize(raw_text)
- 将生成的每一组tokens都裁剪到max_seq_length长度
- 在正确的地方加上[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对输入的处理,主要包含三个步骤:
- Text normalization(文本归一化):将所有的空白字符转换为空格,并且小写。E.g.,
John Johanson's, → john johanson's
- Punctuation splitting