首页 > 其他分享 >torchtext.vocab.build_vocab_from_iterator的参数介绍以及使用

torchtext.vocab.build_vocab_from_iterator的参数介绍以及使用

时间:2022-12-10 13:11:06浏览次数:34  
标签:vocab iterator token specials torchtext 字典

build_vocab_from_iterator的参数介绍以及使用

因为使用的时候不知道specials参数是什么意思,网上也没找到一个比较好的解释,所以记录一下


这个函数的作用是从一个可迭代对象中统计token的频次,并返回一个vocab(词汇字典)

torchtext.vocab.build_vocab_from_iterator(iterator: Iterable, min_freq: int = 1, 
        specials: Optional[List[str]] = None, special_first: bool = True, 
        max_tokens: Optional[int] = None) → torchtext.vocab.vocab.Vocab

上述是官网API接口的定义形式,参数有五个,返回值是Vocab类型实例,五个参数分别是:

  • iterator:一个用于创建vocab(词汇字典)的可迭代对象
  • min_freq:最小频数。只有在文本中出现频率大于等于min_freq的token才会被保留下来
  • specials:特殊标志,字符串列表。用于在词汇字典中添加一些特殊的token/标记,比如最常用的'<unk>',用于代表词汇字典中未存在的token,当然也可以用自己喜欢的符号来代替(PS:用"鸡你太美"也行),具体的意义也取决于用的人。(PS:'<unk>'一般用于表示未知token,也可以用"鸡你太美"表示未知token)
  • special_first:表示是否将specials放到字典的最前面,默认是True
  • max_tokens:即限制一下这个词汇字典的最大长度。且这个长度包含的specials列表的长度

以上需要注意的几点:

  • 若是specials设置为了False,则直接默认加在末尾
  • 通过该方法建立的vocab默认按照频次从大到小的顺序排列,若specials_firstTrue,则specials在最前面
  • max_tokens也是按照vocab的顺序,从前往后的保存\
  • 一般使用\<unk\>时,通常配合set_default_index()一起使用

举例:

import torchtext

sentences = [["The", "cat", "sat", "on", "the", "mat"], ["The", "dog", "played", "with", "cat", "ball"], ['cat', 'like', 'dog', 'kidding']]
# min_feq设置最小频率为1,即只要出现过的都不会在这里被筛掉
# max_tokens设置为10,表示词典的长度为10,但是因为有了specials,所以真正的词典中有效token为9个
vocab = torchtext.vocab.build_vocab_from_iterator(sentences, min_freq=1, max_tokens=10, specials=['<unk>'])
# 设置默认索引,若是索引的单词不在词典内,则返回0,此例中0与<unk>对应
vocab.set_default_index(0)

# 查看词典(字典形式)
vocab.get_stoi()
# {'dog': 3,'<unk>': 0, 'kidding': 5, 'cat': 1, 'ball': 4, 'The': 2, 'like': 6, 'mat': 7, 'on': 8, 'played': 9}

# 查看字典(列表形式)
vocab.get_itos()
# ['<unk>', 'cat', 'The', 'dog', 'ball', 'kidding', 'like', 'mat', 'on', 'played']

刚刚接触这个领域,有什么错误大佬们随时指出

标签:vocab,iterator,token,specials,torchtext,字典
From: https://www.cnblogs.com/Fortunater/p/16971419.html

相关文章