torchtext.transforms¶
转换是常见的文本转换。它们可以使用 或 using 链接在一起以支持 torch 脚本化。
SentencePieceTokenizer¶
- 类 torchText.Transforms。SentencePieceTokenizer(sp_model_path: str)[来源]¶
从预先训练的句子词模型转换 Sentence Piece 分词器
Additiona 详细信息: https://github.com/google/sentencepiece
- 参数
sp_model_path (str) – 预训练句子模型的路径
- 例
>>> from torchtext.transforms import SentencePieceTokenizer >>> transform = SentencePieceTokenizer("spm_model") >>> transform(["hello world", "attention is all you need!"])
- 教程使用:
SentencePieceTokenizer
SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
GPT2BPETokenizer¶
CLIPTokenizer¶
- 类 torchText.Transforms。CLIPTokenizer(merges_path: str, encoder_json_path: 可选[str] = 无, num_merges: 可选[int] = 无,return_tokens: bool = False)[来源]¶
CLIP Tokenizer 的 Transform。基于字节级 BPE。
在 TorchScript 中重新实现 CLIP Tokenizer。原始实现: 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¶
- 类 torchText.Transforms。RegexTokenizer(patterns_list)[来源]¶
字符串句子的正则表达式分词器,该字符串句子应用 patterns_list中定义的所有正则表达式替换。它由 Google 的 C++ RE2 正则表达式引擎提供支持。
- 警告
- 例
- 基于列表的正则表达式标记化。
(patterns, replacements)
>>> 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, ' ')
>>> 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: 可选[bool] = 无,return_tokens=False,never_split:可选[List[str]] = 无)[来源]¶
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 分词器。
- 例
>>> 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
- 参数
词汇转换¶
- 类 torchText.Transforms。VocabTransform(词汇:Vocab)[来源]¶
词汇转换,用于将输入批次的词元转换为相应的词元 ID
例
>>> 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
SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
- 教程使用:
ToTensor¶
标签到索引¶
截断¶
- 类 torchText.Transforms。Truncate(max_seq_len: int)[来源]¶
Truncate input sequence (截断输入序列)
- 参数
max_seq_len (int) – 输入序列允许的最大长度
- 教程使用:
Truncate
SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
添加令牌¶
顺序¶
PadTransform 面板变换¶
StrToIntTransform (StrToInt转换)¶
CharBPETokenizer¶
- 类 torchText.Transforms。CharBPETokenizer(bpe_encoder_path: str, bpe_merges_path: str, return_tokens: bool = False,unk_token:可选[str] = 无,后缀:可选[str] = 无,special_tokens:可选[List[str]] = 无)[来源]¶
Transform 的字符字节对编码分词器。
:p aram : param bpe_encoder_path: BPE 编码器 json 文件的路径。 :p aram : 类型 bpe_encoder_path: str :p aram : param bpe_merges_path: BPE 合并文本文件的路径。 :p aram : 类型 bpe_merges_path: str :p aram : param return_tokens : 表示是否返回 split token。如果为 False,它将返回编码的令牌 ID(默认值:False)。 :p aram : 类型 return_tokens: bool :p aram : param unk_token : 未知令牌。如果提供,则它必须存在于 encoder 中。 :p aram : 类型 unk_token: 可选[str] :p aram : param suffix: 用于作为单词结尾的每个子词的后缀。 :p aram : type suffix: 可选[str] :p aram : param special_tokens : 不应拆分为单个字符的特殊标记。如果提供,则这些必须存在于 encoder 中。 :p aram : 键入 special_tokens: 可选[List[str]]