在大模型的語境中,token是一個基本的數據處理單元,它可以是一個單詞、一個字符,或者是一個子詞等,以下從其定義、作用及常見的token劃分方式等方面進行具體介紹:
![]()
定義:簡單來說,token是對文本進行分割后的最小單元。大模型在處理文本時,無法直接處理人類自然語言中的文字,需要將文本拆分成一個個的token,以便模型能夠理解和處理。例如,對于句子 “歡迎關注訂閱招文袋公眾號”,可以將其拆分成多個token:“歡迎”“關注”“訂閱”“招文袋”“公眾號”。
作用將文本數字化:把自然語言文本轉化為模型可以處理的數字向量形式。每個token會被映射為一個唯一的數字編號,模型通過處理這些數字來學習語言的模式和規律。如在一個簡單的詞匯表中,“歡迎”可能被編碼為1,“關注”編碼為2,“訂閱”編碼為3,“招文袋”編碼為4,“公眾號”編碼為5。這樣句子 “歡迎關注訂閱招文袋公眾號”就可以表示為 [1, 2, 3,4,5],便于模型進行計算和分析。
控制模型輸入輸出長度:模型處理的token數量是有限制的,通過對文本進行token化,可以將輸入文本截斷或補齊到合適的長度,使模型能夠有效地處理。例如,某模型的輸入長度限制為512個token,對于較長的文本,就需要截斷多余部分;對于較短的文本,可能需要添加特殊的填充token,使其達到規定長度。
提高語言理解精度:將文本細分為token后,模型可以更精確地捕捉語言中的語義和語法信息。比如,對于一些具有多種含義的詞,通過上下文的其他 token,模型能更準確地判斷其在具體語境中的意思。
常見的token劃分方式單詞級別:將文本按照空格等分隔符拆分成多個單獨的詞匯作為token。如 “加入招文袋知識星球一起學習AI” 會被拆分為 “加入”“招文袋”“知識星球”“一起” “學習”“AI”六個token。這種方式簡單直接,但對于一些復雜的語言現象,如復合詞、詞的變形等處理可能不夠精細。
字符級別:把文本中的每個字符都作為一個token。例如,“關注招文袋” 會被拆分為“關”“注”“招”“文”“袋”五個token。字符級別的token化可以處理任何未知的詞匯,但會導致輸入序列過長,增加模型的計算量和訓練難度。
子詞級別:結合了單詞級別和字符級別的優點,將單詞拆分成更小的子詞單元。例如,“招文袋知識星球” 可能被拆分成 “招文”“袋”“知識”“星球”四個token。這種方式既能處理一些罕見詞和復合詞,又能保持相對合理的token數量和序列長度。
![]()
如何計算token的數量?
計算token數量的方法會因tokenization的方式不同而有所差異,常見的有基于空格或標點符號的簡單統計、基于預訓練模型的工具包統計、基于字符的統計等方法,以下是具體介紹:
基于空格和標點符號的簡單統計
對于以單詞為token的情況,可以通過統計文本中的空格和標點符號來大致計算token數量。例如,對于文本 “知識星球名:招文袋 星球號:75873546。”,可以通過計算空格和標點符號的數量來確定 token 的數量。一般來說,空格將單個詞匯分隔開,標點符號也可以作為分隔的標志。在這個例子中,有四個token,分別是“知識星球名”“招文袋”“星球號”“75873546”。不過這種方法對于一些復雜的語言現象可能會不準確。
基于預訓練模型的工具包統計
使用Hugging Face(一個專注于自然語言處理的開源社區)的tokenizers庫:許多預訓練語言模型都有相應的tokenizer工具,以Hugging Face的transformers庫為例,它提供了各種預訓練模型的tokenizer,可以方便地對文本進行token化并計算token數量。如對于BERT模型(一種語言表示模型),可以使用BertTokenizer(對文本進行分詞和編碼的工具)來處理文本。
使用AllenNLP(一個自然語言處理的模型框架)的tokenizers:AllenNLP也提供了豐富的自然語言處理工具,包括tokenizer。可以使用SpacyTokenizer或WordTokenizer等對文本進行處理和 token 數量計算。
基于字符的統計
如果是基于字符的tokenization,那么直接統計文本中的字符數量即可。例如,對于文本 “知識星球名:招文袋”,字符數量為8,即token數量為8。但需要注意一些特殊情況,如是否將空格、標點符號等也算作token。如果要將空格也算作token,那么 “知識星球名:招文袋” 的token數量就是9。
基于特定規則的統計
對于一些特定的領域或任務,可能會有自定義的token定義和計算規則。例如,在處理代碼時,可以將每個關鍵字、變量名、運算符等作為一個 token(小白不用處理代碼,了解即可)。
![]()
最后,簡單直白總結如下:
- token定義:大語言模型接收到文字后,分詞器將其切成的小塊就是token,它可以是單個漢字、詞語、短語、標點符號、單詞或詞綴等。大模型輸出文字時也是逐個token生成,所以看起來像打字。
- token存在的原因:類比人腦處理信息方式,為提高效率、節省腦力,人腦常把有意義的詞語或短語作為整體對待,人工智能也借鑒了這一思路,通過分詞器把大段文字拆解成大小合適的token。
- 分詞器分詞方法:分詞器通過統計大量文字,把經常一起出現的組合(如“招文袋” )、單個常用字(如“請”)、常見字母組合(如“ing” )、標點符號等,分別打包成token,配上編號,形成龐大的token表。大模型輸入和輸出時,處理的是token編號,再由分詞器轉換為人類可看懂的內容。
- token的作用及計費方式:token是大模型理解和生成文字的基礎,大模型通過計算token之間的關系推算下一個可能的token。幾乎所有大模型公司按token數量計費,因為其對應背后的計算量。
這里有些AI大模型說是免費,其實是免費一部分token,超過后就要收費。比如,有平臺就出了政策,說新注冊或者拉新會員注冊就免費送你50萬token。看著數字好像很多都用不完的樣子,但其實如果天天用的話,幾天也就用沒了。
- 不同模型分詞差異:不同模型分詞結果不同,如“請關注訂閱招文袋公眾號”在DeepSeek和其他模型里分詞結果不同,所以分詞的數量也就不同了。此外,token在人工智能領域外也有出現,但含義不同。
就說到這里,如果耐心看完,也就對token的概念基本清晰無誤了。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.