class Vocab

功能:用于创建字典和应用字典

函数:

  • __contains__(token: str) → bool

    功能:用于判断传入的词语是否存在于词典中。

    参数:

    • token:字符串。需要判断的词语。

    返回值:布尔值。传入单词是否在词典中

  • __getitem__(token: str) → int

    功能:获得传入单词在词典中的索引。

    参数:

    • token:字符串。需要获得索引的词语。

    返回值:整型。对应的索引。

  • __init__(vocab)

    功能:构造函数,创建Vocab实例。

    参数:

    • vocab:词典对象。

    注意:一般不通过构造函数创建vocab对象。

  • __len__() → int

    功能:获得词典的长度。

    返回值:整型。词典长度。

  • __prepare_scriptable__()

    返回值:一个叫JITable Vocab的对象。

    注意:这个方法用途我还没弄明白,返回的对象可以直接当Vocab对象使用。

  • append_token(token: str) → None

    功能:插入新的词。

    参数:

    • token:字符串。需要插入词典的新词。
  • forward(tokens: List[str]) → List[int]

    功能:调用lookup_indices函数,即将词列表映射为字典索引。

    参数:

    • tokens:字符串列表。需要映射为索引的词列表。

    返回值:整型列表。映射后的列表。

  • get_default_index() → Optional[int]

    功能:返回默认索引,即未登录词的索引值。

    返回值:若设定,返回相应的索引。否则返回None

  • get_itos() → List[str]

    功能:获得记录在词典中的词列表。

    返回值:字符串列表。被记录的词的列表,在列表中按索引升序顺序排列。

  • get_stoi() → Dict[str, int]

    功能:获得字典的dict对象。

    返回值:字典。key为登录词,value为其对应索引。

  • insert_token(token: str, index: int) → None

    功能:在字典的指定位置插入新词。

    参数:

    • token:字符串。要插入的新词。
    • index:整型。插入的位置。
  • lookup_indices(tokens: List[str]) → List[int]

    功能:将词语列表映射为索引列表。

    参数:

    • tokens:字符串列表。需要映射为索引的词列表。

    返回值:整型列表。映射后的列表。

  • lookup_token(index: int) → str

    功能:获得索引位置的词语。

    参数:

    • index:整型。想要获得的词的索引。

    返回值:字符串。对应的词。

  • lookup_tokens(indices: List[int]) → List[str]

    功能:将索引列表映射为词列表。

    参数:

    • indices:整型列表。需要映射为此列表的索引列表。

    返回值:字符串列表。映射后的词列表。

  • set_default_index(index: Optional[int]) → None

    功能:设置默认索引,即未登录词的索引。

    参数:

    • index:整型。默认的索引。也可以传入None

示例:

from torchtext.vocab import Vocab, vocab
from collections import Counter, OrderedDictcounter = Counter(["a", "b", "b", "b", "c", "c"])
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)
# get_itos() → List[str]
print(v1.get_itos())# get_stoi() → Dict[str, int]
print(v1.get_stoi())# insert_token(token: str, index: int) → None
v1.insert_token("d", 1)
print(v1.get_stoi())# lookup_indices(tokens: List[str]) → List[int]
print(v1.lookup_indices(["a", "a", "b", "c", "d"]))# lookup_token(index: int) → str
print(v1.lookup_token(0))# lookup_tokens(indices: List[int]) → List[str]
print(v1.lookup_tokens([2, 2, 0, 1, 3]))# lookup_token(index: int) → str
print(v1.lookup_token(0))

示例结果:

['b', 'c', 'a']
{'b': 0, 'c': 1, 'a': 2}
{'b': 0, 'd': 1, 'c': 2, 'a': 3}
[3, 3, 0, 2, 1]
b
['c', 'c', 'b', 'd', 'a']
b

vocab(ordered_dict: Dict, min_freq: int = 1) → torchtext.vocab.Vocab

功能:

创建Vocab对象的工厂方法。

注意:在构建vocab对象时,将会参照传入的dict在构建时的键值对顺序。因此单词是否按照词频排序对用户来说很重要,推荐用ordered_dict来构建词典。

参数:

  • ordered_dirt:字典。用于构建词典的字典,类型一般为OrderedDict[str, int]
  • min_freq:整型,默认为1。表示词典接受的最小词频,词频表示为ordered_dirt的值。

返回值:对应的Vocab对象

示例:

from torchtext.vocab import Vocab, vocab
from collections import Counter, OrderedDictcounter = Counter(["a", "b", "b", "b", "c", "c"])
sorted_by_freq_tuples = sorted(counter.items(), key=lambda x:x[1], reverse=True)
sorted_by_freq_tuplesordered_dict = OrderedDict(sorted_by_freq_tuples)
ordered_dictv1 = vocab(ordered_dict,  min_freq=2)
print(v1.get_stoi())tokens = ["e", "d","d","d", "c", "b", "a"]
v2 = vocab(OrderedDict([(token, 1) for token in tokens]))
unk_token = "<unk>"
default_index = -1
if unk_token not in v2: v2.insert_token(unk_token, 0)
print(v2.get_stoi())

示例结果:

{'b': 0, 'c': 1}
{'<unk>': 0, 'e': 1, 'd': 2, 'c': 3, 'b': 4, 'a': 5}

build_vocab_from_iterator(iterator: Iterable, min_freq: int = 1, specials: Optional[List[str]] = None, special_first: bool = True) → torchtext.vocab.Vocab

功能:用迭代器来生成Vocab对象。

参数:

  • iterator:迭代器。用于创建词典的yield词语迭代器
  • min_freq:整型,默认1。最小词频,创建时会忽略小于最小词频的词语。
  • specials:字符串列表,默认None。一些需要加入词典的特殊符号,加入顺序与列表中顺序一致。
  • special_first:布尔,默认True。表示是否将specials中的符号插在词典最前面。

返回值:对应的Vocab对象

示例:

from torchtext.vocab import build_vocab_from_iteratortokens = ["e", "d","d","d", "c", "b", "b", "a"]
vocab = build_vocab_from_iterator(tokens, min_freq=2, specials=["<unk>", "<eos>"],  special_first=False)
print(vocab.get_itos())

示例结果:

['d', 'b', '<unk>', '<eos>']

class Vectors

功能:存储词的嵌入向量。

函数:

  • __init__(name, cache=None, url=None, unk_init=None, max_vectors=None)

    功能:构造函数。

    参数:

    • name:字符串。词嵌入向量文件的路径。
    • cache:字符串,默认None。缓存向量目录。
    • url:字符串,默认None。下载词嵌入向量的链接。
    • unk_init:函数。用于初始化未登录词。默认情况下,会以全零向量初始化未登录词。可以传入一个参数为一个Tensor、返回值为相同阶数Tensor的函数来处理未登录词。
    • max_vectors:整型。用于限制预训练词向量的个数。由于大多数预训练词向量都按词频降序排列,因此如内存不足等情况下可以限制一下词典大小。
  • get_vecs_by_tokens(tokens, lower_case_backup=False)

    功能:将单词变为词嵌入向量。

    参数:

    • tokens:字符串列表。需要转换为词向量的词列表。
    • lower_case_backup:布尔,默认False。是否将单词变为小写再获取词向量。如果为False,所有词都会用输入的大小写来查询词向量。如果为True,会先按照原有的大小写查找词向量,若找不到,则会转为小写再查找词向量。

    返回值:词嵌入向量Tensor列表。

示例:

from torchtext.vocab import build_vocab_from_iterator,GloVe,Vectorsvec = Vectors(".vector_cache/glove.6B.50d.txt")
print("hi:", vec["hi"])examples = ["ChIP", "chip"]
ret = vec.get_vecs_by_tokens(examples, lower_case_backup=True)print("\n".join(["{}:{}".format(examples[i], ret[i]) for i in range(len(examples))]))

示例结果:

hi: tensor([-0.5431,  0.3443,  0.2713,  1.0487, -1.1642, -1.2722,  0.3578, -0.5653,-0.2988,  0.8518,  0.5222, -0.0020, -0.4643,  0.0336,  0.0484,  0.7876,0.0760,  0.5158,  0.3478,  0.5380,  0.2830, -0.1313, -0.0738,  0.4261,0.0310, -0.5503, -0.9979, -0.2895,  0.3052, -1.1194,  1.2957,  0.9117,0.3222,  0.9341, -0.3415, -0.6271, -0.0922,  0.5090,  0.2920, -0.2012,0.1961, -0.4588,  1.1099, -0.6874,  1.5724, -0.1045,  0.2359, -0.5659,0.4368,  0.9809])
ChIP:tensor([-0.7710, -1.1697,  1.5195,  0.8371,  0.7419, -0.2185, -0.7212, -0.9400,-0.0113,  0.5485,  0.4040, -0.1846, -0.4630,  0.2620, -0.6464,  0.3599,-0.8610, -0.3869, -0.0271, -1.0254,  0.3280, -0.7500, -0.6859, -0.6912,0.3429, -0.6660, -0.2910, -0.6104,  0.3322, -0.4252,  2.4573, -0.8748,0.4891,  1.2888,  0.5780, -0.5509, -0.2263,  0.8127,  0.7048, -0.5498,0.3620, -0.2171, -0.2991,  0.2917,  1.2260,  0.2446,  1.2133, -0.0967,0.0474,  0.1971])
chip:tensor([-0.7710, -1.1697,  1.5195,  0.8371,  0.7419, -0.2185, -0.7212, -0.9400,-0.0113,  0.5485,  0.4040, -0.1846, -0.4630,  0.2620, -0.6464,  0.3599,-0.8610, -0.3869, -0.0271, -1.0254,  0.3280, -0.7500, -0.6859, -0.6912,0.3429, -0.6660, -0.2910, -0.6104,  0.3322, -0.4252,  2.4573, -0.8748,0.4891,  1.2888,  0.5780, -0.5509, -0.2263,  0.8127,  0.7048, -0.5498,0.3620, -0.2171, -0.2991,  0.2917,  1.2260,  0.2446,  1.2133, -0.0967,0.0474,  0.1971])

注意:

  • 数据下载地址:http://nlp.stanford.edu/data/glove.6B.zip
  • 设置了lower_case_backup=True后可以看见“ChIP”和“chip”的词嵌入向量是一样的。

预训练词向量

GloVe

torchtext.vocab.GloVe(name='840B', dim=300, **kwargs)

FastText

torchtext.vocab.FastText(language='en', **kwargs)

CharNGram

torchtext.vocab.CharNGram(**kwargs)

torchtext.vocab相关推荐

  1. 成功解决ImportError: cannot import name ‘GloVe‘ from ‘torchtext.legacy.vocab‘

    成功解决ImportError: cannot import name 'GloVe' from 'torchtext.legacy.vocab' 目录 解决问题 解决思路 解决方法 解决问题 Imp ...

  2. torchtext处理文本数据——将文本变为embedding(学习三)

    这篇博客是在之前的基础上构建完整的将 文本-> 下标->embedding 之前的完整代码 from torchtext import data import torchdef split ...

  3. torchtext建立词表build_vocab()时使用自己的word2vec模型

    代码如下: 如果对于torchtext本身不太了解,可以参考:torchtext处理文本数据--构造dataset读取文本(学习一):torchtext处理文本数据--构造dataset读取文本(学习 ...

  4. torchtext处理文本数据——使用自己的word2vec模型作为词向量建立词表(学习二)

    首先复制上一篇博客的完整代码,代码如下: 注:如果有不明白的地方请参考上一篇博客--torchtext处理文本数据--构造dataset读取文本(学习一) 数据源和解释都在上一篇博客中 from to ...

  5. 新闻主题分类任务——torchtext 库进行文本分类

    目录 简介 导入相关的torch工具包 访问原始数据集迭代器 使用原始训练数据集构建词汇表 生成数据批处理和迭代器 定义模型 定义函数来训练模型和评估结果 实例化并运行模型 使用测试数据集评估模型 测 ...

  6. 【PyTorch】7 文本分类TorchText实战——AG_NEWS四类别新闻分类

    使用 TorchText 进行文本分类 1.访问原始数据集迭代器 2. 准备数据处理管道 3. 生成数据批次和迭代器 4. 定义模型 5. 初始化一个实例 6. 定义训练模型和评估结果的函数 7. 拆 ...

  7. Torchtext下的AG_NEWS数据集进行分类(官方文档代码)

    原链接:Text classification with the torchtext library - PyTorch Tutorials 1.11.0+cu102 documentation (1 ...

  8. 自然语言处理(七):AG_NEWS新闻分类任务(TORCHTEXT)

    自然语言处理笔记总目录 关于新闻主题分类任务: 以一段新闻报道中的文本描述内容为输入,使用模型帮助我们判断它最有可能属于哪一种类型的新闻,这是典型的文本分类问题,,我们这里假定每种类型是互斥的,即文本 ...

  9. 使用TorchText库进行文本分类

    使用Torchtext库进行文本分类(官方的例子) 配置: torch                  1.8.1+cpu torchtext              0.9.1 官方文档的链接: ...

最新文章

  1. 【转】Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
  2. refineFace 笔记
  3. golang中的delve
  4. 阿里云 Serverless 事件总线 EventBridge 重磅发布
  5. HarmonyOS之常用组件TextField的功能和使用
  6. android点击左上角划出,使用Android中的Path和RectF在左上角右上角左下角绘制圆角...
  7. iOS几款实用的工具类demo
  8. PostgreSQ 存储过程 和 存储函数的区别
  9. 计算几何的模板(大神整理)
  10. Oracle 后台进程详解
  11. 秃顶之路-Day11
  12. 华为鸿蒙电池,4700mAh电池+新鸿蒙系统华为Mate40,华为Mate30再创超低价神话
  13. 如何用C#制作 微信个人机器人
  14. glusterfs架构和原理
  15. MongoDB语法案例
  16. net: mpls 是什么
  17. Unity如何实现VR漫游
  18. 全国大学生智能车竞赛比赛规则补充说明(1)
  19. 使用软碟通Ultraiso制作PE/系统盘的U盘系统--两个分区,一个启动/系统盘分区,一个任意格式分区
  20. 贾樟柯监制X水井坊呈现,微电影《以桌·会友》

热门文章

  1. halcon与C#混合编程(转)
  2. Mask Scoring RCNN训练自己的数据
  3. 插件分享 | 简单免杀绕过和利用上线的 GoCS
  4. kol营销推广 | 达人营销,如何精准且快速找达人?
  5. cad工具快速选择特性里面是空的解决方法
  6. 学习笔记 | 高效能团队打造
  7. GC参数解析 UseSerialGC、UseParNewGC、UseParallelGC、UseConcMarkSweepGC
  8. 计算机网络——移动IP
  9. Parsec [error-800] Internet无法访问的解决方案
  10. nnunet入门之一 (CT图像分割)