数据结构与算法之决策树 文本分类 TF IDF / 词向量特征 适配

数据结构与算法阿木 发布于 2025-07-12 8 次阅读


摘要:

文本分类是自然语言处理领域的一个重要任务,它旨在将文本数据自动归类到预定义的类别中。本文将探讨如何使用TF-IDF和词向量作为特征,结合决策树模型进行文本分类。我们将首先介绍TF-IDF和词向量的概念,然后实现一个简单的决策树分类器,并展示如何将特征提取与分类模型相结合。

关键词:文本分类,TF-IDF,词向量,决策树,特征提取

一、

文本分类是信息检索、文本挖掘和机器学习等领域的基础任务。随着互联网的快速发展,文本数据量呈爆炸式增长,如何高效地对大量文本进行分类成为了一个重要问题。本文将介绍如何使用TF-IDF和词向量作为特征,结合决策树模型进行文本分类。

二、TF-IDF

TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本表示方法,它考虑了词语在文档中的频率和在整个文档集合中的分布。TF-IDF的目的是使重要的词语具有更高的权重,而那些常见但不太重要的词语则具有较低的权重。

1. 计算TF-IDF

python

from sklearn.feature_extraction.text import TfidfVectorizer

示例文本数据


texts = [


"This is the first document.",


"This document is the second document.",


"And this is the third one.",


"Is this the first document?"


]

创建TF-IDF向量器


vectorizer = TfidfVectorizer()

将文本转换为TF-IDF特征向量


tfidf_matrix = vectorizer.fit_transform(texts)

打印特征向量


print(tfidf_matrix.toarray())


2. TF-IDF的应用

TF-IDF可以用于文本分类、聚类、信息检索等任务。在文本分类中,我们可以使用TF-IDF特征向量作为输入,训练一个分类器。

三、词向量

词向量是一种将词语映射到高维空间中的向量表示方法,它能够捕捉词语的语义信息。常见的词向量模型有Word2Vec、GloVe等。

1. 使用Word2Vec

python

from gensim.models import Word2Vec

示例文本数据


texts = [


"This is the first document.",


"This document is the second document.",


"And this is the third one.",


"Is this the first document?"


]

创建Word2Vec模型


model = Word2Vec(texts, vector_size=100, window=5, min_count=1, workers=4)

获取词向量


word_vectors = model.wv

打印词向量


print(word_vectors["document"])


2. 词向量的应用

词向量可以用于文本分类,通过将文本中的每个词语转换为词向量,然后计算整个文本的向量表示。

四、决策树文本分类

决策树是一种常用的分类算法,它通过一系列的规则将数据集分割成不同的子集,直到满足停止条件。

1. 决策树实现

python

from sklearn.tree import DecisionTreeClassifier

使用TF-IDF特征向量作为输入


X = tfidf_matrix.toarray()

创建决策树分类器


clf = DecisionTreeClassifier()

训练分类器


clf.fit(X, y) y为标签数据

预测


predictions = clf.predict(X)


2. 决策树评估

为了评估分类器的性能,我们可以使用准确率、召回率、F1分数等指标。

python

from sklearn.metrics import accuracy_score, recall_score, f1_score

计算指标


accuracy = accuracy_score(y, predictions)


recall = recall_score(y, predictions, average='macro')


f1 = f1_score(y, predictions, average='macro')

print(f"Accuracy: {accuracy}")


print(f"Recall: {recall}")


print(f"F1 Score: {f1}")


五、结合TF-IDF和词向量

在实际应用中,我们可以将TF-IDF和词向量结合使用,以提高分类器的性能。

1. 结合TF-IDF和Word2Vec

python

将文本转换为Word2Vec特征向量


word_vectors = model.wv


word_vectors_array = np.array([word_vectors[word] for word in vectorizer.get_feature_names()])

将TF-IDF特征向量与Word2Vec特征向量相加


combined_features = np.hstack((tfidf_matrix.toarray(), word_vectors_array))

使用结合后的特征训练分类器


clf.fit(combined_features, y)


2. 分类器评估

使用相同的评估指标评估结合后的分类器性能。

六、结论

本文介绍了如何使用TF-IDF和词向量作为特征,结合决策树模型进行文本分类。通过实验证明,结合TF-IDF和词向量可以有效地提高分类器的性能。在实际应用中,可以根据具体任务和数据集的特点,选择合适的特征提取方法和分类算法。

注意:本文中的代码仅为示例,实际应用中可能需要根据具体情况进行调整。