TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于信息检索和文本挖掘的常用加权技术。它反映了一个词对于一个文档集或一个语料库中的其中一份文档的重要性。TF-IDF由两部分组成:词频(TF,Term Frequency)和逆文档频率(IDF,Inverse Document Frequency)。
一、词频(TF)
词频是一个词在文档中出现的次数,它可以按词数归一化,以避免对长文档的偏好。例如,对于一个文档,如果一个词出现了5次,而文档总词数为100,那么该词的词频为0.05。
二、逆文档频率(IDF)
逆文档频率是一个词语普遍重要性的度量。它是通过将语料库中的文档总数除以包含该词语之文档的数目,然后将得到的商取对数得到的。这个比例越高,词语的IDF值越低,表示该词语在文档中越常见,在文档集合中的重要性越低。
三、TF-IDF计算公式
对于一个给定的词 t 和一个文档 d ,其TF-IDF值计算如下:
TF(t, d) = 词t在文档d中出现的次数 / 文档d中的总词数
IDF(t) = log(语料库中的文档总数 / 包含词t的文档数目)
TF-IDF(t, d) = TF(t, d) * IDF(t)
四、应用
TF-IDF通常用于以下几个方面:
- 文本挖掘:帮助识别文档中的重要词语。
- 搜索引擎:用于评估搜索查询中的每个词的重要性。
- 特征提取:在机器学习算法中,如分类或聚类任务,作为文本数据的特征向量。
五、注意事项
TF-IDF对常用词(如“的”、“和”等)赋予的权重较低,因为这些词在语料库中出现的频率较高,但对文档的主题贡献较小。
- 它不适用于评估短文本,因为短文本中词频的波动可能会很大。
- TF-IDF不考虑词语的语义和上下文关系,因此可能无法准确反映词义的细微差别。
六、Python应用
可以使用scikit-learn
库中的TfidfVectorizer
类来实现TF-IDF。以下是使用TfidfVectorizer
的一个基本示例:
from sklearn.feature_extraction.text