联系我们

AI 101

文本分类如何工作?

mm

更新

 on

文本分类是分析文本序列并为其分配标签,然后根据其内容将它们分组的过程。文本分类几乎是所有AI或 机器学习 涉及的任务 自然语言处理 (NLP)。通过文本分类,计算机程序可以执行各种不同的任务,例如垃圾邮件识别,情感分析和聊天机器人功能。文本分类如何工作?进行文本分类的方法有哪些?我们将在下面探讨这些问题的答案。

定义文本分类

花一些时间并确保我们了解这一点很重要 什么是文字分类,通常,在研究文本分类的不同方法之前。文本分类是适用于许多不同任务和算法的术语之一,因此它’在继续探索文本分类的不同方法之前,确保我们理解文本分类的基本概念很有用。

涉及为文本创建不同类别,然后将不同文本样本标记为这些类别的任何事情,都可以视为文本分类。只要系统执行了这些基本步骤,就可以将其视为文本分类器,而与用于对文本进行分类的确切方法以及最终如何应用文本分类器无关。检测电子邮件垃圾邮件,按主题或标题组织文档以及识别产品评论的情感都是文本分类的示例,因为它们都是通过将文本作为输入并输出该文本的类标签来实现的。

文本分类如何工作?

Photo: Quinn Dombrowski via Flickr, CC BY SA 2.0 , (//www.flickr.com/photos/quinnanya/4714794045)

大多数文本分类方法可以分为以下三种类别之一:基于规则的方法或机器学习方法。

基于规则的分类方法

基于规则的文本分类方法通过使用明确设计的语言规则进行操作。系统使用工程师创建的规则来确定给定文本应该属于哪个类,以语义相关的文本元素的形式寻找线索。每个规则都有一个模式,文本必须匹配才能放入相应的类别。

具体来说,假设您要设计一种文本分类器,以区分常见的话题,例如天气,电影或食物。为了使您的文本分类器能够识别关于天气的讨论,您可以告诉它在要输入的文本样本的正文中查找与天气相关的12博下载app。您将具有关键字,词组和其他可用于区分主题的相关模式的列表。例如,您可能指示分类器查找诸如``风'',``雨'',``太阳'',``雪''或``云''之类的词。然后,您可以让分类器浏览输入的文本并计算这些12博下载app出现在文本正文中的次数,如果它们比与电影相关的12博下载app出现得更普遍,则可以将文本分类为天气类。

基于规则的系统的优势在于,它们的输入和输出是人类可以预测和解释的,并且可以通过工程师的手动干预加以改进。但是,基于规则的分类方法也有些脆弱,并且通常难以推广,因为它们只能遵循已编程的预定义模式。例如,“云”一词指的是天空,或者可能是指存储数据的数字云。如果没有工程师花费大量时间尝试手动预测和调整这些细微之处,基于规则的系统就很难处理这些细微差别。

机器学习系统

如上所述,基于规则的系统具有局限性,因为它们的功能和规则必须预先编程。相比之下,基于机器学习的分类系统通过应用算法来分析数据集以查找与特定类相关联的模式的算法。

机器学习算法被提供给预先标记/预先分类的实例,并对其进行分析以获取相关特征。这些预先标记的实例是训练数据。

机器学习分类器分析训练数据并学习与不同类别相关的模式。此后,将看不见的实例剥离其标签,并将其馈送到为实例分配标签的分类算法。然后将分配的标签与原始标签进行比较,以查看机器学习分类器的准确性,衡量模型学习何种模式预测哪些类的准确性。

机器学习算法通过分析数值数据进行操作。这意味着,为了对文本数据使用机器学习算法,需要将文本转换为数字格式。有多种方法可以将文本数据编码为数值数据,并围绕该数据创建机器学习方法。我们将在下面介绍一些表示文本数据的不同方法。

言语袋

词袋 是用于编码和表示文本数据的最常用方法之一。 “12博下载app袋”一词源自以下事实:您基本上将文档中的所有12博下载app都放入一个“袋”中,而无需注意12博下载app顺序或语法,只关注12博下载app 词频 在包里。这将导致一个长数组或向量,其中包含输入文档中所有12博下载app的单个表示形式。因此,如果输入文档中总共有10000个唯一12博下载app,则特征向量的长度将为10000个12博下载app。这就是12博下载app袋/特征向量的大小的计算方式。

Photo: gk_ via Machinelearning.co, (//machinelearnings.co/text-classification-using-neural-networks-f5cd7b8765c6)

确定特征向量的大小后,将为总文档列表中的每个文档分配一个自己的矢量,并用数字表示该12博下载app在当前文档中出现的次数。这意味着,如果12博下载app“ food”在一个文本文档中出现八次,则相应的特征向量/特征数组在相应位置将有八个。

换句话说,将输入文档中出现的所有唯一12博下载app都堆放在一个袋子中,然后每个文档都会得到一个大小相同的12博下载app矢量,然后用不同12博下载app出现在文档中的次数填充该12博下载app矢量。

文本数据集通常会包含大量独特的12博下载app,但是大多数都不经常使用。因此,通常将用于创建12博下载app向量的12博下载app数限制为选定值(N),然后特征向量维数将为Nx1。

术语频率-逆文档频率(TF-IDF)

另一种基于文档中12博下载app的表示方法 术语频率-逆文档频率(TF-IDF)。 TF-IDF方法还会基于其中的12博下载app创建一个表示文档的向量,但是与12博下载app袋不同,这些12博下载app是 不仅被频率加权。 TF-IDF考虑了12博下载app在文档中的重要性,试图量化该12博下载app与文档主题之间的相关性。换句话说,TF-IDF分析相关性而不是频率,并且将特征向量中的字数替换为针对整个数据集计算的TF-IDF分数。

TF-IDF方法通过首先计算术语频率,即唯一术语出现在特定文档中的次数来进行操作。但是,TF-IDF还注意限制诸如“ the”,“ or”和“ 和 ”之类的极为常见的词的影响,因为这些“停用词”很常见,但传达的文档内容信息很少。这些12博下载app需要打折,这就是TF-IDF的“文档反转频率”部分所指的内容。这样做是因为出现特定12博下载app的文档越多,该12博下载app与所有文档列表中的其他文档区别开的作用就越小。 TF-IDF用于计算12博下载app重要性的公式旨在保留最频繁且语义最丰富的12博下载app。

通过TF-IDF方法创建的特征向量包含归一化后的值,这些值之和为1,为每个12博下载app分配一个由TF-IDF公​​式计算得出的加权值。

词嵌入

词嵌入 是表示文本的方法,可确保具有相似含义的12博下载app具有相似的数字表示形式。

词嵌入 通过“向量化”12博下载app进行操作,表示它们将12博下载app表示为向量空间中的实值向量。向量存在于网格或矩阵中,并且具有方向和长度(或大小)。当将12博下载app表示为矢量时,这些12博下载app将转换为包含实数值的矢量。每个12博下载app都映射到一个向量,并且含义相似的12博下载app具有相似的方向和大小。这种编码方式使机器学习算法可以学习12博下载app之间的复杂关系。

关于所使用的12博下载app的使用方式,创建了表示不同12博下载app的嵌入。因为以类似方式使用的12博下载app将具有相似的向量,所以创建12博下载app嵌入的过程会自动翻译12博下载app具有的某些含义。相比之下,一袋12博下载app的方法会创建脆性表示,即使在高度相似的上下文中使用它们,不同的12博下载app也将具有不同的表示。

结果,12博下载app嵌入更擅长捕获句子中12博下载app的上下文。

有多种用于创建12博下载app嵌入的算法和方法。一些最常见和最可靠的12博下载app嵌入方法包括:嵌入层,word2vec和GloVe。

嵌入层

一种将词嵌入与机器学习/结合使用的潜在方法深度学习 系统是 使用嵌入层。嵌入层是深度学习层 将12博下载app转换为嵌入 然后将其馈入深度学习系统的其余部分。在网络训练特定的基于文本的任务时,将学习12博下载app嵌入。

在12博下载app嵌入方法中,相似的12博下载app将具有相似的表示,并且比不相似的12博下载app彼此更靠近。

为了使用嵌入层,需要先对文本进行预处理。文档中的文本必须是一键编码的,并且矢量大小需要事先指定。然后,将一键文本转换为12博下载app向量,并将这些向量传递到机器学习模型中。

Word2Vec

Word2Vec 是嵌入12博下载app的另一种常用方法。 Word2Vec 使用统计方法将12博下载app转换为嵌入内容,并且已针对基于神经网络的模型进行了优化。 Word2Vec 由Google研究人员开发,它是最常用的嵌入方法之一,因为它可以可靠地生成有用的,丰富的嵌入。 Word2Vec 表示形式可用于识别语言中的语义和句法共性。这意味着Word2Vec表示法捕获了相似概念之间的关系,能够区分“国王”和“女王”之间的共性是皇室,“国王”则意味着“男人”,而女王则意味着“女人”。

手套

GloVE或用于12博下载app表示的全局向量,建立在Word2Vec使用的嵌入算法的基础上。 手套 嵌入方法结合了Word2Vec和诸如潜在语义分析之类的矩阵分解技术。 Word2Vec 的优点是它可以捕获上下文,但是作为一个折衷,它很难捕获全局文本统计信息。相反,传统的矢量表示法擅长确定全局文本统计信息,但对确定12博下载app和词组的上下文没有帮助。 GloVE借鉴了这两种方法中的最佳方法,基于全局文本统计信息创建12博下载app上下文。

专门从事以下工作的Blogger和程序员 机器学习 深度学习 话题。 Daniel希望帮助他人将AI的力量用于社会公益。