gpt4 book ai didi

python-3.x - 我在理解 sklearn 的 TfidfVectorizer 结果时遇到问题

转载 作者:行者123 更新时间:2023-12-05 07:21:27 24 4
gpt4 key购买 nike

给定一个包含 3 个文档的语料库,例如:

   sentences = ["This car is fast",
"This car is pretty",
"Very fast truck"]

我正在手动执行 tf-idf 的计算。

对于文档 1 和单词“car”,我可以找到:

TF = 1/4
IDF = log(3/2)
TF-IDF = 1/4 * log(3/2)

相同的结果应该适用于文档 2,因为它有 4 个词,其中一个是“汽车”。

我尝试在 sklearn 中应用它,代码如下:

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd

data = {'text': sentences}
df = pd.DataFrame(data)
tv = TfidfVectorizer()
tfvector = tv.fit_transform(df.text)
print(pd.DataFrame(tfvector.toarray(), columns=tv.get_feature_names()))

我得到的结果是:

        car     fast        is    pretty      this     truck      very
0 0.500000 0.50000 0.500000 0.000000 0.500000 0.000000 0.000000
1 0.459854 0.00000 0.459854 0.604652 0.459854 0.000000 0.000000
2 0.000000 0.47363 0.000000 0.000000 0.000000 0.622766 0.622766

我可以理解 sklearn 使用 L2 归一化,但是,前两个文档中“汽车”的 tf-idf 分数不应该相同吗?谁能帮助我理解结果?

最佳答案

这是因为归一化。如果添加参数norm=NoneTfIdfVectorizer(norm=None) ,您将得到以下结果,它与 car 具有相同的值

        car      fast        is    pretty      this     truck      very
0 1.287682 1.287682 1.287682 0.000000 1.287682 0.000000 0.000000
1 1.287682 0.000000 1.287682 1.693147 1.287682 0.000000 0.000000
2 0.000000 1.287682 0.000000 0.000000 0.000000 1.693147 1.693147

关于python-3.x - 我在理解 sklearn 的 TfidfVectorizer 结果时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56912742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com