我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
選擇 Tokenizer 取決於 NLP 項目的目標,儘管 Subword Tokenizer 對於 Transformer 模型來說更有效,但 Word 和 Senetence Tokenizer 提供了有用的功能,可用於許多任務,包括:
- 在 Sentence 或 Word 層面的文本處理對於文本分類等自然語言處理任務已經足夠,此外,將文本拆分為 Sentence 和 Word 可以作為流水線的一部分,用來創建 Transformer 模型的監督式訓練數據集,例如,獲得的句子可以被正規化,然後添加 Labeling 函數到輸出中,從這裡開始,Subword Tokenizer 可以接管,開始 Transformer 的預訓練過程
- Sentence 或 Word 層級的 Tokenization 足以完成簡單的機器學習任務,例如用於垃圾郵件偵測的分類器
- Part-of-Speech (POS) 和 Named Entity Recognition (NER) 在 Word 層面進行時,可以從 Word 或 Sentence 的 Tokenization 中受益
我們可以安裝各種 Tokenizer,以作為後續實驗用途:
!pip install transformers # Hugging Face Transformers
!pip install tabulate # Printing tabular data in Python
!pip install nltk # Natural Language Toolkit
當中 Word 和 Sentence 的 Tokenizer 由 nltk 包主責,而 Subword Tokenizer 由 Transformers 包主責。
以下載入常見的 Word 和 Sentence 的 Tokenizer:
import nltk
nltk.download('punkt')
from nltk.tokenize import sent_tokenize, word_tokenize, RegexpTokenizer, TreebankWordTokenizer, WhitespaceTokenizer, PunktSentenceTokenizer, WordPunctTokenizer, MWETokenizer