在 pytorch Torchtext 中使用 Vocab 获取单词的频率
Posted
技术标签:
【中文标题】在 pytorch Torchtext 中使用 Vocab 获取单词的频率【英文标题】:Get frequency of words using Vocab in pytorch Torchtext 【发布时间】:2022-01-24 03:05:42 【问题描述】:如何在使用 build_vocab_from_iterator 创建的 torchtext vocab 中获取标记的频率?文档链接:https://pytorch.org/text/stable/vocab.html#torchtext.vocab.Vocab
def build_vocab(data_iter, tokenizer):
"""Builds vocabulary from iterator"""
vocab = build_vocab_from_iterator(
map(tokenizer, data_iter),
specials=["<unk>"],
min_freq=MIN_WORD_FREQUENCY,)
vocab.set_default_index(vocab["<unk>"])
return vocab
data_iter = get_data_iterator(ds_name, ds_type, data_dir)
tokenizer = get_english_tokenizer()
if not vocab:
vocab = build_vocab(data_iter, tokenizer)
【问题讨论】:
【参考方案1】:在构建词汇之后,您将无法获得频率,因为该数据在构建过程中会丢失。它只是检查令牌出现的次数是否超过min_freq
,如果是,则将其添加到词汇表中。
但是,您可以在构建词汇表之前获取标记的频率。一种方法是使用Counter
(Counter docs):
counter = Counter()
for text in data_iter:
counter.update(tokenizer(text))
您可以从计数器中获取标记的频率,然后从计数器中构建词汇表:
vocab = vocab.vocab(counter, min_freq=MIN_WORD_FREQUENCY)
【讨论】:
以上是关于在 pytorch Torchtext 中使用 Vocab 获取单词的频率的主要内容,如果未能解决你的问题,请参考以下文章
小白学习PyTorch教程十七 PyTorch 中 数据集torchvision和torchtext
小白学习PyTorch教程十七 PyTorch 中 数据集torchvision和torchtext
PyTorch-18 使用Torchtext进行语言翻译(德语到英语)
pytorch如何使用torchtext初始化LSTM的embedding层?如何用各种预训练模型初始化embedding层?