C语言 什么时候使用tf-idf的对数基数?

7eumitmz  于 2023-11-17  发布在  其他
关注(0)|答案(1)|浏览(97)

我正在开发一个简单的搜索引擎,我使用TF-IDF公式来衡量搜索词的重要性。我看到人们使用不同的公式基础,但我没有看到任何解释何时使用。这有关系吗?你有什么建议吗?
我当前的实现使用math. h库的常规log()函数

s4n0splo

s4n0splo1#

TF-IDF文献通常使用基数2,尽管一个常见的实现sklearn使用自然的分数,例如。只是考虑到基数越低,分数越大,这可能会影响搜索结果集的截断分数。
请注意,从数学的Angular 来看,基数总是可以在以后更改的。从一个基数转换到另一个基数很容易,因为下面的等式成立:

log_a(x)/log_a(y) = log_b(x)/log_b(y)

字符串
x1c 0d1x的数据
你总是可以从一个碱基转换到另一个碱基。这实际上很容易。只需使用这个公式:

log_b(x) = log_a(x)/log_a(b)



工程师们通常更喜欢2和10这样的基数。2是中场休息的好数字,10是我们的数字系统。数学家更喜欢自然对数,因为它使微积分容易得多。函数b^x的导数是k*b^x,其中b是常数。但是如果b等于e(自然对数)则k1
假设你想用log()发送5.63的2-对数,就用log(5.63)/log(2)
如果你有需要的话,就用这个函数来做任意的基:

// Returns the b-logarithm of x
double logb(double x, double b) {
    return log(x)/log(b);
}

相关问题