torchtext.vocab
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
。
- index:整型。默认的索引。也可以传入
示例:
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相关推荐
- 成功解决ImportError: cannot import name ‘GloVe‘ from ‘torchtext.legacy.vocab‘
成功解决ImportError: cannot import name 'GloVe' from 'torchtext.legacy.vocab' 目录 解决问题 解决思路 解决方法 解决问题 Imp ...
- torchtext处理文本数据——将文本变为embedding(学习三)
这篇博客是在之前的基础上构建完整的将 文本-> 下标->embedding 之前的完整代码 from torchtext import data import torchdef split ...
- torchtext建立词表build_vocab()时使用自己的word2vec模型
代码如下: 如果对于torchtext本身不太了解,可以参考:torchtext处理文本数据--构造dataset读取文本(学习一):torchtext处理文本数据--构造dataset读取文本(学习 ...
- torchtext处理文本数据——使用自己的word2vec模型作为词向量建立词表(学习二)
首先复制上一篇博客的完整代码,代码如下: 注:如果有不明白的地方请参考上一篇博客--torchtext处理文本数据--构造dataset读取文本(学习一) 数据源和解释都在上一篇博客中 from to ...
- 新闻主题分类任务——torchtext 库进行文本分类
目录 简介 导入相关的torch工具包 访问原始数据集迭代器 使用原始训练数据集构建词汇表 生成数据批处理和迭代器 定义模型 定义函数来训练模型和评估结果 实例化并运行模型 使用测试数据集评估模型 测 ...
- 【PyTorch】7 文本分类TorchText实战——AG_NEWS四类别新闻分类
使用 TorchText 进行文本分类 1.访问原始数据集迭代器 2. 准备数据处理管道 3. 生成数据批次和迭代器 4. 定义模型 5. 初始化一个实例 6. 定义训练模型和评估结果的函数 7. 拆 ...
- Torchtext下的AG_NEWS数据集进行分类(官方文档代码)
原链接:Text classification with the torchtext library - PyTorch Tutorials 1.11.0+cu102 documentation (1 ...
- 自然语言处理(七):AG_NEWS新闻分类任务(TORCHTEXT)
自然语言处理笔记总目录 关于新闻主题分类任务: 以一段新闻报道中的文本描述内容为输入,使用模型帮助我们判断它最有可能属于哪一种类型的新闻,这是典型的文本分类问题,,我们这里假定每种类型是互斥的,即文本 ...
- 使用TorchText库进行文本分类
使用Torchtext库进行文本分类(官方的例子) 配置: torch 1.8.1+cpu torchtext 0.9.1 官方文档的链接: ...
最新文章
- 【转】Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
- refineFace 笔记
- golang中的delve
- 阿里云 Serverless 事件总线 EventBridge 重磅发布
- HarmonyOS之常用组件TextField的功能和使用
- android点击左上角划出,使用Android中的Path和RectF在左上角右上角左下角绘制圆角...
- iOS几款实用的工具类demo
- PostgreSQ 存储过程 和 存储函数的区别
- 计算几何的模板(大神整理)
- Oracle 后台进程详解
- 秃顶之路-Day11
- 华为鸿蒙电池,4700mAh电池+新鸿蒙系统华为Mate40,华为Mate30再创超低价神话
- 如何用C#制作 微信个人机器人
- glusterfs架构和原理
- MongoDB语法案例
- net: mpls 是什么
- Unity如何实现VR漫游
- 全国大学生智能车竞赛比赛规则补充说明(1)
- 使用软碟通Ultraiso制作PE/系统盘的U盘系统--两个分区,一个启动/系统盘分区,一个任意格式分区
- 贾樟柯监制X水井坊呈现,微电影《以桌·会友》
热门文章
- halcon与C#混合编程(转)
- Mask Scoring RCNN训练自己的数据
- 插件分享 | 简单免杀绕过和利用上线的 GoCS
- kol营销推广 | 达人营销,如何精准且快速找达人?
- cad工具快速选择特性里面是空的解决方法
- 学习笔记 | 高效能团队打造
- GC参数解析 UseSerialGC、UseParNewGC、UseParallelGC、UseConcMarkSweepGC
- 计算机网络——移动IP
- Parsec [error-800] Internet无法访问的解决方案
- nnunet入门之一 (CT图像分割)