真假新闻分类实战:朴素贝叶斯 vs 轻量级大模型(Sentence-BERT)
本文实现了真假新闻分类的两个方案并进行了对比;使用 Sentence-BERT 模型可以无需 GPU 微调,即可取得媲美全 BERT 的效果;这类“轻量大模型”方案,适用于中小项目、快速开发、资源有限的场景。用于企业资讯审核、内容推荐过滤、新闻平台初筛等场景可作为 BERT 微调前的 baseline 或工程应用替代方案。
本文将介绍如何使用传统机器学习方法和轻量级预训练模型对真假新闻进行文本分类,通过朴素贝叶斯与 Sentence-BERT + Logistic Regression 的对比,帮助你快速构建高性能 NLP 分类器。
在信息泛滥的时代,真假新闻混杂,对公共舆论、社会稳定构成潜在威胁。如何通过自然语言处理手段识别假新闻,已成为 NLP 领域的重要研究方向。
传统方法如朴素贝叶斯(Naive Bayes)虽然简单,但在部分场景下表现依然不错。与此同时,近年来流行的预训练语言模型(如 BERT、GPT)也为文本分类带来了突破性进展。
但并非所有项目都能承受“全量大模型”训练成本。有没有一种快速、轻便、效果不错的替代方案?
答案是:Sentence-BERT + 轻量分类器(如 Logistic Regression)
我们将基于 Kaggle 的真假新闻数据集(Fake.csv 和 True.csv),实现两个模型对比方案:
| 模型 | 特点 |
|---|---|
| 朴素贝叶斯 | 快速、简单、经典 NLP 基线 |
| Sentence-BERT + LR | 预训练嵌入模型 + 轻量逻辑回归分类器 |
两者将在同一数据预处理流程下进行训练与评估。
实验设计
我们将基于 Kaggle 的真假新闻数据集(Fake.csv 和 True.csv),实现两个模型对比方案:
| 模型 | 特点 |
|---|---|
| 朴素贝叶斯 | 快速、简单、经典 NLP 基线 |
| Sentence-BERT + LR | 预训练嵌入模型 + 轻量逻辑回归分类器 |
两者将在同一数据预处理流程下进行训练与评估。
数据展示与预处理
-
假新闻样本数:23,481 条
-
真新闻样本数:21,417 条
-
每条样本包括标题(title)和正文(text)
-
数据合并方式:
title + text -
清洗规则:小写化、去非字母、空格标准化
-
划分方式:训练集 80%,测试集 20%,标签均衡
示例代码片段:
data['content'] = data['title'].fillna('') + ' ' + data['text'].fillna('')
def clean_text(s):
s = s.lower()
s = re.sub(r'[^a-z\s]', ' ', s)
s = re.sub(r'\s+', ' ', s).strip()
return s
data['content'] = data['content'].apply(clean_text)
方案一:朴素贝叶斯(Naive Bayes)
我们使用 TfidfVectorizer 提取文本特征(最多5000词),再使用 MultinomialNB 训练模型。
nb_pipeline = Pipeline([
('tfidf', TfidfVectorizer(max_features=5000, stop_words='english')),
('nb', MultinomialNB())
])
nb_pipeline.fit(X_train, y_train)
评估结果:
| 指标 | 数值 |
|---|---|
| 准确率 | 93.67% |
| 假新闻 F1 | 94% |
| 真新闻 F1 | 93% |
方案二:Sentence-BERT + Logistic Regression
为什么选 SBERT?
-
预训练模型提取语义嵌入
-
不需要微调,只需一次推理
-
嵌入速度快,适合中小型项目
我们使用 paraphrase-MiniLM-L6-v2 模型,一次性生成所有样本的向量表示。
sbert = SentenceTransformer('paraphrase-MiniLM-L6-v2')
X_train_emb = sbert.encode(X_train.tolist(), show_progress_bar=True)
X_test_emb = sbert.encode(X_test.tolist(), show_progress_bar=True)
lr_clf = LogisticRegression(max_iter=1000)
lr_clf.fit(X_train_emb, y_train)
评估结果:
| 指标 | 数值 |
|---|---|
| 准确率 | 96.44% |
| 假新闻 F1 | 97% |
| 真新闻 F1 | 96% |
混淆矩阵对比
朴素贝叶斯混淆矩阵:
[[4432 264]
[ 304 3980]]
SBERT + LR 混淆矩阵:
[[4526 170]
[ 150 4134]]
从数据可见,SBERT 对于真假新闻的识别能力更加精准,误判更少。
模型效果对比
| 模型 | 准确率 | 优势 |
|---|---|---|
| 朴素贝叶斯 | 93.67% | 快速、可解释性强、计算资源需求低 |
| SBERT + LR | 96.44% | 准确率高、语义理解强、部署便捷 |
如果你追求快速上线 + 准确率适中,朴素贝叶斯是可靠选择;
如果你追求高精度,又无法承受全参数 BERT 微调成本,SBERT 是极佳折中方案。
总结与推荐
-
本文实现了真假新闻分类的两个方案并进行了对比;
-
使用 Sentence-BERT 模型可以 无需 GPU 微调,即可取得 媲美全 BERT 的效果;
-
这类“轻量大模型”方案,适用于中小项目、快速开发、资源有限的场景。
推荐:
-
用于企业资讯审核、内容推荐过滤、新闻平台初筛等场景
-
可作为 BERT 微调前的 baseline 或工程应用替代方案
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)