句法差异很小的短语文本分类的最佳方法

数据挖掘 深度学习 nlp 支持向量机 文本分类 语言模型
2022-03-08 13:51:43

所以我的任务是根据他们显示的“改变谈话”的水平对句子进行分类。改变谈话是心理咨询中使用的一个术语,用于表达客户想要改变他们的行为的程度。

所以假设有两个类:change talk;和不变的谈话。

改变谈话的一个例子是:“我必须这样做。” 或“我能做到”。

不改变谈话的一个例子是“我不能这样做”。或“我没有动力”。

我的问题是,如果我想采用机器学习方法对这些句子进行分类,哪种方法最好?支持向量机?我没有很多训练数据。另外 - 我看到的所有教程都使用带有明显单词的句子,很容易分类(例如“棒球比赛明天开始。”-> 体育,或“唐纳德特朗普明天将在电视上发布公告。”-> 政治)。

我觉得我的数据更难分类,因为它通常没有与每个类别相关的关键字。

关于人们如何处理这项任务的一些指导会很棒。

2个回答

正如您所说,您的问题是句子之间的语法重叠程度很高。看看这两句话:Work to live vs live to work。越早让自己在工作之外享受生活中的其他事情,而后者意味着获得资源,以便成为社会的一员,并让自己拥有良好的生活方式。它们在语义上非常不同。因此,当您使用诸如词袋或 Cosin 相似度之类的技术对这些句子进行矢量化时,这两个句子都包含相同的语料库,因此将毫无用处。您正在处理的另一个问题(基于您提供的示例)是处理短文本,这使得难以通过其他简单但有效的技术(如 TF-IDF)进行矢量化。所以不管你要使用什么分类,

另一方面,RNN 或 Transformers 等深度学习方法可以轻松解决像您这样的序列到序列任务,这可能会非常有帮助。命名实体识别模型是您所需要的,并且鉴于您的数据是非常特定于领域的,您需要使用您的数据训练自己的模型。我推荐 Spacy Python 包。因此,一旦您有了模型,您将拥有两个实体,CHANGE TALK 和 NON-CHANGE TALK。然后你可以简单地计算你的段落中有多少。当然,这是处理您的问题的最简单方法。您可以添加更多实体,然后它们将充当您可以训练任何分类模型的特征。希望这可以帮助。

通常在项目开始时并不清楚任务的难度以及哪些元素会产生最大的影响。一种方法是建立一个机器学习系统来系统地评估选项并凭经验探索问题。

首先设置最简单的文本分类管道,其中原始文本进入管道,“更改”/“不更改”预测从管道中出来。为该二元分类任务选择最合适的评估指标。

然后采用模型比较方法,对管道中的每个元素进行实验测试,看看它是否改进了评估指标。最常见的是尝试不同的文本编码方法(例如,one-hot 编码、基于计数或嵌入)和不同的算法(例如,朴素贝叶斯、支持向量机 (SVM)、基于树的模型或神经网络)。