文本分类
文本分类(Text Classification)是 NLP 中最基础且常用的任务之一,目的是将一段文本划分到一个或多个预定义类别中。
应用场景包括:
- 情感分析(正面 / 负面)
- 新闻分类(科技 / 体育 / 财经 / 娱乐)
- 垃圾邮件识别(垃圾 / 正常)
- 用户评论标签分类
一、分类类型
-
二分类(Binary Classification)
每条文本只有两个可能类别,如情感分析:正面或负面。 -
多分类(Multi-class Classification)
每条文本属于一个类别,但类别数大于 2,如新闻主题分类。 -
多标签分类(Multi-label Classification)
文本可以同时属于多个类别,如文章可能同时涉及科技与财经。 -
层次分类(Hierarchical Classification)
类别呈层级结构,例如:
新闻
├─ 体育
│ ├─ 足球
│ └─ 篮球
└─ 科技
├─ AI
└─ 通信
`
二、特征表示
1. 传统方法
- 词袋模型(Bag-of-Words, BoW)
- TF-IDF 向量
适合使用逻辑回归、SVM、朴素贝叶斯等模型。
2. 深度学习方法
- 词向量(Word Embedding):Word2Vec、GloVe
- 上下文向量:BERT、RoBERTa 等 Transformer 模型
三、常用模型示例
1. 使用 scikit-learn(传统方法)
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(深度学习)
from transformers import pipeline
classifier = pipeline("text-classification", model="distilbert-base-uncased-finetuned-sst-2-english")
result = classifier("I love this movie!")
print(result)
输出示例:
[{'label': 'POSITIVE', 'score': 0.999}]
四、评价指标
- 准确率(Accuracy)
- 精确率(Precision)
- 召回率(Recall)
- F1-score
- 混淆矩阵(Confusion Matrix)
from sklearn.metrics import classification_report
print(classification_report(y_true, y_pred))
五、小结
- 文本分类是 NLP 中入门级任务,应用广泛;
- 可以使用传统 ML 方法或深度学习方法;
- 评价指标选择需根据任务类型与业务需求而定。
相关内容
- 基础概念 本章介绍自然语言处理(NLP)的基础概念、发展历程和关键研究方向。
- 数据集与评估 本章介绍 NLP 中常用数据集、评估指标及方法,为模型训练与性能评估提供基础。
- 部署与工程化 本章介绍 NLP 模型的部署方式、工程化实践以及在生产环境中应用的注意事项。
- 向量表示与嵌入 本章介绍文本向量化的原理,包括词向量(Word Embedding)、上下文表示(Contextual Embedding)以及主流模型(Word2Vec、Gl...
- 术语表 NLP 常用术语解释,包括模型、任务、指标、技术等,便于快速查阅。
- 模型与训练 本章介绍 NLP 模型的训练流程,包括预训练、微调、常用架构及训练技巧。