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