簡體   English   中英

在 pytorch Torchtext 中使用 Vocab 獲取單詞的頻率

[英]Get frequency of words using Vocab in pytorch Torchtext

如何在使用 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)

構建詞匯,您將無法獲得頻率,因為該數據在構建過程中丟失。 它只是檢查令牌出現的次數是否超過min_freq ,如果是,則將其添加到詞匯表中。

但是,您可以在構建詞匯表之前獲取標記的頻率。 一種方法是使用CounterCounter docs ):

counter = Counter()
for text in data_iter:
    counter.update(tokenizer(text))

您可以從計數器獲取標記的頻率,然后從計數器構建詞匯表:

vocab = vocab.vocab(counter, min_freq=MIN_WORD_FREQUENCY)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM