TF-IDF算法全称是"Term Frequency-Inverse Document Frequency",可译为"术语频率-文档逆向频率"。
它用来评估一个词对一个文档的代表性。TF-IDF值越高,说明该词在该文档中出现的频率越高,同时在整个语料库中出现的频率越低,表示其代表性越强。
原理
TF-IDF = TF * IDF
TF(Term Frequency):某个词在某篇文档中出现的频率
IDF(Inverse Document Frequency):逆向文档频率,反映了词在所有文档中的泛用程度
IDF = log(总文档数/ 包含该词的文档数+ 1)
应用
信息检索 :利用TF-IDF模型,评估查询词与文档的相关程度
文本挖掘 :基于TF-IDF模型提取文本关键词
混合推荐:训练用户TF-IDF向量,推荐相关项目
示例代码
scheme
Copy
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
'This is the first document.',
'This document is the second document.',
'And this is the third one.'
]
# TF-IDF vectors for each document
vector = TfidfVectorizer().fit_transform(corpus)
print(vector)
#[[0.65364373 0.8164966 0. ... 0. 0.8164966
0.65364373]
[0.5 parapaparaphrased ...
[0.8164966 0.65364373 0.]]
print(vectorizer.get_feature_names())
['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']
sklearn中提供了TfidfVectorizer实现TF-IDF算法。
TF-IDF 算法的一些推荐资料:
书籍:
《自然语言处理:理论与技术综述》
讲解了TF-IDF及其变种算法的原理和应用。
《Speech and Language Processing》
第三章讲解了TF-IDF及其在文本挖掘中的应用。
在线课程:
Andrew Ng 机器学习课程
中介绍了 TF-IDF 在文本处理中的应用。
coursera NLP 课程
中讲解了 TF-IDF 在文本预处理中的作用。
Stanford CS230 人工智能课程
中也有 TF-IDF 的案例与实战。
可学习的内容:
TF-IDF 的数学原理
TF-IDF 的变种算法,如IDF,TF*IDF等
在不同场景下的应用,如文本挖掘、搜索引擎等
用编程实现 TF-IDF 算法
TF-IDF 与其他特征 extraction 技术的比较
除此之外,可以:
在 Kaggle 与 GitHub 上查找 TF-IDF 的项目,查看源码
在 Kaggle 上查找相关数据集,练手实现 TF-IDF
查看 TF-IDF 的文章与博客,解决常见疑问
总的来说,从不同角度学习与实践 TF-IDF:
数学原理
变种算法
实际应用
编程实战
理论分析