TfIdfVectorizer¶
TfIdfVectorizer - 9¶
版本¶
域:
main
自版本:
9
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的运算符自**版本 9**起可用。
摘要¶
此转换从输入序列中提取 n-gram 并将其保存为向量。输入可以是一维或二维张量。对于一维输入,输出是该输入的 n-gram 表示。对于二维输入,输出也是一个二维张量,其第 i 行是第 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-gram 分别为 [94, 12] 和 [17, 28],索引为 [0, 3] 和 [1, 4]。如果跳过的数量变为 0,则生成的 2-gram 为 [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-gram 时,我们可能会考虑所有跳过 S 的情况。
如果模式为“TF”,则上面使用的示例为真。如果模式为“IDF”,则所有大于 1 的计数将被截断为 1,并且 weights 中的第 i 个元素将用于按比例(通过乘法)缩放 pool 中第 i 个 n-gram 的计数。如果模式为“TFIDF”,则此运算符首先计算所有 n-gram 的计数,然后按 weights 属性中关联的值对其进行缩放。
只能设置 pool_strings 和 pool_int64s 中的一个。如果设置了 pool_int64s,则输入应为整数张量。如果设置了 pool_strings,则输入必须为字符串张量。
属性¶
max_gram_length - INT(必需)
最大 n-gram 长度。如果此值为 3,则将使用 3-gram 生成输出。
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-gram,以及具有 skip_count=0 和 skip_count=1 的 3-gram
min_gram_length - INT(必需)
最小 n-gram 长度。如果此值为 2 且 max_gram_length 为 3,则输出可能包含 2-gram 和 3-gram 的计数。
mode - STRING(必需)
加权标准。它可以是“TF”(词频),“IDF”(逆文档频率)和“TFIDF”(TF 和 IDF 的组合)之一
ngram_counts - INTS(必需)
1-gram、2-gram 等在 pool 中的起始索引。当确定两个连续的 n-gram 集合之间的边界时,它很有用。例如,如果 ngram_counts 为 [0, 17, 36],则 pool 中 1-gram/2-gram/3-gram 的第一个索引(基于零)分别为 0/17/36。此格式本质上与 CSR(或 CSC)稀疏矩阵格式相同,我们选择使用它是因为它的普及。
ngram_indexes - INTS(必需)
int64 列表(类型:AttributeProto::INTS)。此列表与指定的“pool_*”属性并行。ngram_indexes 中的第 i 个元素表示输出张量中第 i 个 n-gram 的坐标。
pool_int64s - 整数 :
从训练集中学习到的 int64 n 元组列表。必须存在此属性或 pool_strings 属性,但不能同时存在两者。它是一个一维张量,从所有 1 元组的集合开始,到 n 元组的集合结束。pool 中的第 i 个元素存储应映射到输出向量中 ngram_indexes[i] 坐标的 n 元组。
pool_strings - 字符串 :
从训练集中学习到的字符串 n 元组列表。必须存在此属性或 pool_int64s 属性,但不能同时存在两者。它是一个一维张量,从所有 1 元组的集合开始,到 n 元组的集合结束。pool 中的第 i 个元素存储应映射到输出向量中 ngram_indexes[i] 坐标的 n 元组。
weights - 浮点数 :
浮点数列表。此属性存储 pool 中每个 n 元组的权重。weights 中的第 i 个元素是 pool 中第 i 个 n 元组的权重。其长度等于 ngram_indexes 的大小。默认情况下,weights 是一个全为 1 的张量。当 mode 为“IDF”或“TFIDF”时,此属性用于缩放关联的词频。
输入¶
X (异构) - T
n 元组提取的输入
输出¶
Y (异构) - T1
n 元组结果
类型约束¶
T in (
tensor(int32)
,tensor(int64)
,tensor(string)
)输入为 UTF-8 字符串或 int32/int64
T1 in (
tensor(float)
)一维浮点数张量