torchtext.transforms¶
变换是常见的文本变换。它们可以使用torch.nn.Sequential链接在一起,或者使用torchtext.transforms.Sequential以支持torch脚本化。
SentencePieceTokenizer¶
-
class
torchtext.transforms.SentencePieceTokenizer(sp_model_path: str)[source]¶ 来自预训练 SentencePiece 模型的句子片段转换器
附加详情:https://github.com/google/sentencepiece
- Parameters
sp_model_path (str) – 预训练 SentencePiece 模型的路径
- Example
>>> from torchtext.transforms import SentencePieceTokenizer >>> transform = SentencePieceTokenizer("spm_model") >>> transform(["hello world", "attention is all you need!"])
- Tutorials using
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)[source]¶ CLIP tokenizer 的转换。基于字节级别的 BPE。
重新实现了CLIP分词器的TorchScript版本。原始实现: https://github.com/mlfoundations/open_clip/blob/main/src/clip/tokenizer.py
这个分词器经过训练,会将空格视为词的一部分(有点像 SentencePiece),因此一个单词在句子开头(没有空格)和不在句子开头时会被编码为不同的形式。
下面的代码片段展示了如何使用从原始论文实现中获取的 CLIP 分词器及其编码器和合并文件。
- Example
>>> 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")
- Parameters
BERTTokenizer¶
-
class
torchtext.transforms.BERTTokenizer(vocab_path: str, do_lower_case: bool = True, strip_accents: Optional[bool] = None, return_tokens=False)[source]¶ BERT分词器转换。
基于论文中介绍的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 分词器。
- Example
>>> from torchtext.transforms import BERTTokenizer >>> VOCAB_FILE = "https://huggingface.co/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
- Parameters
VocabTransform¶
-
class
torchtext.transforms.VocabTransform(vocab: torchtext.vocab.vocab.Vocab)[source]¶ 词汇转换将输入的token批处理转换为对应的token ID。
- Parameters
词汇表 – 是
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)
- Tutorials using
VocabTransform:
ToTensor¶
-
class
torchtext.transforms.ToTensor(padding_value: Optional[int] = None, dtype: torch.dtype = torch.int64)[source]¶ 将输入转换为 torch 张量
- Parameters
填充值 (可选[整数]) – 填充值以使批次中的每个输入长度等于批次中最长序列的长度。
数据类型 (
torch.dtype) –torch.dtype输出张量的数据类型
-
forward(input: Any) → torch.Tensor[source]¶
LabelToIndex¶
截断¶
AddToken¶
顺序¶
PadTransform¶
-
class
torchtext.transforms.PadTransform(max_length: int, pad_value: int)[source]¶ 用给定的填充值将张量填充到固定长度。
-
forward(x: torch.Tensor) → torch.Tensor[source]¶ - Parameters
x (张量) – 需要填充的张量
- Returns
用pad_value填充张量以达到max_length长度
- Return type
张量
-