torchtext.vocab.build_vocab_from_iterator的引數介紹以及使用
阿新 • • 發佈:2022-12-10
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_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']
剛剛接觸這個領域,有什麼錯誤大佬們隨時指出