TfidVectorizer为Pandas DF中的Ngrams返回0,具有重复的ID

2024-04-28 10:19:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个分组数据框:

id    text
100   he loves ice cream
100   she loves ice
100   i hate avocado

我用这个函数提取bigrams、frequencies和tfidf分数:

^{pr2}$

结果如下:

id    ngram         frequency    tfidf
100   hate avocado  1            0
100   he loves      1            .3
100   i hate        1            0
100   ice cream     1            .3
100   loves ice     2            .6 
100   she loves     1            0 

tfidf的分数是人为的。所以,函数就是正确地找到频率。然后查找分组df第一行的tfidf分数(包括出现在多行中的bigram)。最后,它找不到第二行和第三行所特有的bigram的tfidf分数。在

此外,虽然tfidf分数是人为设计的,但是对于在特定文档中具有相同频率的任何bigram来说,它们确实是相同的。因此,第一行中频率为1的任何二元曲线的tfidf分数为.3。在另一行中频率为1的任何bigram的tfidf分数可能为.24。这很奇怪,因为每一个二元曲线的频率都是不同的。在

两个问题:

  1. 为什么第二行和第三行的tfidf分数找不到?在
  2. 为什么在特定文档中以相同频率出现的特定bigram的tfidf分数是相同的?在

谢谢你们所有人的洞察力!在


Tags: 函数文档id分数频率tfidfhecream
1条回答
网友
1楼 · 发布于 2024-04-28 10:19:09
print(df)

    id  text
0   100 he loves ice cream
1   100 she loves ice
2   100 i hate avocado

TF-IDF计算为一个词的重要性,相对于一个词在一个文档中的出现频率,它与文档的其余部分相比。如果您想计算TF-IDF,我建议您使用scikit learnTfidfVectorizer()

^{pr2}$

上面的矩阵给出了每个文档中每个单词的相对重要性,如果这个单词没有出现在文档中,它的值为零。在

您也可以使用scikit learnCountVectorizer()以相同的方式计算频率

相关问题 更多 >