对客户电子邮件进行分类

数据挖掘 机器学习 nlp 特征选择 特征提取 多标签分类
2021-09-24 12:20:11

我正在为一家公司开展一个项目,该公司需要对有关贷款和保险的客户电子邮件进行分类。电子邮件是从 13 个类别标签中唯一标记的。数据集中的记录数为3000所有的电子邮件都不是正确的英文或格式,有很多拼写错误和不需要的特征,如印度名字、地址等。数据集非常不平衡前 3 个类别的频率组合高达 2000 个,有 2 个类别频率范围为 40-80。我设法对数据进行了预处理,并删除了大部分不需要的内容和拼写错误。

我使用LinearSVC创建了一个监督学习模型,该模型在验证数据集上给出了大约78%的结果,之后我使用了 XGBoost 分类器,将准确率提高到了80%这两个模型都使用Tfidf 向量,将预处理的一元和二元(停用词删除和词干文本)作为输入。我用 chi2 尝试过SMOTE、TruncatedSVD 和 SelectKBest,但它们降低了准确性。

在机器学习模型方面,我使用了多项朴素贝叶斯、随机森林、决策树分类器。我什至尝试过前馈神经网络 (MLP) 和循环神经网络进行分类,但 XGBoost 仍然提供了最好的准确度。我还使用了使用 LDA 的主题建模我为每个类别生成了热门词,并尝试找到每个测试集记录与属于每个类别的所有生成的热门词的余弦相似度,但准确性仍然没有提高。

所以,我的问题是我应该寻找什么样的功能?如何提取更复杂的特征?我的主要目标是提高准确性,因为该产品将成为公司的内部软件。我期待上下文感知特征提取或以某种方式设计特征(添加更多或增强它们)以提高准确性

PS:在电子邮件中,客户要求提供多个可操作项目,但仍在训练集中,它们被预先分类为只有一个标签对应于电子邮件中要求的可操作项目之一。此外,数据也被以前的工作人员手动错误分类。请提出建议和方法来捕获可操作的项目。我尝试过使用类概率,但它们似乎没有给出正确的答案,而且如果这个人只要求一个可操作的项目,那么类概率也会指示其他。我想根据用户的要求捕获可操作的项目。我已经为此尝试过POS 标记,但由于数据质量差,它没有给出好的结果。

PPS:我拥有的电子邮件数据是 HTML 格式并且有线程。我尝试在训练之前删除以前的对话线程,但结果是准确度很差。非常奇怪的是,我越是尝试通过删除不需要的内容(如免责声明、自动回复电子邮件、客户服务代表的回复)来优化数据,准确性就会下降得越多。

期待获得一些关于如何改变我的方法,特别是特性的见解。

谢谢

3个回答

(1)数据质量提高准确性的唯一最佳方法垃圾进垃圾出你已经说过你的数据是可疑的。一些数据被错误分类;当可能有多个标签时,数据只有一个标签。这是最重要的——这将比任何其他技术更能提高你的准确性:提高你的训练数据的质量。解决这个问题的一种方法。招聘专家贴标员(这些可以是您自己公司中执行此任务的工人,或者他们可以是外部人员,例如,经过培训可以执行此贴标任务的mturkers)。一般来说,贴标机越多越好。至少我会有 3 个贴标机,标记所有n您的训练/测试集中的电子邮件,使用多数标签获胜,或者根据您的信心需求需要所有三个共识。您需要使用Cohen 的 kappa或类似方法测量您的评估者间可靠性,以确保数据的完整性。重要的是,这些数据将成为您的黄金标准数据也就是说,您的原始贴标机提供的标签的平均一致性是您的算法试图接近的基本事实。

显然,这种数据质量方法在资源方面的成本很高(标记所有电子邮件的时间;雇用 mturker 的成本等)。但是根据您的具体需求,它不一定是......基本上它取决于完成任务所需的“专业知识”水平。有时,将您(研究人员/开发人员)视为“专家”是安全的(例如,您自己说某些电子邮件被错误分类......您怎么知道?您必须具备某种专业知识。 )。但是,由于个体处理差异会在数据中引入偏差,因此对任务使用单个标记器会降低数据的可靠性。

(2)包括停用词是的,你读对了,包括停用词。语法功能词(例如,the、and、of 等)通常可以高度指示特定的文本类型或体裁。在没有首先确保它们是无信息特征的情况下消除停用词还为时过早。同样,尝试包括 punctuation,尝试包括大写特征。我一次又一次地看到人们盲目地对文本进行预处理,而没有根据经验确定这些特征是否是类的重要预测因子

(3)捕捉拼写变化正如 OP 所说,原文有很多“拼写错误”。您可以通过减少这种差异来提高准确性 - 基本上在提取单词特征之前将变体映射到它们的规范形式(例如,“颜色”->“颜色”)。我经常依靠外部语料库来快速创建这些拼写图。

(4)平衡你的训练数据——OP 提到他的课程严重不平衡。尝试采样和/或欠采样以平衡您的课程。

(5)描述你的问题了解分类器的基本目的也很重要。如果您的分类器打算在历史数据上运行,也许是为了标记错误的人工分类电子邮件,那么您可能希望保留自动回复和通信线程信息。另一方面,例如,如果目标是对新客户电子邮件进行分类以便正确路由,那么您可能希望从训练和测试数据中删除这些通信特征。

首先,我认为你的文本分类准确率已经很高了。不过,我想为其他功能和方法提供一些想法。

主题模型

在研究文本语料库时,经常使用诸如潜在狄利克雷分配 (LDA) 等主题模型。您已经写过您使用 LDA 来得出余弦相似度。不过,您还可以将潜在主题用作单个文档的附加功能,并将概率分配用作值。

情绪分析

当您处理贷款和伤害时,在分类中使用情绪特征也可能很有用。例如,您可以使用基于效价、唤醒和优势的字典方法,并将这些特征包含在您的分类中;您可以在相关论文中找到信息。另一种方法是使用SentiStrength

Word2Vec

最近的文本分析方法主要集中在神经网络方法上,例如查找词嵌入的Word2Vec 。然后,一种简单的方法是对文档中所有单词的向量进行平均,并将它们用作特征。还有一些方法使用向量作为卷积神经网络中的特征。

电子邮件功能

您是否考虑过使用更多的电子邮件功能,例如域,或者只是文本长度。可能值得一试。此外,电子邮件垃圾邮件分类的领域可能会给您一些进一步的见解。

特征/分类器调整

词袋/tfidf 特征生成有时非常敏感。您可能想尝试通过以某种形式的网格搜索优化更改参数来调整它;例如,有时将最小数量的文档阈值用于特征或亚线性缩放之类的东西很有用。此外,您可以尝试将分类器组合成一种集成方法,这可能会导致更高的准确性。

根据您的描述,您的问题设置可能是多标签设置。例如:客户的电子邮件可能是关于两个方面的询问。说一个关于退货政策和价格的问题。如果确实如此,您应该尝试训练多个二元分类器,例如“关于价格的电子邮件”和“与价格无关的电子邮件”,而不是明确地相互权衡类别。如果你有k 你最终会得到不同的类别 k分类器。然后在对测试数据进行预测时,您可以将标签输出的并集k 分类器作为预测标签。

更多详细信息请参见多标签分类中的“PT4”。