【问题标题】:interpret TF-IDF scores from sklearn TfidfVectorizer从 sklearn TfidfVectorizer 解释 TF-IDF 分数
【发布时间】:2019-08-13 00:32:06
【问题描述】:

我正在努力弄清楚如何解释和协调来自 sklearn TfidfVectorizer 的 TF-IDF 分数。 为了说明,我有一个非常简单的例子:

from sklearn.feature_extraction.text import 
TfidfVectorizer
data = ['dog is sitting on bed', 'cat is 
sitting on sofa', 'where is that dog']

vector = TfidfVectorizer()
tfidf = vector.fit_transform(data)
df = pd.DataFrame(tfidf.toarray(), columns = 
vector.get_feature_names())
df

结果是: print(df)

如果我在第一句话中手动计算假设“狗”的 TF-IDF,我会计算 TF 1/5 = 0.2,因为“狗”是 5 个词之一。然后我会计算“狗”的 IDF:它出现在 3 个句子中有 2 个 log(3/2) = 0.176。 然后我乘以 0.2 * 0.176 = 0.0352。 我的问题是,第一行中“狗”的 0.433067 数字是如何计算的?

【问题讨论】:

    标签: python scikit-learn tfidfvectorizer


    【解决方案1】:

    您对tf-idf 的理解不同于sklearn 的实现。

    根据documentation,三件事会导致您得到不同的结果:

    1. 术语频率计算为给定文档中术语的原始计数

    2. 平滑应用于 IDF 值

    3. 执行标准化

    要重温您的示例,让我们首先以这种方式修改TfidfVectorizer

    vector = TfidfVectorizer(norm=None)
    

    执行fit_transform后,我们得到这个输出:

            bed       cat       dog   is        on   sitting      sofa      that     where
    0  1.693147  0.000000  1.287682  1.0  1.287682  1.287682  0.000000  0.000000  0.000000
    1  0.000000  1.693147  0.000000  1.0  1.287682  1.287682  1.693147  0.000000  0.000000
    2  0.000000  0.000000  1.287682  1.0  0.000000  0.000000  0.000000  1.693147  1.693147
    

    对于第一句和单词dog,词频为1,因为单词出现一次。 IDF不等于log(3/2),而是log(4/3);分子和分母都加 1 以防止除以 0(可以通过传递 smooth_idf=False 禁用此行为)。

    1 + log(4/3) 大约等于1.287682,正如预期的那样。

    如果我们然后执行 L2 归一化:

    df.iloc[0] / ((df.iloc[0] ** 2).sum() ** 0.5)
    

    我们看到我们得到了和原来一样的输出:

    bed        0.569431
    cat        0.000000
    dog        0.433067
    is         0.336315
    on         0.433067
    sitting    0.433067
    sofa       0.000000
    that       0.000000
    where      0.000000
    Name: 0, dtype: float64
    

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 2021-02-13
      • 2018-07-11
      • 2016-09-07
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 2023-04-06
      相关资源
      最近更新 更多