TfIdfVectorizer

TfIdfVectorizer - 9

版本

  • 名称: TfIdfVectorizer (GitHub)

  • : main

  • 起始版本: 9

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的运算符自 版本 9 起可用。

摘要

此转换器从输入序列中提取 n-grams 并将它们保存为向量。输入可以是 1-D 或 2-D 张量。对于 1-D 输入,输出是该输入的 n-gram 表示。对于 2-D 输入,输出也是一个 2-D 张量,其 i-th 行是第 i 个输入行的 n-gram 表示。更具体地说,如果输入形状是 [C],则相应的输出形状将是 [max(ngram_indexes) + 1]。如果输入形状是 [N, C],则此运算符会生成一个 [N, max(ngram_indexes) + 1] 的张量。

与标准的 n-gram 提取不同,在这里,从原始序列中提取 n-gram 的索引不一定是连续的数字。索引之间的不连续性由跳数控制。如果跳数是 2,我们在扫描原始序列时应该跳过两个标记。让我们考虑一个例子。假设输入序列是 [94, 17, 36, 12, 28],跳数是 2。关联的 2-grams 分别是 [94, 12] 和 [17, 28],索引分别为 [0, 3] 和 [1, 4]。如果跳数变为 0,生成的 2-grams 分别是 [94, 17]、[17, 36]、[36, 12]、[12, 28],索引分别为 [0, 1]、[1, 2]、[2, 3]、[3, 4]。

输出向量(记为 Y)存储每个 n-gram 的计数;Y[ngram_indexes[i]] 表示找到第 i 个 n-gram 的次数。ngram_indexes 属性用于确定索引 i 与相应 n-gram 的输出坐标之间的映射。如果 pool_int64s 是 [94, 17, 17, 36],ngram_indexes 是 [1, 0],ngram_counts=[0, 0],那么 Y[0](Y 中的第一个元素)和 Y[1](Y 中的第二个元素)分别是 [17, 36] 和 [94, 17] 的计数。在 pool_strings/pool_int64s 中找不到的 n-gram 应被忽略,并且不会影响输出。请注意,在生成 n-grams 时,我们可能会考虑所有高达 S 的跳数。

上面使用的示例在 mode 为“TF”时是正确的。如果 mode 为“IDF”,所有大于 1 的计数都将被截断为 1,并且 weights 中的第 i 个元素将用于缩放(通过乘法)pool 中第 i 个 n-gram 的计数。如果 mode 为“TFIDF”,此运算符首先计算所有 n-grams 的计数,然后使用 weights 属性中的相关值进行缩放。

只能设置 pool_strings 或 pool_int64s 中的一个。如果设置了 pool_int64s,输入应为整数张量。如果设置了 pool_strings,输入必须是字符串张量。

属性

  • max_gram_length - INT (必需)

    最大 n-gram 长度。如果此值为 3,则将使用 3-grams 生成输出。

  • max_skip_count - INT (必需)

    从 X 构建 n-gram 时要跳过的项目(整数/字符串)的最大数量。如果 max_skip_count=1,min_gram_length=2,max_gram_length=3,此运算符可能会生成 skip_count=0 和 skip_count=1 的 2-grams,以及 skip_count=0 和 skip_count=1 的 3-grams。

  • min_gram_length - INT (必需)

    最小 n-gram 长度。如果此值为 2 且 max_gram_length 为 3,输出可能包含 2-grams 和 3-grams 的计数。

  • mode - STRING (必需)

    加权标准。可以是“TF”(词频)、“IDF”(逆文档频率)和“TFIDF”(TF 和 IDF 的组合)之一。

  • ngram_counts - INTS (必需)

    1-grams、2-grams 等在 pool 中的起始索引。这在确定两个连续 n-gram 集合之间的边界时很有用。例如,如果 ngram_counts 为 [0, 17, 36],则 1-gram/2-gram/3-gram 在 pool 中的第一个索引(零基)分别为 0/17/36。此格式本质上与 CSR(或 CSC)稀疏矩阵格式相同,我们选择使用它是因为它的流行度。

  • ngram_indexes - INTS (必需)

    int64 列表(类型:AttributeProto::INTS)。此列表与指定的“pool_*”属性并行。ngram_indexes 中的第 i 个元素指示第 i 个 n-gram 在输出张量中的坐标。

  • pool_int64s - INTS :

    从训练集中学习到的 int64 n-grams 列表。必须存在此属性或 pool_strings 属性,但不能同时存在。它是一个 1-D 张量,从所有 1-grams 的集合开始,到 n-grams 的集合结束。pool 中的第 i 个元素存储应映射到输出向量中 ngram_indexes[i] 坐标的 n-gram。

  • pool_strings - STRINGS :

    从训练集中学习到的字符串 n-grams 列表。必须存在此属性或 pool_int64s 属性,但不能同时存在。它是一个 1-D 张量,从所有 1-grams 的集合开始,到 n-grams 的集合结束。pool 中的第 i 个元素存储应映射到输出向量中 ngram_indexes[i] 坐标的 n-gram。

  • weights - FLOATS :

    浮点数列表。此属性存储 pool 中每个 n-gram 的权重。weights 中的第 i 个元素是 pool 中第 i 个 n-gram 的权重。其长度等于 ngram_indexes 的大小。默认情况下,weights 是一个全一的张量。当 mode 为“IDF”或“TFIDF”时,此属性用于缩放关联的词计数。

输入

  • X (异构) - T

    用于 n-gram 提取的输入

输出

  • Y(异构)- T1

    N-gram 结果

类型约束

  • T 在( tensor(int32), tensor(int64), tensor(string) )中

    输入是字符串 UTF-8 或 int32/int64

  • T1 在( tensor(float) )中

    浮点数的 1-D 张量