mindspore.dataset.TextBaseDataset.build_vocab
- mindspore.dataset.TextBaseDataset.build_vocab(columns, freq_range, top_k, special_tokens, special_first)[源代码]
迭代源数据集对象获取数据并构建词汇表。 源数据集要求的是文本类数据集。
收集数据集中所有的不重复单词。返回 top_k 个最常见的单词组成的词汇表(如果指定了 top_k )。
- 参数:
columns (Union[str, list[str]]) - 指定 build_vocab 操作的输入列,会从该列获取数据构造词汇表。
freq_range (tuple[int]) - 由(min_frequency, max_frequency)组成的整数元组,代表词汇出现的频率范围,在这个频率范围的词汇会被保存下来。 取值范围需满足:0 <= min_frequency <= max_frequency <= 单词总数,其中min_frequency、max_frequency的默认值分别设置为0、单词总数。
top_k (int) - 使用 top_k 个最常见的单词构建词汇表。假如指定了参数 freq_range ,则优先统计给定频率范围内的词汇,再根据参数 top_k 选取最常见的单词构建词汇表。 如果 top_k 的值大于单词总数,则取所有单词构建词汇表。
special_tokens (list[str]) - 指定词汇表的特殊标记(special token),如 ‘[UNK]’、 ‘[SEP]’。
special_first (bool) - 是否将参数 special_tokens 指定的特殊标记添加到词汇表的开头。如果为True则放到开头,否则放到词汇表的结尾。
- 返回:
构建好的词汇表。
样例:
>>> import numpy as np >>> >>> def gen_corpus(): ... # key: word, value: number of occurrences, reason for using letters is so their order is apparent ... corpus = {"Z": 4, "Y": 4, "X": 4, "W": 3, "U": 3, "V": 2, "T": 1} ... for k, v in corpus.items(): ... yield (np.array([k] * v, dtype='S'),) >>> column_names = ["column1"] >>> dataset = ds.GeneratorDataset(gen_corpus, column_names) >>> dataset = dataset.build_vocab(columns=["column1"], ... freq_range=(1, 10), top_k=5, ... special_tokens=["<pad>", "<unk>"], ... special_first=True)