【2025 夏日精選-4】解析文字的分詞器-Tokenizer

更新於 發佈於 閱讀時間約 7 分鐘
上一篇講了「分詞」的概念,眾所周知,概念講完就是要投入實戰!

【2025 夏日精選-3】要讓電腦看得懂,第一步要先分詞

Tokenizer

是 Hugging Face 貼心準備的工具包,歸屬在 Transformers 中,事不宜遲我們就直接從實作中學吧

AutoTokenizer

from transformers import AutoTokenizer

string = "All you need in this life is ignorance and confidence, and then success is sure."
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
token = tokenizer(string, padding=True, truncation=True)

print(token)
# {'input_ids': [101, 1398, 1128, 1444, 1107, 1142, 1297, 1110, 21326, 1105, 6595, 117, 1105, 1173, 2244, 1110, 1612, 119, 102],
# 'token_type_ids': [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]}​

我相信第一、三行應該不用多解釋了~我們就直接從第五行開始!

    • 第五行:AutoTokenizer.from_pretrained() 會自動選用與模型相對應的 tokenizer 並從 Hugging Face 模型庫下載(這裡用的是 WordPiece tokenizer),括號中填入模型名稱(bert-base-cased 是會區分大小寫的 BERT 模型)
    • 第六行:用剛剛選的 tokenizer 進行分詞
      • padding=True:用 0 補齊到預設批次中最大輸入的長度(這裡的範例是單句,會保留原長度,不會補 0),請看底下*註一範例
      • truncation=True:若字串超過模型最大長度(BERT 是 512),則會截斷(本範例其實用不到)
    • 第八行:執行結果會輸出一個字典,主要由三個部分組成:
      • input_ids:將句子中的每個子詞轉換成 BERT 詞彙表中的對應編號,眼尖的朋友會發現,頭跟尾分別是 101102,這些就是所謂的「Special Token*我有將這部分單獨整理在下面
      • token_type_ids:區分句子屬於哪一句,通常用於問答、連續對話,BERT 模型在預訓練過程中就利用了兩個句子來進行「下一句預測(Next Sentence Prediction, NSP)」的訓練,所以預設輸出 token_type_ids。單句的話一律都顯示 0
      • attention_mask:1 表示為有效 token;0 表示 padding(本範例沒有 padding 所以都是 1)
執行結果

執行結果


raw-image

Special Token

  • Token-Token ID ​:說明
  • [PAD]-0:就是上面提到的 padding。模型會忽略這些(attention_mask = 0
  • [UNK]-100:Unknown Token,詞彙表中找不到的字會顯示
  • [CLS]-101:句子開頭的 special token,用來提取整句表示(classification 任務)
  • [SEP]-102:分隔句子 A 與句子 B;代表一單句的結尾
  • [MASK]-103:在 BERT 預訓練階段用於遮蔽字詞以進行預測(Masked Language Modeling)

*註一範例

from transformers import AutoTokenizer

str1 = "I have no idea."
str2 = ["I have no idea.", "I do not have any idea."]

​tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
token1 = tokenizer(str1, padding=True, truncation=True)
token2 = tokenizer(str2, padding=True, truncation=True)

print(token1) # {'input_ids': [101, 146, 1138, 1185, 1911, 119, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1]}
print(token2) # {'input_ids': [[101, 146, 1138, 1185, 1911, 119, 102, 0, 0], [101, 146, 1202, 1136, 1138, 1251, 1911, 119, 102]], 'token_type_ids': [[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, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1]]}

第十行 token2 的 input_ids 中,第一個 list 的後面多了兩個 0,而剛好跟後面那個 list 一樣是 9 個值,沒錯,padding=True 就是用 0 把長短不一的輸入變得一樣長。看到後面輸出的 attention_mask 也是有補 0,代表那東西不需要理他

而這樣你就知道為什麼 token1 不需要補 0 了,因為他壓根就只有一句:)


如果想要試試中文,可以用 bert-base-chinese 這個模型喔~

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

留言
avatar-img
留言分享你的想法!
avatar-img
の倉的程式小天地
6會員
32內容數
熱愛做志工的大學生 誤打誤撞跑去讀資管系 既然來到了資管系,那就學習新技能來幫助他人
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
2025/07/09
雖然上一篇還在吐槽,這個時代學習新知識會跑去找 ChatGPT,但不得不說生成式 AI 是真香,或者更精確地說「大型語言模型(LLM, Large Language Model)」(以下簡稱LLM),有用過的朋友應該都知道他的優點,這篇就先講講 AI 界的 Github:Hugging Face 吧
Thumbnail
2025/07/09
雖然上一篇還在吐槽,這個時代學習新知識會跑去找 ChatGPT,但不得不說生成式 AI 是真香,或者更精確地說「大型語言模型(LLM, Large Language Model)」(以下簡稱LLM),有用過的朋友應該都知道他的優點,這篇就先講講 AI 界的 Github:Hugging Face 吧
Thumbnail
看更多
你可能也想看
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Decoder
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Decoder
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
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
語言模型與文字表示以不同的方式來分析自然語言的詞語分佈及語意關係。本文章簡要介紹了語言模型、Word2vec、FastText、GloVe和Transformer等技術,並提供了實際的應用參考點,幫助讀者深入理解自然語言處理的技術。
Thumbnail
語言模型與文字表示以不同的方式來分析自然語言的詞語分佈及語意關係。本文章簡要介紹了語言模型、Word2vec、FastText、GloVe和Transformer等技術,並提供了實際的應用參考點,幫助讀者深入理解自然語言處理的技術。
Thumbnail
Emojiton是一個能將文字轉化為表情符號的AI工具,將幫助你解決文案表情符號的挑選困擾,讓你的文案更加生動。立刻到Emojiton網站使用看看,輸入想要的文字,它就會自動推薦Emoji給你使用了。立刻收藏、追蹤、分享,學習更多關於個人品牌建立和AI工具的教學!
Thumbnail
Emojiton是一個能將文字轉化為表情符號的AI工具,將幫助你解決文案表情符號的挑選困擾,讓你的文案更加生動。立刻到Emojiton網站使用看看,輸入想要的文字,它就會自動推薦Emoji給你使用了。立刻收藏、追蹤、分享,學習更多關於個人品牌建立和AI工具的教學!
Thumbnail
我們在前面已經分別討論了敘事句、有無句、判斷句、表態句的各種定義與特性,本章會把這些特性統整起來,並且提供大家一些快速判斷的方法,希望對大家的考試有所幫助喔!
Thumbnail
我們在前面已經分別討論了敘事句、有無句、判斷句、表態句的各種定義與特性,本章會把這些特性統整起來,並且提供大家一些快速判斷的方法,希望對大家的考試有所幫助喔!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News