【2025 夏日精選-4.5】解析文字的分詞器-Tokenizer (補)

更新於 發佈於 閱讀時間約 5 分鐘
上一篇只講了 Tokenizer 最快的用法,但仔細想想還是寫得再詳細一點好了

昨天的 tokenizer() 可以將一串句子變成電腦看得懂的編碼,但他其實包含三個動作

  1. 將句子拆分成一個一個字詞
  2. 將字詞轉換成編碼
  3. 添加 Special Token

這篇就一步一步慢慢走,解釋一下 tokenizer 底下的一些方法,也來試試上一篇底下提過的中文模型 bert-base-chinese

from transformers import AutoTokenizer

string = "臣本布衣,躬耕於南陽,苟全性命於亂世,不求聞達于諸侯。"
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")

將句子拆分成字詞:.tokenize()

word = tokenizer.tokenize(string)
print(word)
# ['臣', '本', '布', '衣', ',', '躬', '耕', '於', '南', '陽', ',', '苟', '全', '性', '命', '於', '亂', '世', ',', '不', '求', '聞', '達', '于', '諸', '侯', '。']

插播一下,如果用的是英文,會發現模型的分詞器不是單純靠 空格 去區分每個詞,像transformer就會分為 transform##er,這個分詞法稱為 Subword Tokenization有興趣的朋友可以看這一篇,我覺得解釋得很詳細

將字詞轉換成編碼:.convert_tokens_to_ids()

id = tokenizer.convert_tokens_to_ids(word)
print(id)
# [5628, 3315, 2357, 6132, 8024, 6717, 5449, 3176, 1298, 7382, 8024, 5732, 1059, 2595, 1462, 3176, 748, 686, 8024, 679, 3724, 5472, 6888, 754, 6328, 908, 511]

會發現他只是很單純的把每個字轉成對應的編碼,並沒有標示句子開頭的 [CLS] 跟結尾的 [SEP],所以要用另外一個方法把這些 Special Token 加進去

添加 Special Token:.prepare_for_model()

token = tokenizer.prepare_for_model(id)
print(token)
# {'input_ids': [101, 5628, 3315, 2357, 6132, 8024, 6717, 5449, 3176, 1298, 7382, 8024, 5732, 1059, 2595, 1462, 3176, 748, 686, 8024, 679, 3724, 5472, 6888, 754, 6328, 908, 511, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}​

你會發現跟昨天的輸出結果一模一樣,因為他就是將編碼串轉換成適合輸入到模型的樣子

解碼還原:.decode()

orignal = tokenizer.decode(token['input_ids'])
print(orignal)
# [CLS] 臣 本 布 衣 , 躬 耕 於 南 陽 , 苟 全 性 命 於 亂 世 , 不 求 聞 達 于 諸 侯 。 [SEP]

其實只要做到上一步就好了,畢竟沒有必要好不容易編碼完,又再解碼回去

這邊要注意的是,因為上一步輸出的是字典,所以要指定 input_ids 這個 key 的 value

總整理

  • .tokenize():將句子拆分成字詞
  • .convert_tokens_to_ids():將字詞轉換成編碼
  • .prepare_for_model():添加 Special Token
  • 上一篇用到的 tokenizer() 就是以上三個方法的集合體
  • .decode():解碼還原

喜歡我的內容也請幫我按個讚喔~非常感謝🥹

留言
avatar-img
留言分享你的想法!
avatar-img
の倉的程式小天地
6會員
32內容數
熱愛做志工的大學生 誤打誤撞跑去讀資管系 既然來到了資管系,那就學習新技能來幫助他人
2025/07/13
今天要講的是 Hugging Face 貼心準備的工具包,歸屬在 Transformers 中的 Tokenizer (分詞器)
Thumbnail
2025/07/13
今天要講的是 Hugging Face 貼心準備的工具包,歸屬在 Transformers 中的 Tokenizer (分詞器)
Thumbnail
2025/07/13
電腦沒辦法理解人類的語言,所以需要先將文字轉換成電腦能讀懂的數字,而我們不可能把一整句話直接編碼,例如:"I love you."=1、"I love him."=2...,這樣編碼到最後會變成天文數字,所以在那之前我們需要先將一句話分成最小單位,也就是「詞」
Thumbnail
2025/07/13
電腦沒辦法理解人類的語言,所以需要先將文字轉換成電腦能讀懂的數字,而我們不可能把一整句話直接編碼,例如:"I love you."=1、"I love him."=2...,這樣編碼到最後會變成天文數字,所以在那之前我們需要先將一句話分成最小單位,也就是「詞」
Thumbnail
2025/07/09
上一篇有提到過「寫一行就能使用模型的封裝工具包 pipeline」,至於為什麼他可以寫一行就解決呢?真的有那麼神嗎?
Thumbnail
2025/07/09
上一篇有提到過「寫一行就能使用模型的封裝工具包 pipeline」,至於為什麼他可以寫一行就解決呢?真的有那麼神嗎?
Thumbnail
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們在AI說書 - 從0開始 - 42中,見識了 Tokenizer 做的事情了,以下來羅列幾個要點: 它將原始文字轉成小寫 有可能將原始文字再進行切割 通常 T
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們在AI說書 - 從0開始 - 42中,見識了 Tokenizer 做的事情了,以下來羅列幾個要點: 它將原始文字轉成小寫 有可能將原始文字再進行切割 通常 T
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformer 中的 Attention 機制是 'Word-to-Word' 操作,抑或是 'Token-to-Token' 操作,白話來講就是:「對於句子中
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformer 中的 Attention 機制是 'Word-to-Word' 操作,抑或是 'Token-to-Token' 操作,白話來講就是:「對於句子中
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
上篇我們簡單的了解了 TTS 想要達到的目標,但是對於訓練資料的處理、網路架構、損失函數、輸出分析等考慮到篇幅尚未解釋清楚,這篇將針對訓練資料處理中的文字部分進行詳細說明,讓我們開始吧。
Thumbnail
上篇我們簡單的了解了 TTS 想要達到的目標,但是對於訓練資料的處理、網路架構、損失函數、輸出分析等考慮到篇幅尚未解釋清楚,這篇將針對訓練資料處理中的文字部分進行詳細說明,讓我們開始吧。
Thumbnail
透過適當的語言和文字表達,人們可以溝通訊息和態度。轉折詞的運用和標點符號的使用會影響溝通的準確性和情緒表達。
Thumbnail
透過適當的語言和文字表達,人們可以溝通訊息和態度。轉折詞的運用和標點符號的使用會影響溝通的準確性和情緒表達。
Thumbnail
這個系列的文章希望讓大家能夠學習一些語言學的概念,並且利用它們更有效率地學習各種語言。在文法篇的部分,希望大家瞭解有關語言使用的規則,讓大家能夠更輕鬆地去學習一個語言。前面已經介紹語言的基本語序、修飾語序,瞭解每個語言都又不同的排列規則後,我們就可以開始學習一個語言要如何表達一個完整句子。
Thumbnail
這個系列的文章希望讓大家能夠學習一些語言學的概念,並且利用它們更有效率地學習各種語言。在文法篇的部分,希望大家瞭解有關語言使用的規則,讓大家能夠更輕鬆地去學習一個語言。前面已經介紹語言的基本語序、修飾語序,瞭解每個語言都又不同的排列規則後,我們就可以開始學習一個語言要如何表達一個完整句子。
Thumbnail
Emojiton是一個能將文字轉化為表情符號的AI工具,將幫助你解決文案表情符號的挑選困擾,讓你的文案更加生動。立刻到Emojiton網站使用看看,輸入想要的文字,它就會自動推薦Emoji給你使用了。立刻收藏、追蹤、分享,學習更多關於個人品牌建立和AI工具的教學!
Thumbnail
Emojiton是一個能將文字轉化為表情符號的AI工具,將幫助你解決文案表情符號的挑選困擾,讓你的文案更加生動。立刻到Emojiton網站使用看看,輸入想要的文字,它就會自動推薦Emoji給你使用了。立刻收藏、追蹤、分享,學習更多關於個人品牌建立和AI工具的教學!
Thumbnail
這個系列文章希望能走出語言研究的學術象牙塔,用簡單口語的文字介紹當今語言學家對於不同語言的觀察,並將這些歸納好的規則運用在語言的學習。
Thumbnail
這個系列文章希望能走出語言研究的學術象牙塔,用簡單口語的文字介紹當今語言學家對於不同語言的觀察,並將這些歸納好的規則運用在語言的學習。
Thumbnail
我們在前面已經分別討論了敘事句、有無句、判斷句、表態句的各種定義與特性,本章會把這些特性統整起來,並且提供大家一些快速判斷的方法,希望對大家的考試有所幫助喔!
Thumbnail
我們在前面已經分別討論了敘事句、有無句、判斷句、表態句的各種定義與特性,本章會把這些特性統整起來,並且提供大家一些快速判斷的方法,希望對大家的考試有所幫助喔!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News