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)