>第一条)“狐狸跳过另一只狐狸.”
>第二条)“一个猎人看到了一只狐狸.”
第一条被分成单词(在后续词语中删除):
> [“狐狸”,“跳”,“另一个”,“狐狸”].
第二条分为两个词:
> [“猎人”,“看”,“狐狸”].
这两篇文章产生了以下词频和文档频率计数器:
>狐狸(字频:3,文档频率:2)
>跳(字频:1,文档频率:1)
>另一个(字频:1,文档频率:1)
>猎人(字频:1,文档频率:1)
>见(字频:1,文档频率:1)
我已经阅读了关于df-idf测量但是它不适用于这里,因为我正在删除停用词,因此像“a”和“the”这样的单词不会出现在计数器中.
例如,我有一篇新的文章文章说“猎人爱狐狸”,我怎么想出一个措施,说这篇文章与之前看到的很相似?
另一个例子,我有一篇新的文章说“鹿很有趣”,然后这篇文章是一篇全新的文章,相似性应为0.
我想我在某种程度上需要对词频和文档频率计数器值进行求和,但是什么是一个好的公式?
解决方法
这是通过从类标记文档的训练集计算先验来估计的,其中给出文档D我们知道它的类C.
P(C|D) = P(D|C) * P(D) (1)
朴素贝叶斯认为术语是独立的,在这种情况下你可以写P(D | C)为
P(D|C) = \prod_{t \in D} P(t|C) (2)
P(t | C)可以简单地通过计算一个项在给定类中出现的次数来计算,例如你希望足球这个词在属于班(类)体育的文件中会出现很多次.
当涉及到另一个因素P(D)时,你可以通过计算从每个班级给出的标签文件的数量来估计它,可能你有更多的体育文章而不是金融文章,这使你相信有更高的可能性一个看不见的文件被归类为体育类别.
将因子重要性(idf)或术语依赖性等因素纳入等式(1)非常容易.对于idf,您可以将其作为术语采样事件添加到集合中(与该类无关).
对于术语依赖,您必须插入形式为P(u | C)* P(u | t)的概率,这意味着您对不同的术语u进行采样并将其更改(转换)为t.
朴素贝叶斯分类器的标准实现可以在Stanford NLP package,Weka和Scipy中找到.