教程 nlp tutorial

文本分类

文本分类(Text Classification)是 NLP 中最基础且常用的任务之一,目的是将一段文本划分到一个或多个预定义类别中。

应用场景包括:

  • 情感分析(正面 / 负面)
  • 新闻分类(科技 / 体育 / 财经 / 娱乐)
  • 垃圾邮件识别(垃圾 / 正常)
  • 用户评论标签分类

一、分类类型

  1. 二分类(Binary Classification)
    每条文本只有两个可能类别,如情感分析:正面或负面。

  2. 多分类(Multi-class Classification)
    每条文本属于一个类别,但类别数大于 2,如新闻主题分类。

  3. 多标签分类(Multi-label Classification)
    文本可以同时属于多个类别,如文章可能同时涉及科技与财经。

  4. 层次分类(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 方法或深度学习方法;
  • 评价指标选择需根据任务类型与业务需求而定。