我正在使用朴素贝叶斯进行文本分类,这就是我为指定类别中的每个术语创建初始权重的方式:
- term1:term 1 存在的次数/categoryA 中的文档数
- term2:term 2 存在的次数/categoryA 中的文档数
term3:term 3 存在的次数/categoryA 中的文档数
term1:term 1 存在的次数/categoryB 中的文档数
- term2:term 2 存在的次数/categoryB 中的文档数
- term3:term 3 存在的次数/categoryB 中的文档数
对于新的测试文档,我根据测试文档中是否存在该术语来调整权重:
- term1:存在于测试文档中,所以我对 categoryA_term1 使用与上面相同的权重
- term2:在测试文档中不存在,所以我对 categoryA_term2 使用 1-weight
term3:在测试文档中不存在,所以我对 categoryA_term3 使用 1-weight
term1:存在于测试文档中,所以我对 categoryB_term1 使用与上面相同的权重
- term2:在测试文档中不存在,所以我对 categoryB_term2 使用 1-weight
- term3:存在于测试文档中,所以我对 categoryB_term2 使用与上面相同的权重
然后我将每个类别的权重相乘。这在我创建每个句子的虚拟训练/测试文档时有效,但是当我为训练/测试文档实现真实文档时,当我将它们全部组合在一起时,我一直保持为零。这是因为概率是如此之小,以至于在乘以这么多小数之后,python 只是收敛到零?我被困住了,我一直遇到同样的零问题:(我非常感谢你的帮助!