赞
踩
了解自然语言处理或者听说过大语言模型的同学都听过,token。一般来说,它代表的是语言中不可再分的最小单元。我们人类的语言不仅有文字,还有语音。针对文字、语音来说,它们都各自有不同的划分token的方法。本节将尽可能详细的介绍它们。
文本,就是我们人类的文字。不同的国家、民族、地区使用不同的文字,不同的模型使用不同的切分这些文字的方法。所以有时候经常容易被闹晕乎。先介绍流行的用的人最多的划分token的方法。
第一种是phoneme,表示一个发音的音标,或发音的基本单位。
Lexicon:单词到音标的转换表。cat-->K AE T.phoneme是以前一种的常见选择。
第二种是Grapherne:最小的书写单位。英文中一个单词就是一个最小单位。但在单词之间通常还要加上空格“_”。
one_punch_man:这句话里N=13。V=26+。中文的最小单位可以用一个一个字来表示。中文不需要加入空白。
第三种是word(即词汇).
one punch man按照这种方式的话就有3个token。“一拳” ”打死” ”你”。就有3个词汇。用词汇来表示token的话,太多太多了。无法穷举出所有的词。
第四种是Morpheme:表达意思的最小单位。
unbreakable,可拆解为un, break, able.
最后一种是Bytes. 每一个符号都可以用UTF-8表示。
什么字,符号都可以用UTF-8表示。太大了。 V总是256.
通常大家都用Grapheme和phoneme.
官方介绍如何分词:
-------------------------------我是翻译线-----------------------------------------------------------------------------------
OpenAI 的大型语言模型(有时称为 GPT)使用tokens处理文本,tokens是一组文本中常见的字符序列。这些模型学习理解这些标记之间的统计关系,并擅长生成标记序列中的下一个token。
您可以使用下面的工具来了解语言模型如何对一段文本进行标记,以及该文本中的标记总数。
值得注意的是,确切的标记化过程因模型而异。GPT-3.5 和 GPT-4 等较新的模型使用与以前的模型不同的标记器,并且将为相同的输入文本生成不同的tokens。
-------------------------------我是翻译线-----------------------------------------------------------------------------------
我在Openai官网提供的版本中尝试了一下,看他们是如何分词的:
输入(注释:引号表示的是我输入的内容,我实际上并没有输入引号):“我是中国西北人”
Chatgpt3.5&Chatgpt4的分词器输出:“我”,“是”,”中国“,”西“,”北“,”人“。对应的id为“【[37046, 21043, 59795, 61786, 49409, 17792]】”。也就是说,在这个模型中,“我”是由37046表示的,依此类推。模型最后输出的就是这些数字,然后再拿这些数字去找对应的是哪个词。
人家输出的时候没有引号。再次提醒。
这两个模型都用的是谷歌的Sentencepiece包来进行分词的。把文本分完词之后,再转换为词表中的id。
后面再继续完善一下这个章节。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。