我有一个分组数据框:
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。这很奇怪,因为每一个二元曲线的频率都是不同的。在
两个问题:
谢谢你们所有人的洞察力!在
TF-IDF计算为一个词的重要性,相对于一个词在一个文档中的出现频率,它与文档的其余部分相比。如果您想计算TF-IDF,我建议您使用scikit learn
^{pr2}$TfidfVectorizer()
上面的矩阵给出了每个文档中每个单词的相对重要性,如果这个单词没有出现在文档中,它的值为零。在
您也可以使用scikit learn
CountVectorizer()
以相同的方式计算频率相关问题 更多 >
编程相关推荐