使用朴素贝叶斯算法考虑垃圾邮件或非垃圾邮件的文本分类问题。
问题如下:
如果在该组词中你看到一个新词 wordX 是你的模型根本没有看到的(所以你甚至没有估计它的拉普拉斯平滑概率),你如何对文档进行预测?
通常要做的事情就是忽略那个 wordX,即使它在当前文本中被看到,因为它没有相关的概率?即我知道有时使用拉普拉斯平滑来尝试解决这个问题,但如果这个词绝对是新词怎么办?
我想到的一些解决方案:
1)在估计分类时忽略那些词(最简单,但有时是错误的......?但是,如果训练集足够大,这可能是最好的做法,因为我认为假设你的特征是合理的如果您有 1M 或 20M 数据,则选择的东西足够好)。
2)将该词添加到您的模型中并完全更改您的模型,因为词汇表发生了变化,所以概率必须随处变化(这确实有问题,因为这可能意味着您必须经常更新模型,特别是如果您的分析 1M 文档, 说)
我对此进行了一些研究,阅读了 Dan Jurafsky NLP 和 NB 的一些幻灯片,观看了 coursera 上的一些视频,并浏览了一些研究论文,但我找不到我认为有用的东西。我觉得这个问题一点也不新鲜,应该有一些东西(启发式..?)。如果没有,那也太棒了!
希望这是对社区有用的帖子,并提前致谢。
PS:为了让问题更明确一点,我见过的一个解决方案是,假设我们在垃圾邮件中看到一个未知的新词 wordX,然后对于那个词,我们可以做 1/ count(spams) + |Vocabulary + 1|,我在做类似的事情时遇到的问题是,这是否意味着我们改变了词汇的大小,现在,我们分类的每个新文档都有一个新的特征和词汇?该视频似乎试图解决该问题,但我不确定这是否是一件好事,或者 2,也许我误解了它: