词频-逆文档频率(Term Frequency-Inverse Document Frequency,

简介: 词频-逆文档频率(Term Frequency-Inverse Document Frequency,简称 TF-IDF)是一种统计方法,用以评估一个词对于一个文本或一组文本的重要性。

词频-逆文档频率(Term Frequency-Inverse Document Frequency,简称 TF-IDF)是一种统计方法,用以评估一个词对于一个文本或一组文本的重要性。

定义

TF-IDF = 词频(TF)× 逆文档频率(IDF)

  • 词频(TF):一个词在文本中出现的频率,反映了这个词在该文本中的重要性。
  • 逆文档频率(IDF):该词在全部文本中出现的次数的逆像,越少出现的词,IDF越高。

通俗的说,TF-IDF 的含义是:一个词在一篇文档中频繁出现,但在全部文档中很少出现,那么这个词很有代表性。

应用

  • 信息检索。评估查询词与文本的相关性
  • 文本分类。用于文本特征提取
  • 文本 clustering。文本之间的相似性计算
  • 链机翻译。在将整段文本转化为向量时使用

示例代码

scheme

Copy

```python 
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.' 
]
vectorizer = TfidfVectorizer()
vectors =  vectorizer.fit_transform(corpus)
print(vectors[0].toarray())
#[[0.          0.          0.5       0.8660254]
# [0.5         0.8660254  0.         0.   ]]
```
TfidfVectorizor 可以将文本转化为TF-IDF向量表示。



词频率(TF)与逆文本频率(IDF)是反映一个词语对于一篇文本重要性的两个指标。

TF是词频(Term Frequency),表示词条(关键字)在文本中出现的频率。这个数字通常会被归一化(一般是词频除以文章总词数),以防止它偏向长的文件。

公式:

$$

tf_{ij} = \frac{n_{i,j}}{\sum_{k}n_{k,j}}

$$

其中 ni,jn_{i,j} 是该词在文件djd_j中出现的次数,分母则是文件djd_j中所有词汇出现的次数总和。

IDF是逆向文件频率(Inverse Document Frequency),某一特定词语的IDF,可以由总文件数目除以包含该词语的文件的数目,再将得到的商取对数。

包含词条t的文本数量越少, IDF越大,说明词条具有很好的类别区分能力。

公式:

$$

idf_i = log\frac{\mid D \mid}{\mid\lbrace j:t_i \in d_j \rbrace\mid}

$$

其中,D\mid D \mid 是语料库中的文本总数。{j:tidj} \mid\lbrace j:t_i \in d_j \rbrace\mid 表示包含词语 tit_i 的文本数目(即 nin_i, j0j≠0 的文件数目)。如果该词语不在语料库中,就会导致分母为零,因此一般情况下使用 1+{j:tidj} 1 + \mid\lbrace j:t_i \in d_j \rbrace\mid 即:

$$

idf_i = log\frac{语料库的文本总数}{1 + 包含词条w的文本数}

$$

TF-IDF即为TF * IDF

某特定文本中出现频率高的词语,且该词语在整个文本语料库中的出现的频率较低,对应的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的变体算法,如TF,IDF等
  • 在不同领域的应用,如文本挖掘、搜索引擎等
  • 用编程实现TF-IDF算法
  • TF-IDF与其他特征提取技术的比较

除此以外,你也可以:

  • 在Kaggle和GitHub上查看TF-IDF相关项目源码
  • 在Kaggle上查找数据集,自己实现一个TF-IDF模型
  • 查看更多的文章和博客,解决常见问题

总的来说,你可以从以下方面学习和实践TF-IDF:

  • 理解数学原理
  • 掌握变种算法
  • 了解实际应用
  • 进行编程实战
  • 分析理论基础










目录
相关文章
|
5月前
文档的词频-反向文档频率(TF-IDF)计算
文档的词频-反向文档频率(TF-IDF)计算
44 5
|
机器学习/深度学习 人工智能 自然语言处理
Term Frequency-Inverse Document Frequency
TF-IDF算法全称是"Term Frequency-Inverse Document Frequency",可译为"术语频率-文档逆向频率"。
116 4
|
机器学习/深度学习 算法
Lecture 6:值函数近似
Lecture 6:值函数近似
|
数据挖掘
ENVI:分类后处理_小斑块去除_Majority/Minority处理、聚类处理、过滤处理等
ENVI:分类后处理_小斑块去除_Majority/Minority处理、聚类处理、过滤处理等
978 0
|
机器学习/深度学习 存储 并行计算
【Pytorch】Tensor的分块、变形、排序、极值与in-place操作
【Pytorch】Tensor的分块、变形、排序、极值与in-place操作
549 0
|
数据挖掘 索引
单细胞不同样本数据整合-解决AnnData合并时ValueError: cannot reindex from a duplicate axis问题
单细胞不同样本数据整合-解决AnnData合并时ValueError: cannot reindex from a duplicate axis问题
|
机器学习/深度学习 算法
随机装箱特征模型(Random Binning Feature Model)代码
在上述代码中,我们首先定义了一个名为RandomBinningFeatureModel的类,并在其__init__方法中接受一个参数num_bins,表示装箱的数量。然后,我们定义了一个名为fit_transform的方法,该方法接受原始输入数据x作为参数,并返回转换后的特征张量xb。
157 0
|
机器学习/深度学习 自然语言处理 Python
Word2Vec教程-Negative Sampling 负采样
这篇word2vec教程2中(教程1 Word2Vec教程-Skip-Gram模型),作者主要讲述了skip-gram 模型优化的策略-Negative Sampling,使得模型更加快速地训练。通过教程1,我们了解到word2vec它是一个庞大的神经忘网络! 例如,有一个包含10000个单词的词汇表,向量特征为300维,我们记得这个神经网络将会有两个weights矩阵----一个隐藏层和一个输出层。这两层都会有一个300x10000=3000000的weight矩阵。 在如此大的神经网络上进行梯度下降是非常慢的,更加严重的是,我们需要大量训练数据去调整weights和避免over-fitti
728 0
Word2Vec教程-Negative Sampling 负采样
|
机器学习/深度学习
word2vec -- 负采样 -- skip-gram
我以前写过一篇关于word2vec的文章,说实话,写的一坨,我决定以后写博客认认真真的去写。 我的博客来自于网上各位前辈的资料的整理,这位这位和这位翻译的让我对word2vec有了深入的理解。
2287 0