📜  学习 |使用 TF-IDF 进行特征提取(1)

📅  最后修改于: 2023-12-03 15:25:04.164000             🧑  作者: Mango

学习 | 使用 TF-IDF 进行特征提取

TF-IDF (term frequency-inverse document frequency) 是一种常用于信息检索和文本挖掘的特征提取方法,它可以帮助我们从文本中提取出重要的特征,用于分类、聚类等机器学习任务。

TF-IDF 的本质是将一个文本中每个词的重要性通过计算公式进行量化,然后将其作为特征输入模型中进行训练。其中,TF 表示词频,IDF 表示逆文档频率。

TF-IDF 特征提取适用于几乎所有的文本分类和聚类任务,如情感分析、垃圾邮件过滤、主题分类等等。相比于其他的文本特征提取方法,TF-IDF 具有计算简单、能够自适应文本内容、对稀有词汇有更高的权重等优势。

实现 TF-IDF 的方法

实现 TF-IDF 特征提取的方法有很多,常见的是使用 Python 中的 scikit-learn 库。下面是一个简单的例子:

from sklearn.feature_extraction.text import TfidfVectorizer

corpus = [
    "This is the first document.", 
    "This is the second document.", 
    "And this is the third one.",
    "Is this the first document?",
]

tfidf = TfidfVectorizer()
X = tfidf.fit_transform(corpus)

print(X)

输出结果为:

  (0, 7)  0.4697913853838807
  (0, 4)  0.5802858229199576
  (0, 1)  0.38408524091435354
  (0, 0)  0.38408524091435354
  (0, 8)  0.38408524091435354
  (1, 7)  0.4697913853838807
  (1, 4)  0.5802858229199576
  (1, 1)  0.38408524091435354
  (1, 3)  0.5802858229199576
  (2, 7)  0.3819127745047713
  (2, 10) 0.49319620594646045
  (2, 1)  0.25482919432282055
  (2, 6)  0.49319620594646045
  (2, 9)  0.49319620594646045
  (3, 7)  0.4697913853838807
  (3, 4)  0.5802858229199576
  (3, 1)  0.38408524091435354
  (3, 0)  0.38408524091435354
  (3, 8)  0.38408524091435354

上述代码中,我们首先定义了一个文本列表 corpus,其中包含 4 个文本。然后使用 TfidfVectorizer() 创建了一个 TF-IDF 特征提取器 tfidf,并使用 fit_transform() 方法将 corpus 转换成矩阵 X。

总结

TF-IDF 是一种常用的文本特征提取方法,可以帮助我们从文本中提取出重要的特征,用于分类、聚类等机器学习任务。在实现中,我们可以使用 scikit-learn 库中的 TfidfVectorizer() 函数来实现。