目录

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:
SST-2 Binary text classification with XLM-RoBERTa model

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

使用 XLM-RoBERTa 模型进行 SST-2 二分类文本分类
forward(input: Any) Any[source]
Parameters:

输入 (Union[str, List[str]]) – 需要应用分词器的输入句子或句子列表。

Returns:

碎片化文本

Return type:

联合[List[字符串], List[List[字符串]]]

GPT2BPETokenizer

class torchtext.transforms.GPT2BPETokenizer(encoder_json_path: str, vocab_bpe_path: str, return_tokens: bool = False)[source]

GPT-2 BPE 分词器的转换。

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

Parameters:
  • encoder_json_path (str) – GPT-2 BPE 编码器 json 文件路径。

  • vocab_bpe_path (str) – BPE词汇文件路径。

  • return_tokens – 是否返回分割的词元。如果为False,则将以字符串形式返回编码的词元ID(默认值:False)

forward(input: Any) Any[source]
Parameters:

输入 (Union[str, List[str]]) – 需要应用分词器的输入句子或句子列表。

Returns:

碎片化文本

Return type:

联合[List[字符串], List[List(字符串)]]

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:
  • merges_path (str) – BPE 合并文件路径。

  • encoder_json_path (str) – 可选,BPE编码器json文件的路径。当指定时,此文件用于推断合并次数。

  • num_merges (int) – 可选,表示从bpe合并文件中读取的合并次数。

  • return_tokens – 是否返回分割的词元。如果为False,则将以字符串形式返回编码的词元ID(默认值:False)

forward(input: Any) Any[source]
Parameters:

输入 (Union[str, List[str]]) – 需要应用分词器的输入句子或句子列表。

Returns:

碎片化文本

Return type:

联合[List[字符串], List[List(字符串)]]

RegexTokenizer

class torchtext.transforms.RegexTokenizer(patterns_list)[source]

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

Parameters:
  • 模式列表 (List[Tuple[str, str]]) – 包含正则表达式模式字符串的元组列表(有序对)

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

Caveats
  • RE2库不支持任意的前瞻或回顾断言,也不支持回溯引用。请查看文档以获取更多信息。

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

Example
Regex tokenization based on (patterns, replacements) list.
>>> 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)
Regex tokenization based on (single_pattern, ' ') list.
>>> 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)
forward(line: str) List[str][source]
Parameters:

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

Returns:

正则表达式后的词元列表。

Return type:

列表[字符串]

BERTTokenizer

class 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)[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:
  • vocab_path (str) – 预训练词汇文件的路径。该路径可以是本地路径或URL。

  • do_lower_case (可选[bool]) – 是否进行小写转换。 (默认值: True)

  • strip_accents (可选[bool]) – 是否去除重音符号。 (默认值: None)

  • 返回tokens (bool) – 是否返回tokens。如果为false,则返回相应的token ID作为字符串(默认值:False)

  • never_split (可选[List[str]]) – 在分词过程中不会被拆分的标记集合。 (默认: None)

forward(input: Any) Any[source]
Parameters:

输入 (Union[str, List[str]]) – 需要应用分词器的输入句子或句子列表。

Returns:

碎片化文本

Return type:

联合[List[字符串], List[List(字符串)]]

VocabTransform

class torchtext.transforms.VocabTransform(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:
SST-2 Binary text classification with XLM-RoBERTa model

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

使用 XLM-RoBERTa 模型进行 SST-2 二分类文本分类
forward(input: Any) Any[source]
Parameters:

输入 (Union[List[str], List[List[str]]]) – 要转换为相应token id的token批输入

Returns:

将输入的内容转换为对应的标记 ID。

Return type:

联合[List[整数], List[List[整数]]]

ToTensor

class torchtext.transforms.ToTensor(padding_value: Optional[int] = None, dtype: dtype = torch.int64)[source]

将输入转换为 torch 张量

Parameters:
  • 填充值 (可选[整数]) – 填充值以使批次中的每个输入长度等于批次中最长序列的长度。

  • 数据类型 (torch.dtype) – torch.dtype 输出张量的数据类型

forward(input: Any) Tensor[source]
Parameters:

输入 (Union[List[int], List[List[int]]]) – 词元 ID 的序列或批处理

Return type:

张量

LabelToIndex

class torchtext.transforms.LabelToIndex(label_names: Optional[List[str]] = None, label_path: Optional[str] = None, sort_names=False)[source]

将标签从字符串名称转换为编号。

Parameters:
  • 标签名称 (可选[列表[字符串]]) – 一个包含唯一标签名称的列表

  • label_path (可选[str]) – 文件路径,该文件包含每行一个唯一的标签名称。注意,label_names 和 label_path 中应提供其中一个,但不能同时提供。

forward(input: Any) Any[source]
Parameters:

输入 (Union[str, List[str]]) – 要转换为相应ID的输入标签

Return type:

联合[整数, 列表[整数]]

截断

class torchtext.transforms.Truncate(max_seq_len: int)[source]

截断输入序列

Parameters:

max_seq_len (int) – 输入序列允许的最大长度

Tutorials using Truncate:
SST-2 Binary text classification with XLM-RoBERTa model

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

使用 XLM-RoBERTa 模型进行 SST-2 二分类文本分类
forward(input: Any) Any[source]
Parameters:

输入 (Union[List[Union[str, int]], List[List[Union[str, int]]]]) – 需要截断的输入序列或序列批次

Returns:

截断序列

Return type:

联合[List[联合[字符串, 整数]], List[List[联合[字符串, 整数]]]]

AddToken

class torchtext.transforms.AddToken(token: Union[int, str], begin: bool = True)[source]

在序列开头或结尾添加令牌

Parameters:
  • 标记 (Union[int, str]) – 要添加的标记

  • 开始 (布尔值, 可选) – 是否在序列开头或结尾插入标记,默认为True

Tutorials using AddToken:
SST-2 Binary text classification with XLM-RoBERTa model

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

使用 XLM-RoBERTa 模型进行 SST-2 二分类文本分类
forward(input: Any) Any[source]
Parameters:

输入 (Union[List[Union[str, int]], List[List[Union[str, int]]]]) – 输入序列或批处理

顺序

class torchtext.transforms.Sequential(*args: Module)[source]
class torchtext.transforms.Sequential(arg: OrderedDict[str, Module])

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

Tutorials using Sequential:
SST-2 Binary text classification with XLM-RoBERTa model

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

使用 XLM-RoBERTa 模型进行 SST-2 二分类文本分类
forward(input: Any) Any[source]
Parameters:

输入 (Any) – 输入序列或批次。输入类型必须由序列中的第一个转换支持。

PadTransform

class torchtext.transforms.PadTransform(max_length: int, pad_value: int)[source]

用给定的填充值将张量填充到固定长度。

Parameters:
  • max_length (int) – 填充的最大长度

  • pad_value (bool) – 填充张量的值

forward(x: Tensor) Tensor[source]
Parameters:

x (张量) – 需要填充的张量

Returns:

用pad_value填充张量以达到max_length长度

Return type:

张量

StrToIntTransform

class torchtext.transforms.StrToIntTransform[source]

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

forward(input: Any) Any[source]
Parameters:

输入 (Union[List[str], List[List[str]]]) – 字符串令牌序列或字符串令牌批次以进行转换

Returns:

序列或批次转换为相应的token ID

Return type:

联合[List[整数], List[List[整数]]]

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)[source]

字符字节对编码分词器的转换。

:param : 参数 bpe_encoder_path: 字符串编码器 JSON 文件的路径。 :param : 类型 bpe_encoder_path: str :param : 参数 bpe_merges_path: BPE 合并文本文件的路径。 :param : 类型 bpe_merges_path: str :param : 参数 return_tokens: 指示是否返回分割的词元。如果为 False,则返回编码的词元 ID(默认值:False)。 :param : 类型 return_tokens: bool :param : 参数 unk_token: 未知词元。如果提供,则必须存在于编码器中。 :param : 类型 unk_token: Optional[str] :param : 参数 suffix: 用于每个单词结尾子词的后缀。 :param : 类型 suffix: Optional[str] :param : 参数 special_tokens: 不应拆分为单个字符的特殊词元。如果提供,则这些词元必须存在于编码器中。 :param : 类型 special_tokens: Optional[List[str]]

forward(input: Union[str, List[str]]) Union[List, List[List]][source]

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

Parameters:

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

Returns:

一个列表或列表的列表,包含token ID

文档

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

查看文档

教程

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

查看教程

资源

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

查看资源