torchtext.vocab¶
词汇表¶
-
class
torchtext.vocab.Vocab(vocab)[source]¶ -
-
append_token(token: str) → None[source]¶ - Parameters
token – 用于查找相应索引的标记。
- Raises
RuntimeError – 如果 token 已经存在于词汇表中
-
forward(tokens: List[str]) → List[int][source]¶ 调用lookup_indices方法
- Parameters
tokens – 用于查找其对应indices的token列表。
- Returns
与tokens列表相关的索引。
-
insert_token(token: str, index: int) → None[source]¶ - Parameters
token – 用于查找相应索引的标记。
索引 – 与关联令牌对应的索引。
- Raises
RuntimeError – 如果 index 不在范围 [0, Vocab.size()] 内,或者如果 token 已经存在于词汇表中。
-
lookup_indices(tokens: List[str]) → List[int][source]¶ - Parameters
tokens – 用于查找其对应项的indices。
- Returns
与tokens相关的‘索引’。
-
lookup_token(index: int) → str[source]¶ - Parameters
索引 – 与关联令牌对应的索引。
- Returns
用于查找对应索引的标记。
- Return type
令牌
- Raises
RuntimeError – 如果 index 不在范围 [0, itos.size()) 内。
-
lookup_tokens(indices: List[int]) → List[str][source]¶ - Parameters
索引 – 用于查找其对应`tokens`的indices。
- Returns
与indices相关的tokens。
- Raises
RuntimeError – 如果索引在 indices 范围内不是 int 类型 [0, itos.size())。
-
词汇表¶
-
torchtext.vocab.vocab(ordered_dict: Dict, min_freq: int = 1) → torchtext.vocab.vocab.Vocab[source]¶ 用于创建词汇对象的工厂方法,该对象将词元映射到索引。
注意,在ordered_dict中插入键值对的顺序在构建词汇表时会被保留。 因此,如果用户认为按词频排序很重要,则应以反映这一点的方式创建ordered_dict。
- Parameters
有序字典 – 将标记映射到其对应出现频率的有序字典。
min_freq – 需要的最低频率才能将一个词纳入词汇表。
- Returns
一个 Vocab 对象
- Return type
示例
>>> from torchtext.vocab import vocab >>> from collections import Counter, OrderedDict >>> counter = Counter(["a", "a", "b", "b", "b"]) >>> sorted_by_freq_tuples = sorted(counter.items(), key=lambda x: x[1], reverse=True) >>> ordered_dict = OrderedDict(sorted_by_freq_tuples) >>> v1 = vocab(ordered_dict) >>> print(v1['a']) #prints 1 >>> print(v1['out of vocab']) #raise RuntimeError since default index is not set >>> tokens = ['e', 'd', 'c', 'b', 'a'] >>> v2 = vocab(OrderedDict([(token, 1) for token in tokens])) >>> #adding <unk> token and default index >>> unk_token = '<unk>' >>> default_index = -1 >>> if unk_token not in v2: v2.insert_token(unk_token, 0) >>> v2.set_default_index(default_index) >>> print(v2['<unk>']) #prints 0 >>> print(v2['out of vocab']) #prints -1 >>> #make default index same as index of unk_token >>> v2.set_default_index(v2[unk_token]) >>> v2['out of vocab'] is v2[unk_token] #prints True
build_vocab_from_iterator¶
-
torchtext.vocab.build_vocab_from_iterator(iterator: Iterable, min_freq: int = 1, specials: Optional[List[str]] = None, special_first: bool = True) → torchtext.vocab.vocab.Vocab[source]¶ 从迭代器中构建词汇表。
- Parameters
迭代器 – 用于构建词汇表的迭代器。必须生成标记列表或迭代器。
min_freq – 需要的最低频率才能将一个词纳入词汇表。
特殊符号 – 特殊符号以添加。提供的标记顺序将被保留。
special_first – 表示是否在开头或结尾插入符号。
- Returns
一个 Vocab 对象
- Return type
示例
>>> #generating vocab from text file >>> import io >>> from torchtext.vocab import build_vocab_from_iterator >>> def yield_tokens(file_path): >>> with io.open(file_path, encoding = 'utf-8') as f: >>> for line in f: >>> yield line.strip().split() >>> vocab = build_vocab_from_iterator(yield_tokens_batch(file_path), specials=["<unk>"])
向量¶
-
class
torchtext.vocab.Vectors(name, cache=None, url=None, unk_init=None, max_vectors=None)[source]¶ -
__init__(name, cache=None, url=None, unk_init=None, max_vectors=None)[source]¶ - Parameters
名称 – 包含向量的文件的名称
缓存 – 向量缓存目录
url – 如果缓存中未找到向量,则用于下载的url
unk_init (回调函数) – 默认情况下,将未登录词的词向量初始化为零向量;可以是任何接受张量并返回相同大小张量的函数
max_vectors (int) – 可以用来限制加载的预训练向量的数量。 大多数预训练向量集按词频降序排序。 因此,在整个集合无法放入内存或其他不需要的情况下,传递max_vectors 可以限制加载集合的大小。
-
get_vecs_by_tokens(tokens, lower_case_backup=False)[source]¶ 查找词元的嵌入向量。
- Parameters
tokens – 一个标记或标记列表。如果tokens是字符串, 返回形状为self.dim的一维张量;如果tokens是字符串列表, 返回形状为(len(tokens), self.dim)的二维张量。
lower_case_backup – 是否查找小写形式的词。 如果为False,则按原始大小写查找每个词; 如果为True,则首先按原始大小写查找每个词, 如果未在属性stoi的键中找到,则查找小写的词。默认值:False。
示例
>>> examples = ['chip', 'baby', 'Beautiful'] >>> vec = text.vocab.GloVe(name='6B', dim=50) >>> ret = vec.get_vecs_by_tokens(examples, lower_case_backup=True)
-