Karpathy Transformer Tokeinzer
Let's build the GPT Tokenizer
Brief Summary
- chars to vector (oneshot)
- words to vector
- Unicode code to vector
- too big (149813)
- UTF8 - most common used
- papper MegaByte: put sth like byte pair inside net
- Still too big
- Byte pair encoding
- aaabdaaabac
- ZabdZabac (Z=aa)
- ZYdZYac (Y=ab, Z=aa)
- XdXac (X=ZY, Y=ab, Z=aa)
Code ref in video lesson:
- GPT-2 Tokenizer
- Kapathy Basic Tokenizer
- self.merges: (a, a) => Z, (a, b) => Y, ...
- self.vocab: XdXac => aaabdaaabac
Some other info
在深度学习中,常用的词元化(tokenization)方法包括以下几种:
- 空格分词(Whitespace Tokenization):将文本按照空格进行分割,将每个分割后的词作为一个词元。例如,"Hello world!"会被分割为[“Hello”, “world!”]。
- 分词器(Tokenizer):使用专门的分词器工具,如NLTK(Natural Language Toolkit)或spaCy,在文本中识别和分割单词。这些分词器可以处理更复杂的分割规则,例如处理标点符号、缩写词等。
- n-gram分词:将文本切分为连续的n个词的组合,这些组合称为n-gram。常见的是二元(bigram)和三元(trigram)分词。例如,"Hello world!"的bigram分词为[“Hello world”, “world!”]。
- 字符级别分词(Character-level Tokenization):将文本按照字符进行分割,将每个字符作为一个词元。这种方法对于处理字符级别的任务(如拼写检查、机器翻译等)很有用。
- 子词(Subword)分词:将单词切分为更小的单元,如词根、前缀或后缀等。这种方法可以处理未登录词(out-of-vocabulary)问题,并且对于具有复杂形态的语言(如德语、芬兰语)也很有效。常见的子词分词算法有Byte-Pair Encoding(BPE)和SentencePiece。 这些方法的选择取决于特定的任务和语言,不同的词元化方法可能适用于不同的场景。在使用深度学习进行文本处理时,需要根据具体情况选择合适的词元化方法。