TF-IDF特征提取 用sklearn提取tfidf特征

本文介绍了如何利用sklearn库中的TfidfVectorizer进行TF-IDF特征提取,涉及词频(TF)、文件频率(DF)、逆向文件频率(IDF)的概念,并探讨了n-gram的重要性。同时,讲解了TF-IDF的计算方式和TfidfVectorizer类的使用,包括参数max_df、min_df和ngram_range的设置。

n-gram

此处的TF和IDF的公式,都是sklearn中的tfidf使用的公式。和最原始的公式会有些出入。并且根据一些参数的不同而不同。

名词的解释:
corpus:指所有documents的集合
documents:词语的有序排列。可以是一篇文章、一个句子之类。

词频(TF)

在一份给定的文件里,词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率。这个数字是对词数(term count)的归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否。)对于在某一特定文件里的词语 t 来说, tft 可表示为:

tfd,t=nd,tknd,k

其中 t
TF-IDF(词频 - 逆文档频率)是一种用于信息检索与数据挖掘的常用加权技术,可用于特征提取,结合相似度评估能实现推荐功能,以下是使用TF-IDF特征提取和相似度评估实现推荐的具体方法: ### 数据准备 收集并整理用于推荐的文档集合,这些文档可以是文章、新闻、商品描述等。例如,在文章推荐系统中,需要收集大量的新闻文章作为语料库。 ### 文本预处理 对收集到的文档进行预处理,包括去除标点符号、停用词(如“的”“是”“在”等)、词干提取(将单词还原为其基本形式)等操作,以提高特征提取的准确性。 ### 特征提取TF-IDF计算) 使用TF-IDF算法计算每个文档中每个词语的TF-IDF值,以评估词语在文档中的重要性。TF-IDF的计算公式为:$TFIDF(t,d)=TF(t,d)×IDF(t)$,其中$TF(t,d)$表示词语$t$在文档$d$中的词频,$IDF(t)$表示词语$t$的逆文档频率 [^3]。 以下是使用Python的`sklearn`库实现TF-IDF特征提取的示例代码: ```python from sklearn.feature_extraction.text import TfidfVectorizer # 示例文档 documents = [ "自然语言处理是人工智能领域的一个重要分支", "文本摘要技术可以自动提取文档的关键信息", "TF-IDF算法在文本摘要中扮演重要角色" ] # 创建TF-IDF向量化器 vectorizer = TfidfVectorizer() # 计算TF-IDF tfidf_matrix = vectorizer.fit_transform(documents) # 获取所有特征(词汇) features = vectorizer.get_feature_names_out() # 打印每个文档的TF-IDF值 for i in range(len(documents)): print(f"文档{i}的TF-IDF值:") for j in range(len(features)): print(f"{features[j]}: {tfidf_matrix[i, j]}") ``` ### 相似度评估 计算文档之间的相似度,常用的相似度度量方法有余弦相似度、欧氏距离等。余弦相似度通过计算两个向量的夹角余弦值来衡量它们的相似度,值越接近1表示越相似。 以下是使用Python的`sklearn`库计算余弦相似度的示例代码: ```python from sklearn.metrics.pairwise import cosine_similarity # 计算文档之间的余弦相似度 similarity_matrix = cosine_similarity(tfidf_matrix, tfidf_matrix) # 打印相似度矩阵 print("文档之间的余弦相似度矩阵:") print(similarity_matrix) ``` ### 推荐生成 根据相似度评估结果,为目标文档或用户提供推荐。例如,在文章推荐系统中,可以根据用户历史阅读文章与候选文章的相似度,为用户推荐相似度较高的文章。 以下是一个简单的文章推荐示例代码: ```python # 假设用户历史阅读的文章索引为0 target_index = 0 # 获取与目标文章相似度最高的文章索引(排除自身) similar_indices = similarity_matrix[target_index].argsort()[::-1][1:] # 推荐前2篇文章 top_n = 2 recommended_indices = similar_indices[:top_n] # 打印推荐文章 print(f"为您推荐的文章:") for index in recommended_indices: print(documents[index]) ``` ### 总结 通过以上步骤,可以使用TF-IDF特征提取和相似度评估实现推荐功能。该方法简单易懂、易于实现,在基于内容的推荐系统中具有广泛的应用 [^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值