TfIdfVectorizer

TfIdfVectorizer - 9

版本

  • 名称: TfIdfVectorizer (GitHub)

  • 域名: main

  • since_version: 9

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

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

摘要

此转换从输入序列中提取n-gram并将其保存为向量。输入可以是1-D或2-D张量。对于1-D输入,输出是该输入的n-gram表示。对于2-D输入,输出也是一个2-D张量,其第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-grams时,我们可能会考虑所有最多到S的跳数。

如果模式是“TF”,则上述示例为真。如果模式是“IDF”,所有大于1的计数将被截断为1,并且权重中的第i个元素将用于(通过乘法)缩放池中第i个n-gram的计数。如果模式是“TFIDF”,此操作符首先计算所有n-gram的计数,然后通过权重属性中的相关值进行缩放。

只能设置 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-gram,以及skip_count=0和skip_count=1的3-gram

  • 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-gram、2-gram等的起始索引。这在确定两个连续的n-gram集合之间的边界时非常有用。例如,如果ngram_counts是[0, 17, 36],则池中1-gram/2-gram/3-gram的第一个索引(从零开始)分别为0/17/36。这种格式基本上与CSR(或CSC)稀疏矩阵格式相同,我们选择使用这种格式是因为它的流行性。

  • ngram_indexes - INTS(必填):

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

  • pool_int64s - INTS :

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

  • pool_strings - 字符串 :

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

  • weights - FLOATS :

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

输入

  • X (异构) - T:

    用于n-gram提取的输入

输出

  • Y (异构) - T1:

    Ngram 结果

类型约束

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

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

  • T1 在 ( tensor(float) ) 中:

    一维浮点数张量