目录

torchtext.transforms

转换是常见的文本转换。它们可以使用 或 using 链接在一起以支持 torch 脚本化。

SentencePieceTokenizer

torchText.Transforms。SentencePieceTokenizersp_model_path: str[来源]

从预先训练的句子词模型转换 Sentence Piece 分词器

Additiona 详细信息: https://github.com/google/sentencepiece

参数

sp_model_pathstr) – 预训练句子模型的路径

>>> 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 模型的二进制文本分类

SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
forwardinput Any Any[源]
参数

inputUnion[strList[str]]) – 输入要应用分词器的句子或句子列表。

结果

分词文本

返回类型

联合[List[str], List[List[str]]]

GPT2BPETokenizer

torchText.Transforms。GPT2BPETokenizerencoder_json_path strvocab_bpe_path strreturn_tokens: bool = [来源]

GPT-2 BPE Tokenizer 的转换。

在 TorchScript 中重新实现 openai GPT-2 BPE。原始 openai 实现 https://github.com/openai/gpt-2/blob/master/src/encoder.py

参数
  • encoder_json_pathstr) – GPT-2 BPE 编码器 json 文件的路径。

  • vocab_bpe_pathstr) - bpe 词汇表文件的路径。

  • return_tokens – 指示是否返回拆分令牌。如果为 False,它将以字符串形式返回编码的令牌 ID(默认值:False)

forwardinput Any Any[源]
参数

inputUnion[strList[str]]) – 输入要应用分词器的句子或句子列表。

结果

分词文本

返回类型

联合[列表[str], 列表[列表(str)]]

CLIPTokenizer

torchText.Transforms。CLIPTokenizermerges_path strencoder_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")
参数
  • merges_pathstr) – bpe 合并文件的路径。

  • encoder_json_pathstr) – BPE 编码器 json 文件的可选路径。指定时,使用 this 来推断num_merges。

  • num_mergesint) – 可选,要从 bpe 合并文件中读取的合并数。

  • return_tokens – 指示是否返回拆分令牌。如果为 False,它将以字符串形式返回编码的令牌 ID(默认值:False)

forwardinput Any Any[源]
参数

inputUnion[strList[str]]) – 输入要应用分词器的句子或句子列表。

结果

分词文本

返回类型

联合[列表[str], 列表[列表(str)]]

RegexTokenizer

torchText.Transforms。RegexTokenizerpatterns_list[来源]

字符串句子的正则表达式分词器,该字符串句子应用 patterns_list中定义的所有正则表达式替换。它由 Google 的 C++ RE2 正则表达式引擎提供支持。

参数
  • patterns_listList[Tuple[strstr]]) – 包含正则表达式模式字符串的元组(有序对)列表

  • 元素。作为第一个元素,替换字符串作为第二个元素)–

警告
  • RE2 库不支持任意前瞻或后瞻断言,也不支持反向引用。查看此处的文档以获取更多信息。

  • 最后的分词化步骤始终使用空格作为分隔符。要根据特定的正则表达式模式拆分字符串,类似于 Python 的 re.split,可以提供 Tuples of 。('<regex_pattern>', ' ')

基于列表的正则表达式标记化。(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)
forwardline str List[str][来源]
参数

linesstr) – 要分词的文本字符串。

结果

正则表达式后的令牌列表。

返回类型

列表[str]

BERTTokenizer

torchText.Transforms。BERTTokenizervocab_path: strdo_lower_case bool = Truestrip_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
参数
  • vocab_pathstr) – 预训练词汇文件的路径。路径可以是 local 或 URL。

  • do_lower_caseOptional[bool]) – 指示是否使用小写。(默认值:True)

  • strip_accentsOptional[bool]) – 指示是否去除重音符号。(默认值:None)

  • return_tokensbool) – 指示是否返回令牌。如果为 false,则以字符串形式返回相应的令牌 ID(默认值:False)

  • never_splitOptional[List[str]]) – 在分词化期间不会拆分的令牌集合。(默认值:None)

forwardinput Any Any[源]
参数

inputUnion[strList[str]]) – 输入要应用分词器的句子或句子列表。

结果

分词文本

返回类型

联合[列表[str], 列表[列表(str)]]

词汇转换

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 模型的二进制文本分类

SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
forwardinput Any Any[源]
参数

inputUnion[List[str]List[List[str]]] – 要转换为相应令牌 ID 的输入令牌批次

结果

将输入转换为相应的令牌 ID

返回类型

Union[List[int], List[List[int]]]

ToTensor

torchText.Transforms。ToTensorpadding_value: 可选[int] = dtype dtype = torch.int64[来源]

将输入转换为 torch 张量

参数
  • padding_valueOptional[int]) – 填充值,使批次中的每个输入的长度等于批次中最长的序列。

  • dtype) – 输出张量

forwardinput Any Tensor[来源]
参数

inputUnion[List[int]List[List[int]]]) – 令牌 ID 的序列或批次

返回类型

张肌

标签到索引

torchText.Transforms。LabelToIndexlabel_names 可选[List[str]] = Nonelabel_path 可选[str] = Nonesort_names=False[来源]

将标签从 string 名称转换为 id。

参数
  • label_namesOptional[List[str]]) – 唯一标签名称的列表

  • label_pathOptional[str]) – 包含唯一标签名称的文件路径,每行包含 1 个标签。请注意,应提供 label_names 或 label_path 但不能两者兼而有之。

forwardinput Any Any[源]
参数

inputUnion[strList[str]]) – 输入要转换为相应 ID 的标签

返回类型

联合[int, 列表[int]]

截断

torchText.Transforms。Truncatemax_seq_len: int[来源]

Truncate input sequence (截断输入序列)

参数

max_seq_lenint) – 输入序列允许的最大长度

教程使用:Truncate
SST-2 使用 XLM-RoBERTa 模型的二进制文本分类

SST-2 使用 XLM-RoBERTa 模型的二进制文本分类

SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
forwardinput Any Any[源]
参数

inputUnion[List[Union[strint]]], List[List[Union[strint]]]]]) – 输入序列或批次要截断的序列

结果

截断序列

返回类型

Union[List[Union[strint]], List[List[Union[strint]]]]

添加令牌

torchText.Transforms。AddTokentoken Union[int str]begin bool = True[来源]

将标记添加到序列的开头或结尾

参数
  • tokenUnion[intstr]) – 要添加的令牌

  • beginbooloptional) – 是在开始或结束还是序列处插入标记,默认为 True

教程使用:AddToken
SST-2 使用 XLM-RoBERTa 模型的二进制文本分类

SST-2 使用 XLM-RoBERTa 模型的二进制文本分类

SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
forwardinput Any Any[源]
参数

inputUnion[List[Union[strint]]], List[List[Union[strint]]]]]) – 输入序列或批次

顺序

torchText.Transforms。Sequential*args Module[来源]
torchText.Transforms。Sequentialarg OrderedDict[str 模块])

用于托管一系列文本转换的容器。

教程使用:Sequential
SST-2 使用 XLM-RoBERTa 模型的二进制文本分类

SST-2 使用 XLM-RoBERTa 模型的二进制文本分类

SST-2 使用 XLM-RoBERTa 模型的二进制文本分类
forwardinput Any Any[源]
参数

inputAny) - 输入序列或批次。序列中的第一个转换必须支持输入类型。

PadTransform 面板变换

torchText.Transforms。PadTransformmax_length: intpad_value: int[来源]

使用给定的 padding 值将 tensor 填充到固定长度。

参数
  • max_lengthint) – 要填充的最大长度

  • pad_valuebool) - 用于填充张量的值

forwardx Tensor Tensor[来源]
参数

xTensor) - 要填充的张量

结果

使用 pad_value 填充的 Tensor 最多为 max_length

返回类型

张肌

StrToIntTransform (StrToInt转换)

torchText.Transforms。StrToIntTransform[来源]

将字符串标记转换为整数(单个序列或批处理)。

forwardinput Any Any[源]
参数

inputUnion[List[str]List[List[str]]]) – 要转换的字符串标记序列或批次

结果

序列或批量转换为相应的令牌 ID

返回类型

Union[List[int], List[List[int]]]

CharBPETokenizer

torchText.Transforms。CharBPETokenizerbpe_encoder_path strbpe_merges_path strreturn_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]]

forward输入 Union[str List[str]] Union[列表 List[列表]][来源]

模块的 forward 方法将字符串或字符串列表编码为令牌 ID

参数

input (输入) – 要应用分词器的输入句子或句子列表。

结果

令牌 ID 的列表或列表

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源