【问题标题】:Get frequency of words using Vocab in pytorch Torchtext在 pytorch Torchtext 中使用 Vocab 获取单词的频率
【发布时间】: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)

【问题讨论】:

    标签: pytorch torchtext


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2019-11-18
      • 1970-01-01
      • 2021-03-28
      • 2020-04-20
      相关资源
      最近更新 更多