如何获得垃圾邮件中的突出词 - 非垃圾邮件分类器?

     2023-03-13     305

关键词:

【中文标题】如何获得垃圾邮件中的突出词 - 非垃圾邮件分类器?【英文标题】:How to get the prominent word in a spam - non spam classifier? 【发布时间】:2016-11-07 13:33:46 【问题描述】:

假设我有一个垃圾邮件-非垃圾邮件分类器。如果一封新邮件已经被分类为垃圾邮件,那么如何判断邮件中的单词主要由分类器将其分类为垃圾邮件。

例如,如果一封邮件包含以下文本:

Get 10000 dollars free by clicking here.

负责将邮件分类为垃圾邮件的主要词是“10000 美元免费”。

【问题讨论】:

您使用什么算法对垃圾邮件进行分类?您使用什么语言来构建模型?如果您是泛泛而谈,那么您的问题不是编程问题,最好发布在Cross Validated 【参考方案1】:

这完全取决于您的型号。不过,我会给你一个通用的、数学的方法,然后是几个实用的解决方案

数学解

让我们假设你的分类器是概率的,它为你的决策提供支持(这包括神经网络、朴素贝叶斯、lda、逻辑回归等)

f(x) = P(ham|x)

然后,如果您想回答“x 中的哪个维度(特征)最能改变我的决定”,您所要做的就是分析梯度(梯度,作为偏导数的向量,向您显示哪些维度对输出的影响最大) ,因此:

most_important_feature_if_it_is_classified_as_ham = arg max_i (grad_x[f])_i

如果是垃圾邮件则对称

most_important_feature_if_it_is_classified_as_spam = arg min_i (grad_x[f])_i

您所需要的只是区分您的模型的能力。这对于神经网络、朴素贝叶斯、lda 或逻辑回归等许多现有的网络也是可能的。

实用的解决方案。

我列出了一些或多或少直接计算典型模型的上述方法

线性模型(线性 SVM、逻辑回归等) - 您可以简单地查看权重向量并获取 arg max/arg min 值(因为这是梯度的确切值)。 随机森林 - 在这里你无法区分,因为你没有一个好的、连续的、支持的功能;但是您可以使用内部 features_importance_ measure(在 scikit-learn 的实现中可用),它简单地说明给定特征用于在整个训练集中进行分类的次数。 其他“黑盒”方法 - 您可以使用许多近似方案来进行特征重要性分析。特别是,您可以轻松地估计梯度本身,简单地,对于每个特征(单词)迭代整个训练集(或合理的子集) - 将此特征设置为 0(然后设置为 1)并检查更改了多少分类 - 这将粗略估计此功能的重要性(独立于其他功能)。

【讨论】:

【参考方案2】:

假设您已使用朴素贝叶斯分类器进行分类,我将回答这个问题。

朴素贝叶斯分类器是一种相当简单的算法,已成功应用于垃圾邮件检测领域。

朴素贝叶斯分类器基于条件概率并利用以下等式:

P(a|b) = P(b|a) * P(a) / P(b)

假设朴素贝叶斯分类器可以将一段文本(电子邮件)分为两类,垃圾邮件非垃圾邮件

上面提到的应用于垃圾邮件检测任务的方程可以翻译如下:

P(类|文本)=P(文本|类)* P(类)/P(文本)

由于文本是由单词组成的,它可以表示为单词的组合。文本 -> w1, w2, ....., wn

这意味着,

P (class | w1, w2, ..., wn) = P (w1, w2, ..., wn | class) * P (class) /p (w1, w2, ..., wn)

由于朴素贝叶斯分类器做出朴素假设,即单词在条件下相互独立,因此转换为:

P (class | w1, w2, ... , wn) = P (w1 | class) * P (w2 | class) * ... * P (wn | 类) * P (类)

对于所有类(在我们的示例中为“垃圾邮件”和“非垃圾邮件”)。

我删除了分母,因为它对所有概率都是通用的。

其中,P(类别)是给定类别(“垃圾邮件”和“非垃圾邮件”)的概率。假设您有 100 个训练示例,其中 60 个是垃圾邮件,40 个不是垃圾邮件,那么“垃圾邮件”和“非垃圾邮件”的类别概率分别为 0.6 和 0.4。

P (w | class) 是给定类别的单词的概率。在朴素贝叶斯分类器中,您计算​​给定类中每个单词的概率。

让我们考虑一下你给出的例子,

点击这里免费获得 10000 美元。

朴素贝叶斯分类器已经计算了在给定类别(垃圾邮件而非垃圾邮件)中您的句子中出现“Get”、“dollar”、“free”、“by”、“click”这些词的概率。

如果句子被归类为垃圾邮件,那么您可以通过找出它们在垃圾邮件和非垃圾邮件类别中的概率来找到对句子的垃圾邮件贡献最大的单词。

Here 你可以找到一个简单的朴素贝叶斯实现应用于电子邮件中的垃圾邮件检测任务。

【讨论】:

【参考方案3】:

网站Mail-sort classifier 包含有关如何构建邮件分类分类器的教程。正在使用在线分类器服务根据特定关键字的存在与否对每封邮件进行分类。

重要的是选择的关键字具有很强的辨别力。直方图是一种直观地检查每个关键字的信息价值的好方法。

确实是一种实用的方法。

【讨论】:

构建垃圾邮件分类器

...的算法,最后,我们可以用它来分类一封电子邮件是否是垃圾邮 查看详情

如何在垃圾邮件过滤中嵌入带有朴素贝叶斯分类器的关联规则?

】如何在垃圾邮件过滤中嵌入带有朴素贝叶斯分类器的关联规则?【英文标题】:HowcanIembedAssosciationruleswithNaiveBayesclassifierinspamfiltering?【发布时间】:2017-07-0215:49:16【问题描述】:实际上,我正在研究用于过滤邮件的朴素贝叶斯... 查看详情

如何更改 NLTK 中朴素贝叶斯分类器的平滑方法?

】如何更改NLTK中朴素贝叶斯分类器的平滑方法?【英文标题】:HowtochangesmoothingmethodofNaiveBayesclassifierinNLTK?【发布时间】:2013-05-2204:36:56【问题描述】:我已经使用NLTK朴素贝叶斯方法训练了一个垃圾邮件分类器。垃圾邮件集和... 查看详情

用c++完成贝叶斯分类算法的设计与实现

因为是本人的毕业设计,因此需要开题报告,类似于如何去完成该课题,流程是那些,有源代码是最好不过了,跪求,哪位大侠有的话可以发本人邮箱:476436042@qq.com,不胜感激~~~1.收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮... 查看详情

python垃圾邮件分类器(代码片段)

查看详情

...#xff1a;为了解决这样一个问题,我们首先要做的决定是如何选择并表达特征向量xxx。我们可以选择一个由100100100个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现,来获得我们的特征向量ÿ... 查看详情

垃圾邮件分类 - 机器学习

】垃圾邮件分类-机器学习【英文标题】:spamclassification-machinelearning【发布时间】:2014-04-2105:44:25【问题描述】:我必须使用一些分类器(例如朴素贝叶斯、SVM和另一个分类器)进行垃圾邮件检测应用程序并比较它们的效率,但... 查看详情

垃圾邮件分类(代码片段)

1.数据准备:收集数据与读取2.数据预处理:处理数据3.训练集与测试集:将先验数据按一定比例进行拆分。4.提取数据特征,将文本解析为词向量。5.训练模型:建立模型,用训练数据训练模型。即根据训练样本集,计算词项出... 查看详情

朴素贝叶斯应用:垃圾邮件分类(代码片段)

朴素贝叶斯应用:垃圾邮件分类 1.数据准备:收集数据与读取2.数据预处理:处理数据3.训练集与测试集:将先验数据按一定比例进行拆分。4.提取数据特征,将文本解析为词向量。5.训练模型:建立模型,用训练数据训练模... 查看详情

bayes朴素贝叶斯实现垃圾邮件分类

本文选取了25封垃圾邮件和25封正常邮件,随机产生了10组测试集和40组训练集,使用朴素贝叶斯方法实现了垃圾邮件的分类。 Bayes公式   遍历每篇文档向量,扫描所有文档的单词,合并集合去重,并生成最终的词... 查看详情

朴素贝叶斯应用:垃圾邮件分类

1.数据准备:收集数据与读取2.数据预处理:处理数据3.训练集与测试集:将先验数据按一定比例进行拆分。4.提取数据特征,将文本解析为词向量。5.训练模型:建立模型,用训练数据训练模型。即根据训练样本集,计算词项出... 查看详情

朴素贝叶斯应用:垃圾邮件分类

1.数据准备:收集数据与读取2.数据预处理:处理数据3.训练集与测试集:将先验数据按一定比例进行拆分。4.提取数据特征,将文本解析为词向量。5.训练模型:建立模型,用训练数据训练模型。即根据训练样本集,计算词项出... 查看详情

朴素贝叶斯应用:垃圾邮件分类

1.数据准备:收集数据与读取2.数据预处理:处理数据3.训练集与测试集:将先验数据按一定比例进行拆分。4.提取数据特征,将文本解析为词向量。5.训练模型:建立模型,用训练数据训练模型。即根据训练样本集,计算词项出... 查看详情

如何在 sklearn 中使用训练有素的 NB 分类器预测电子邮件的标签?

】如何在sklearn中使用训练有素的NB分类器预测电子邮件的标签?【英文标题】:HowtopredictLabelofanemailusingatrainedNBClassifierinsklearn?【发布时间】:2016-09-0107:33:36【问题描述】:我在电子邮件(垃圾邮件/非垃圾邮件)数据集上创建了... 查看详情

13-垃圾邮件分类2(代码片段)

13-垃圾邮件分类2TF-IDF概念是一种统计方法,用以评估一个词对于一个语料库中一份文件的重要程度。词的重要性随着在文件中出现的次数正比增加,同时随着它在语料库其他文件中出现的频率反比下降。就是说一个词在某一个... 查看详情

朴素贝叶斯应用:垃圾邮件分类(代码片段)

1.数据准备:收集数据与读取2.数据预处理:处理数据3.训练集与测试集:将先验数据按一定比例进行拆分。4.提取数据特征,将文本解析为词向量。5.训练模型:建立模型,用训练数据训练模型。即根据训练样本集,计算词项出... 查看详情

从标题中提取特征的垃圾邮件分类

】从标题中提取特征的垃圾邮件分类【英文标题】:Emailspamclassificationextractingfeaturesfromheader【发布时间】:2014-08-2621:54:19【问题描述】:我正在尝试构建垃圾邮件分类器。我一直在阅读一些研究论文,除了添加基于内容的功能外... 查看详情

使用朴素贝叶斯预测分类并处理不在训练集中的特征/词

...词中你看到一个新词wordX是你的模型根本没有看到的,你如何预 查看详情