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
放到字典的最前面,默认是Truemax_tokens
:即限制一下这个词汇字典的最大长度。且这个长度包含的specials列表的长度
以上需要注意的几点:
- 若是
specials
设置为了False
,则直接默认加在末尾 - 通过该方法建立的vocab默认按照频次从大到小的顺序排列,若
specials_first
为True
,则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