bert中的tokenization流程.

bert中tokenization运行流程之我见.菜鸟,内容不一定对.

1. validate_case_matches_checkpoint(do_lower_case, init_checkpoint):

该方法用于验证checkpoint和config中的参数do_lower_case是否相匹配的方法.

2. convert_to_unicode(text)

该方法用于判断传入的text的文本类型.其中bytes类型,被解码为utf-8.

3. printable_text(text)

功能同上

4. load_vocab(vocab_file)

创建vocab字典.

5. convert_by_vocab(vocab, items)

用于转换tokens和ids

6. whitespace_tokenize(text)

将text按空格切分为list.相当于将文本按单词切分,形成一个装单词的list.

7. BasicTokenizer(object)

用于对文本进行第一步处理的类, 里面基本上都是预处理文本的方法.其中tokenize方法,返回的结果是经过处理的单词列表.

8. WordpieceTokenizer(object)

对单词进行切分的方法.如果单词长度超过200, 就标记为unk. 对单词切分时采用贪心算法.[和普通贪心算法可能不太一样] 切分单词的大致结果为示例: unaffable = [‘un’, ‘##aff’, ‘##able’] 这三个词都必须在vocab中才能被切成这样子.切分顺序是从后往前每次切1位,其中un是最先被加入list的单词.

这里大致意思是比如会把tokenization经过切分,变为[token,##ization],bert字典中也许并没有tokenization这个词.这么做的目的,不清楚…

9. FullTokenizer(object)

整套流程,把7. 8合并走一遍.

10. _is_whitespace(char)

判断是不是空格

11. _is_control(char)

判断是不是 control字符,不知道是什么…

12. _is_punctuation(char)

判断是不是标点符号.

tokenization的主要思路,就是相当于分词, 把一个输入的文本, 按7中步骤清洗,8中步骤分词, 然后,将text转换成了一个被分词后的list.用于接下来的步骤.

你可能感兴趣的:(bert中的tokenization流程.)