楼主: Ericge
88 0

[图行天下] TF-IDF 计算文本 图像的相似度的方法 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0137
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-8-24
最后登录
2018-8-24

楼主
Ericge 发表于 2025-11-27 14:56:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

TF-IDF 是一种常用于衡量文本中词汇重要性的统计方法,广泛应用于信息检索与文本挖掘领域。该方法结合了两个关键指标:词频(TF)和逆文档频率(IDF),通过两者的乘积来评估一个词语在特定文档中的显著程度。

词频(TF)指的是某个词在当前文档中出现的次数与其总词数的比例。例如,若“learning”在某段文字中频繁出现,则其 TF 值较高,表明它可能是该文档的核心词汇之一。

逆文档频率(IDF)则反映了一个词在整个语料库中的普遍性。如果一个词出现在大量文档中(如“is”、“the”等停用词),它的 IDF 值会较低;反之,越稀有的词,其 IDF 值越高,说明更具区分能力。

最终的 TF-IDF 值由 TF 与 IDF 相乘得到:

TF-IDF = TF × IDF

这种机制能够有效识别出那些在局部文档中高频出现但在全局语料中低频出现的关键词,从而提升文本分析的准确性。

下面是一个使用 Python 中 sklearn 库实现 TF-IDF 向量化的示例代码:

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

# 示例文本集合
all_texts = [
    "I love machine learning",
    "Machine learning is awesome",
    "I love coding in Python"
]

# 初始化TF-IDF向量化器
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(all_texts)

# 提取特征词列表
feature_names = vectorizer.get_feature_names_out()

# 获取对应的IDF数值
idf_values = vectorizer.idf_
print("IDF值:", idf_values)

# 构建特征词与IDF值的映射字典
idf_dict = dict(zip(feature_names, idf_values))
print("特征词-IDF字典:", idf_dict)

# 单独计算TF矩阵(基于相同的词汇表)
count_vectorizer = CountVectorizer(vocabulary=feature_names)
tf_matrix = count_vectorizer.fit_transform(all_texts)
print("TF矩阵:")
print(tf_matrix.toarray())

# 使用DataFrame格式化输出结果
tfidf_df = pd.DataFrame(
    tfidf_matrix.toarray(),
    columns=feature_names,
    index=[f"文档{i+1}" for i in range(len(all_texts))]
)

print("TF-IDF矩阵:")
print(tfidf_df)

print("\nIDF值详情:")
for word, idf in idf_dict.items():
    print(f"{word}: {idf:.4f}")

print("\nTF-IDF矩阵(数组形式):")
print(tfidf_matrix.toarray())
    

程序运行后输出如下结果:

TF矩阵:
[[0 0 0 0 1 1 1 0]
[1 0 0 1 1 0 1 0]
[0 1 1 0 0 1 0 1]]

IDF值: [1.69314718 1.69314718 1.69314718 1.69314718 1.28768207 1.28768207 1.28768207 1.69314718]

从结果可以看出,每个文档都被转换为一个高维向量,其中每一维对应一个词汇的 TF-IDF 权重。权重越高,表示该词对该文档的代表性越强。这种方法不仅适用于文本相似度计算,也可扩展至图像标签相似性分析等场景——只要图像能被转化为有意义的文本描述或标签序列,即可应用相同模型进行处理。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:相似度 Vocabulary Extraction transform Dataframe

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
扫码
拉您进交流群
GMT+8, 2026-2-8 17:01