如何使用Python、Transformers和scikit-learn对文本进行分类?


电子邮件、社交媒体帖子、聊天、网站和文章的形式生成越来越多的文本。所有这些文本文档都是丰富的信息来源。但由于文本的非结构化性质,理解和分析文本既困难又耗时。因此,大多数公司无法利用这一宝贵的信息来源。这就是文本分类等自然语言处理 (NLP) 方法的用武之地。 
文本分类,也称为文本分类或文本标记,是将文本文档分配给一个或多个类别或类的过程。它使组织能够以快速且廉价的方式自动构建所有类型的相关文本。通过对其文本数据进行分类,组织可以快速了解趋势并缩小部分范围以进行进一步分析。
假设您受雇于一个组织来帮助他们整理客户评论。首先,如果组织拥有全球客户群并且有多种语言编写的评论,那么根据他们的语言划分它们将有助于下游任务。 
尽管正面评价令人振奋和充实,但它们很少包含任何需要立即解决的紧急问题。因此,执行情绪分析并将评论分类为正面和负面可能是一个好主意。在这里,您之前的语言分类将在制作特定语言的情感分析模型时派上用场。
获得负面评论后,您可以按提及的功能/产品进一步对它们进行分类。这将使不同的团队能够轻松找到相关评论并找出他们做错了什么或需要改进的地方。
 
文本分类是如何工作的?
执行文本分类有两种广泛的方法:
  •  手动的
  •  自动的
手动文本分类涉及人工注释者,他阅读文本文档的内容并标记它们。现在您可能认为这种方法只会在您处理大量文本时引起问题。但是你这样想就错了,这里有两个原因:
实时分析
作为缓慢的副作用,手动分类会阻碍组织快速识别和响应危急情况的能力。例如,假设云提供商或 API 出现故障,如果一个人按顺序查看客户支持票证,则组织可能需要一段时间才能意识到他们的服务已停机。
一致性
即使在最好的日子里,人类也是不完美的存在。由于缺乏睡眠、无聊、分心等因素,他们很容易犯错误。这些可能导致分类不一致。对于关键应用程序,这些失误可能会使组织损失数千美元。
除了这些缺点之外,人力成本比在云服务器上运行 Python 脚本要高得多。因此,通过应用自然语言处理和其他 AI 技术来执行自动文本分类是大多数情况下的最佳选择。自动分类速度更快,成本效益更高。最重要的是,一旦文本分类模型被训练成令人满意的规格,它就会始终如一地执行。
文本文档自动分类的方法有很多种,但是所有的方法都可以分为三类:
  • 基于规则的方法
  • 基于机器学习的方法
  • 混合方法
 
基于规则的方法
基于规则的方法使用一组手动创建的语言规则来对文本进行分类。这些规则由每个类别的一个模式或一组模式组成。一种非常简单的方法是根据特定类别单词的出现对文档进行分类。
假设您要将新闻文章分为两类:Business和Science。为此,您需要创建两个对每个类别进行分类的单词列表。例如,您可以为商务类选择高盛、摩根士丹利、苹果等组织的名称,而对于科学类,您可以选择 NASA、科学家、研究人员等词。
现在,当你想对一篇新闻文章进行分类时,基于规则的分类器会统计商业相关词和科学相关词的数量。如果与商业相关的词的数量大于与科学相关的词,那么文章将被归类为商业,反之亦然。 
使用基于规则的系统的最大优点是外行易于理解。因此,一旦创建了一个准系统,它就可以随着时间的推移而逐步改进。但这一优势的另一面是开发人员需要对领域有深入的了解才能创建规则。此外,基于规则的分类方法不能很好地扩展,因为在没有适当测试的情况下添加新规则会影响旧规则的结果。
 
基于机器学习的方法
您可以选择一种基于机器学习的方法,使用过去的观察自动学习规则,而不是手动定义规则。基于机器学习的分类器使用标记示例作为训练数据来学习单词/短语与标签(即类别)之间的关联。
现在,这听起来很容易解决,但在训练机器学习分类器之前,您需要解决一个问题。特征提取。你看,计算机不像我们那样理解文本,它们只理解数字、0 和 1。在计算机视觉问题的情况下,图像以代表单个像素值的数字形式在内部存储。 
但文本并非如此。因此,训练 NLP 分类器的第一步是将文本转换为数字向量表示。最常用的文本嵌入方法之一是词袋。它创建一个向量来计算预定义字典中每个单词的出现次数。 
  • 假设您将字典定义为:“(What, a,sunny, serene, beautiful, day, night)”,并且您想要创建句子“What a serene night”的向量嵌入。您最终会得到句子的以下向量表示:(1, 1, 0, 1, 0, 0, 1)。
  • 在生成所有标记文本文档的向量表示后,您可以使用它们来训练分类器。文本文档的向量表示将以其正确的类别传递给分类器。
  • 一旦模型被训练到所需的性能标准,它就可以用来做出准确的预测。相同的特征提取方法用于创建新文本文档的向量表示。分类模型使用这些特征向量来预测文档的类别。 
基于机器学习的文本分类方法通常比基于规则的分类器更准确。除此之外,机器学习分类器更容易​​扩展,因为您可以简单地添加新的训练示例来更新模型。机器学习分类器的唯一问题是它们难以理解和调试。因此,如果出现问题,可能很难找出导致问题的原因。
 
混合方法
混合文本分类方法结合了两全其美。它们将机器学习分类器的泛化能力与易于理解和调整基于规则的方法相结合。借助机器学习模型,他们可以学习复杂的规则,并且可以使用规则来修复任何冲突的分类或不稳定的行为。
以根据制药、金融、汽车、采矿等行业部门对金融新闻文章进行分类的任务为例。为此,您可以创建一个混合系统。首先,训练一个从新闻文章中提取公司名称的命名实体识别模型。然后,创建每个部门的公司列表。就是这样,使用这两个东西你可以创建一个称职的分类器。
 
案例:使用 Transformers 和 scikit-learn 对新闻标题进行分类
spacy-sentence-bert首先,为句子转换器、 和scikit-learn模块安装 spaCy 包装器。
并在此处获取数据 。
具体步骤点击标题见原文