文本分类怎么入门?用 TF-IDF 和朴素贝叶斯训练问题分类器

用本地 TF-IDF 与朴素贝叶斯训练问题分类器,检查独立预测、未知词和混合诉求的处理边界。

想把短问题分到“物流”和“售后”,可以先训练一个 TF-IDF 加 MultinomialNB 的小模型。它适合验证数据、标签和预测链路,运行在本地,不需要大模型 API;正式能否上线,要看独立样本表现,而不是程序能否返回标签。

先写清类别定义和样本

物流包括运输位置、到货时间;售后包括退货、退款及商品故障。下面样本是人为构造的教学数据,已经按空格分词,不能用八句话估计真实准确率。新类别、混合诉求以及语料分词需另行处理。

文本分类怎么入门?用 TF-IDF 和朴素贝叶斯训练问题分类器

python -m pip install scikit-learn

训练词表和朴素贝叶斯分类器

把向量器和分类器放在同一 Pipeline,让训练时拟合的词表自然延续到预测阶段。MultinomialNB 接收非负特征;不要在此流程中直接放入会产生负数的标准化特征。

from sklearn.pipeline import make_pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report

train = ["物流 到货 时间", "物流 快递 位置", "物流 发货 查询",
         "物流 包裹 运输", "售后 退款 申请", "售后 退货 流程",
         "售后 商品 故障", "售后 维修 申请"]
labels = ["物流"] * 4 + ["售后"] * 4
test = ["查询 快递 到货", "申请 商品 退款"]
truth = ["物流", "售后"]
model = make_pipeline(
    TfidfVectorizer(tokenizer=str.split, token_pattern=None),
    MultinomialNB(alpha=1.0),
)
model.fit(train, labels)
predicted = model.predict(test)
print(list(zip(test, predicted.tolist())))
print(classification_report(truth, predicted, zero_division=0))
print("类别顺序", model.classes_)
print("全新词语的概率", model.predict_proba(["外星 星际 请求"]))

核对预测,识别“强行分类”

验证时逐条检查测试原句、真值和预测,不把训练样本再拿来证明模型有效。两条测试在本例规则下分别应归物流和售后;若不同,先确认标签顺序和训练输入,再检查向量器词表。

未知词可能全部不在词表中,转换后成为零向量,模型仍可能按先验输出一个类别。因此“返回类别”不等于“识别到诉求”。“包裹延迟了,我要退款”同时涉及两类,单标签方案还需要约定优先级或转人工;不能假装一个最大概率解决所有业务。

让模型接受正式评估

下一步收集脱敏并人工标好的独立问题,按来源或用户划分训练与测试,检查各类召回率和误分类清单。相同用户或重复文本跨集合会让成绩过于乐观。

本文只用玩具数据示范训练与测试接口,不提供业务准确率承诺。正式流程应保留不确定类别和人工复核入口,分词、标签规则或词表变化后重新评估,不沿用旧报告。

资料与适用版本

以下官方资料核对于 2026 年 10 月 1 日;安装和界面以实际使用版本为准。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30201.html

赞 (0)
AI小管家的头像AI小管家
文本词频怎么统计?用 CountVectorizer 区分出现次数与文档频率
上一篇 1天前
Dify 工作流和智能体怎么选?用固定路由与动态工具调用判断
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部