Appearance
Tokenizer
为什么需要tokenizer
- 文本是人类的自然语言,而模型只能处理数字
- 文本需要被转换为数字序列,才能被模型处理
- 这个转换过程被称为tokenization
- 有多种不同的tokenizerization方法,如word tokenization、character tokenization等
work-based tokenizer
可以将语句按照单词来划分,“hello world”会被划分成“hello”和“world”两个单词,”你好,老师“被划分为“你好”、“,”、“老师”三个单词(是的,中文和英文在”单词“这个概念上是不同的)。
这种划分方式的问题:
- 单词太多了!
- 很多近义词,英文的“dogs”和“dog”是两个单词;中文的“狗”和“犬”也是两个单词。
character-based tokenizer
既然单词太多了,可以考虑按照字符来划分,中文中可以就是“字”。 “hello world”会被划分成“h”、“e”、“l”、“l”、“o”、“ “、“w”、“o”、“r”、“l”、“d”等12个字符。 “你好”会被划分成“你”、“好”两个字。
但是这种方法颇有些“形而上”的感觉。英文中,字符组成单词后才有意义,但是中文中,字本身就有意义。而且这么多语言,怎么统一呢?
sub-word tokenizer
这么看来,可能需要脱离每个语言的语法限制了,一个语句的含义十分丰富,但是可以对语句进行拆分,拆到最小有意义的单位,这就是sub word。
还是先以英文为例,“tokenization”会被划分成“token”、“ization”两个单词。这是符合英语的单词构成语法规则的。中文”明天天气是晴天“会被划分成“明天”、“天气”、“是”、“晴天”四个sub word,显然”明天“不会拆分成“明”、“天”两个字。
当然,还有其他分词方法。这里仅做基础的了解。