跳到主要內容

【Hugging Face】Ep.4 文字與模型的轉換器Tokenizer

 

前面我們介紹了「【Hugging Face】Ep.1 平凡人也能玩的起的AI平台」, 我們都知道「詞」是NLP世界中的最小單元, 關於詞的知識歡迎參考:
簡單來說,主要的目的是將文本轉換為模型可以處理的數據, But…, 他主要的任務並不是像jieba…等斷詞器一樣, 而是很單純的扮演文字與模型的橋接器。
經過上述知識的洗禮, 我們對於詞也具有一定的基礎認知, 在「Hugging Face」的平台裡, 處理詞也提供了非常好用的Tokenizer工具, 就讓我們好好的來認識一下唄!

兩種標記技巧

詞(Word-based)
基於「詞」的標記方式會將一段文本進行斷詞, 假設一文本如下:
Jim Henson was a puppeteer
可以被斷詞成:
Jim
Henson
was
a
puppeteer
最基本的方法有「基於空格」、「基於標點符號」…, 目前處理斷詞的框架有「NLTK」、「SpaCy」、「Gensim」等, 不妨親自玩玩看斷詞, 未來Hugging Face的斷詞層若需要抽換成特定領域語言時也會較為容易。
字元(Character-based)
基於「字元」的標記方式會將文字拆成單一的字符, 這種方式的詞彙量較小, 但帶來的資訊量價值大, 因為不同語言的詞與詞之間是具有語言學組合的關係,也會表達出不同的意義。
Jim Henson was a puppeteer
J
i
m
.
.
.
有沒有更好的「斷詞」處理方式?
BPE、WordPiece、SentencePiece、Unigram分別適用於不同的語言模型, 後續也會獨立章節來介紹這部份。

標記化

我們就實際來使用Hugging Face的API來進行說明,這邊我們使用「ckiplab/bert-tiny-chinese」這個模型來進行。
from transformers import AutoTokenizer

# Initialize tokenzier and model
tokenizer = AutoTokenizer.from_pretrained("ckiplab/bert-tiny-chinese")

# Input text
text = "今天的天氣很好。"
tokens = tokenizer.tokenize(text)
tokens

# ['今', '天', '的', '天', '氣', '很', '好', '。']
轉換成ID編碼
當我們第一步將文字拆為單詞之後通常稱為標記(Token), 第二步就是將這些標記(Token)轉為模型看得懂的數字(ID)。
ids = tokenizer.convert_tokens_to_ids(tokens)
ids

# [791, 1921, 4638, 1921, 3706, 2523, 1962, 511]
解碼
我們也可以透過解碼函式將ID解回文字。
decoded_string = tokenizer.decode([791, 1921, 4638, 1921, 3706, 2523, 1962, 511])
decoded_string

# 今 天 的 天 氣 很 好 。
這就是Tokenizer的主要目的, 扮演著模型與文字之間的轉換器。

加載與儲存

加載的部份。
from transformers import AutoTokenizer

# Initialize tokenzier and model
tokenizer = AutoTokenizer.from_pretrained("ckiplab/bert-tiny-chinese")
經過加工後儲存成自訂的斷詞器可以這樣。
tokenizer.save_pretrained("custom")
關於更進階的的使用方式可以參考「https://huggingface.co/learn/nlp-course/zh-TW/chapter6/3?fw=pt」。
今天的範例都在這裡「📦 huggingface/tokenizers.ipynb」歡迎自行取用。

結語

初步了解到Hugging Face架構之後深深感受到標準化的好處, 有點像是鴻海MIH平台一般, 賦能給各個開發者到這個平台共同發展AI模型, 雖說獲利模式是否足以支撐起一家公司仍待時間進行驗證, 但平台已經讓各種NLP技術的發展更快速, 也縮小著技術屏障的隔閡。
喜歡撰寫文章的你,不妨來了解一下:
歡迎加入一起練習寫作,賺取知識!

更多關於【Hugging Face 系列】…

留言

這個網誌中的熱門文章

java西元民國轉換_各種不同格式

C#資料庫操作(新增、修改、刪除、查詢)

【Excel好好玩】 自己的資產自己管!善用Google Sheet來幫我們評估貸款

這次介紹的主題是關於Excel的貸款還款計畫試算,我們人生中總會遇到需要大筆金額的花費,但當資金不夠時就得進行貸款,而貸款之前如果我們能夠審慎評估,並分析自己的還款能力之後在進行凍作,相信風險會小很多,因此就自己動動手來使用Google Sheet進行試算吧! 基本資料 ● 貸款總額: 1000000 ● 貸款期數: 84月 ● 年利率: 2.11% ● 月利率: 0.18% P.S 月利率 = 年利率 / 12 重要函式 PMT : 這是Google Sheet內建的重要年金計算公式,我們可以善用這個公式來計算固定利率及期數的固定攤還本息。因為PMT函式計算出的結果為負數,所以前面加上-號轉成正數。 動手做 首先我們在Excel表上列出我們的基本資料 圖片來源 其中月利率的部分就使用公式「=B4/12」 接著我們填上第一列的期數跟餘額 圖片來源 =B2 =B3 使用關鍵PMT函數來計算本息的部分 因為PMT函式計算出的結果為負數,所以前面加上-號轉成正數。 -PMT(貸款利率(月利率), 貸款期數, 貸款總額) =-PMT($B$5,$B$3,$B$2) 圖片來源 計算利息 利息 = 貸款餘額 x 月利率 =B8*$B$5 圖片來源 計算本金 本金 = 本息 - 利息 =C8-D8 圖片來源 製作第二列餘額的部分 餘額的部分 = 上一期的餘額 - 上一期的本金 圖片來源 接著拖曳該兩列往下拉,即可查看每一期的利息與本金 圖片來源 結語 雖然市面上已經有很多貸款銀行都提供了試算功能,但如果我們想要進一步管理自己的資產時,就需要將每一期的金額給計算出來,因此才會將公式運用在Excel表,讓我們的資產管理表能夠結合負債,進一步評估我們理財行動的下一步,希望這樣的經驗可以幫助到正在理財道路上打拼的夥伴,讓我們透過有效的管理,幫助荷包長大吧! 喜歡撰寫文章的你,不妨來了解一下: Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入? 歡迎加入一起練習寫作,賺取知識,累積財富!