You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python NLTK的朴素贝叶斯算法获取单文本分类结果的正确概率

解决方案

NLTK 内置的NaiveBayesClassifier类自带概率查询接口,不需要额外修改模型训练逻辑,只需要替换原来的分类调用方法即可:

核心原理

你当前用的classifier.classify()方法只输出概率最高的类别,调用classifier.prob_classify(输入特征)会返回完整的类别概率分布对象,可直接查询每个类别的置信度。

代码修改示例

替换你原代码末尾的分类调用部分即可:

# 优化后的文本预处理函数,和训练阶段逻辑对齐,避免概率偏差
def form_sent(sent):
    # 分词+转小写,和训练时预处理一致
    words = word_tokenize(sent.lower())
    # 过滤停用词和特殊符号,和训练逻辑对齐
    filtered_words = [word for word in words if word not in stop_words]
    return {word: True for word in filtered_words}

text = form_sent("Quando estiver concluído, o Rodoanel terá 174 quilômetros de extensão, interligando dez rodovias. O governador Alckmin tem demonstrado que é possível construir e preservar o meio ambiente, como foi feito, por exemplo, na nova pista da Imigrantes. Processos técnicos muito modernos impediram que as águas drenadas durante as escavações contaminas sem os córregos da região.")

# 获取概率分布对象
prob_dist = classifier.prob_classify(text)
# 原分类结果(和classify方法输出完全一致)
a = prob_dist.max()
# 获取对应类别的概率值
pos_prob = prob_dist.prob("pos")
neg_prob = prob_dist.prob("neg")

# 输出结果示例
print(f"最终分类结果:{a}")
print(f"分类为正面的概率:{pos_prob:.2%}")
print(f"分类为负面的概率:{neg_prob:.2%}")

注意事项

如果不优化form_sent的预处理逻辑,会因为训练和预测时的特征提取规则不一致,导致输出的概率值存在偏差,建议保持训练、预测两个阶段的预处理逻辑完全统一。


内容的提问来源于stack exchange,提问作者Luís Henrique Martins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:45:07