主题
文本分类
文本分类(Text Classification)是 NLP 中最基础且常用的任务之一,目的是将一段文本划分到一个或多个预定义类别中。
应用场景包括:
- 情感分析(正面 / 负面)
- 新闻分类(科技 / 体育 / 财经 / 娱乐)
- 垃圾邮件识别(垃圾 / 正常)
- 用户评论标签分类
一、分类类型
二分类(Binary Classification)
每条文本只有两个可能类别,如情感分析:正面或负面。多分类(Multi-class Classification)
每条文本属于一个类别,但类别数大于 2,如新闻主题分类。多标签分类(Multi-label Classification)
文本可以同时属于多个类别,如文章可能同时涉及科技与财经。层次分类(Hierarchical Classification)
类别呈层级结构,例如:
txt
新闻
├─ 体育
│ ├─ 足球
│ └─ 篮球
└─ 科技
├─ AI
└─ 通信
二、特征表示
1. 传统方法
- 词袋模型(Bag-of-Words, BoW)
- TF-IDF 向量
适合使用逻辑回归、SVM、朴素贝叶斯等模型。
2. 深度学习方法
- 词向量(Word Embedding):Word2Vec、GloVe
- 上下文向量:BERT、RoBERTa 等 Transformer 模型
三、常用模型示例
1. 使用 scikit-learn(传统方法)
python
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
texts = ["我喜欢这部电影", "这部电影很差"]
labels = [1, 0]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(texts)
clf = LogisticRegression()
clf.fit(X, labels)
print(clf.predict(vectorizer.transform(["电影非常好看"])))
2. 使用 Hugging Face Transformers(深度学习)
python
from transformers import pipeline
classifier = pipeline("text-classification", model="distilbert-base-uncased-finetuned-sst-2-english")
result = classifier("I love this movie!")
print(result)
输出示例:
txt
[{'label': 'POSITIVE', 'score': 0.999}]
四、评价指标
- 准确率(Accuracy)
- 精确率(Precision)
- 召回率(Recall)
- F1-score
- 混淆矩阵(Confusion Matrix)
python
from sklearn.metrics import classification_report
print(classification_report(y_true, y_pred))
五、小结
- 文本分类是 NLP 中入门级任务,应用广泛;
- 可以使用传统 ML 方法或深度学习方法;
- 评价指标选择需根据任务类型与业务需求而定。