torchtext.transforms¶
轉換是常見的文字轉換。它們可以使用 torch.nn.Sequential 或 torchtext.transforms.Sequential 鏈接在一起,以支援 torch-scriptability。
SentencePieceTokenizer¶
- class torchtext.transforms.SentencePieceTokenizer(sp_model_path: str)[原始碼]¶
從預先訓練的 sentencepiece 模型進行 Sentence Piece 分詞器的轉換
更多細節:https://github.com/google/sentencepiece
- 參數:
sp_model_path (str) – 預先訓練的 sentencepiece 模型的路徑
- 範例
>>> from torchtext.transforms import SentencePieceTokenizer >>> transform = SentencePieceTokenizer("spm_model") >>> transform(["hello world", "attention is all you need!"])
- 使用
SentencePieceTokenizer的教學
GPT2BPETokenizer¶
CLIPTokenizer¶
- class torchtext.transforms.CLIPTokenizer(merges_path: str, encoder_json_path: Optional[str] = None, num_merges: Optional[int] = None, return_tokens: bool = False)[原始碼]¶
CLIP 分詞器的轉換。基於位元組級 BPE。
在 TorchScript 中重新實作 CLIP 分詞器。原始實作:https://github.com/mlfoundations/open_clip/blob/main/src/clip/tokenizer.py
這個分詞器已經過訓練,可以將空格視為詞的一部分(有點像 sentencepiece),因此一個詞在句子開頭(沒有空格)或不在句子開頭的編碼方式會有所不同。
以下程式碼片段顯示如何使用 CLIP 分詞器,以及從原始論文實作中取得的編碼器和合併檔案。
- 範例
>>> from torchtext.transforms import CLIPTokenizer >>> MERGES_FILE = "http://download.pytorch.org/models/text/clip_merges.bpe" >>> ENCODER_FILE = "http://download.pytorch.org/models/text/clip_encoder.json" >>> tokenizer = CLIPTokenizer(merges_path=MERGES_FILE, encoder_json_path=ENCODER_FILE) >>> tokenizer("the quick brown fox jumped over the lazy dog")
- 參數:
RegexTokenizer¶
- class torchtext.transforms.RegexTokenizer(patterns_list)[原始碼]¶
適用於字串句子的 Regex tokenizer,它會套用 patterns_list 中定義的所有 regex 置換。它由 Google 的 C++ RE2 正規表示式引擎 支援。
- 參數:
- 注意事項
- 範例
- 基於
(patterns, replacements)清單的 Regex 標記化。 >>> import torch >>> from torchtext.transforms import RegexTokenizer >>> test_sample = 'Basic Regex Tokenization for a Line of Text' >>> patterns_list = [ (r''', ' ' '), (r'"', '')] >>> reg_tokenizer = RegexTokenizer(patterns_list) >>> jit_reg_tokenizer = torch.jit.script(reg_tokenizer) >>> tokens = jit_reg_tokenizer(test_sample)
- 基於
(single_pattern, ' ')清單的 Regex 標記化。 >>> import torch >>> from torchtext.transforms import RegexTokenizer >>> test_sample = 'Basic.Regex,Tokenization_for+a..Line,,of Text' >>> patterns_list = [ (r'[,._+ ]+', r' ')] >>> reg_tokenizer = RegexTokenizer(patterns_list) >>> jit_reg_tokenizer = torch.jit.script(reg_tokenizer) >>> tokens = jit_reg_tokenizer(test_sample)
- 基於
BERTTokenizer¶
- 類別 torchtext.transforms.BERTTokenizer(vocab_path: str, do_lower_case: bool = True, strip_accents: Optional[bool] = None, return_tokens=False, never_split: Optional[List[str]] = None)[原始碼]¶
BERT Tokenizer 的轉換。
基於論文中介紹的 WordPiece 演算法:https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/37842.pdf
後端核心實作取自 https://github.com/LieluoboAi/radish 並進行修改。
如需更多詳細資訊,請參閱 PR https://github.com/pytorch/text/pull/1707 摘要。
以下程式碼片段顯示如何使用預先訓練的詞彙檔案使用 BERT tokenizer。
- 範例
>>> from torchtext.transforms import BERTTokenizer >>> VOCAB_FILE = "https://huggingface.tw/bert-base-uncased/resolve/main/vocab.txt" >>> tokenizer = BERTTokenizer(vocab_path=VOCAB_FILE, do_lower_case=True, return_tokens=True) >>> tokenizer("Hello World, How are you!") # single sentence input >>> tokenizer(["Hello World","How are you!"]) # batch input
- 參數:
VocabTransform¶
- 類別 torchtext.transforms.VocabTransform(vocab: Vocab)[原始碼]¶
Vocab 轉換,用於將輸入的標記批次轉換為對應的標記 ID
- 參數:
vocab –
torchtext.vocab.Vocab類別的實例。
範例
>>> import torch >>> from torchtext.vocab import vocab >>> from torchtext.transforms import VocabTransform >>> from collections import OrderedDict >>> vocab_obj = vocab(OrderedDict([('a', 1), ('b', 1), ('c', 1)])) >>> vocab_transform = VocabTransform(vocab_obj) >>> output = vocab_transform([['a','b'],['a','b','c']]) >>> jit_vocab_transform = torch.jit.script(vocab_transform)
- 使用
VocabTransform的教學
ToTensor¶
- 類別 torchtext.transforms.ToTensor(padding_value: Optional[int] = None, dtype: dtype = torch.int64)[原始碼]¶
將輸入轉換為 torch 張量
- 參數:
padding_value (Optional[int]) – 填補值,用於使批次中每個輸入的長度等於批次中最長序列的長度。
dtype (
torch.dtype) – 輸出張量的torch.dtype
LabelToIndex¶
Truncate¶
AddToken¶
Sequential¶
PadTransform¶
StrToIntTransform¶
CharBPETokenizer¶
- class torchtext.transforms.CharBPETokenizer(bpe_encoder_path: str, bpe_merges_path: str, return_tokens: bool = False, unk_token: Optional[str] = None, suffix: Optional[str] = None, special_tokens: Optional[List[str]] = None)[原始碼]¶
用於字元位元組對編碼標記器的轉換。
:param : param bpe_encoder_path: BPE 編碼器 json 檔案的路徑。 :param : type bpe_encoder_path: str :param : param bpe_merges_path: BPE 合併文字檔案的路徑。 :param : type bpe_merges_path: str :param : param return_tokens: 指示是否返回分割後的權杖。 如果為 False,則返回編碼後的權杖 ID(預設值:False)。 :param : type return_tokens: bool :param : param unk_token: 未知權杖。 如果提供,則它必須存在於編碼器中。 :param : type unk_token: Optional[str] :param : param suffix: 用於每個作為詞尾的子詞的後綴。 :param : type suffix: Optional[str] :param : param special_tokens: 不應分割成單獨字元的特殊權杖。 如果提供,則這些權杖必須存在於編碼器中。 :param : type special_tokens: Optional[List[str]]