在 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

基于TorchText的PyTorch文本分类

PyTorch-18 使用Torchtext进行语言翻译(德语到英语)

pytorch入门与实战---torchtext的应用

pytorch如何使用torchtext初始化LSTM的embedding层?如何用各种预训练模型初始化embedding层?