AI 基础
文本分类是如何工作的?
文本分类是分析文本序列并将其分配给一个标签,将其放入一个基于其内容的组中。文本分类是几乎所有涉及自然语言处理(NLP)的AI或机器学习任务的基础。通过文本分类,计算机程序可以执行广泛的不同任务,例如垃圾邮件识别、情感分析和聊天机器人功能。文本分类的工作原理是什么?文本分类有哪些不同的方法?我们将在下面探讨这些问题的答案。
定义文本分类
在深入研究文本分类的不同方法之前,花一些时间确保我们理解文本分类的基本概念是非常重要的。文本分类是一个被应用于许多任务和算法的术语,因此在探索文本分类的不同方法之前,了解文本分类的基本概念是有用的。
任何涉及为文本创建不同的类别并将文本样本标记为这些类别的过程都可以被认为是文本分类。只要系统执行这些基本步骤,它就可以被认为是一个文本分类器,无论使用的方法如何,也无论文本分类器最终如何应用。检测电子邮件垃圾邮件、按主题或标题组织文档以及识别产品评论的情绪都是文本分类的例子,因为它们都是通过将文本作为输入并输出文本的类别标签来完成的。
文本分类是如何工作的?

图片:Quinn Dombrowski via Flickr,CC BY SA 2.0,(https://www.flickr.com/photos/quinnanya/4714794045)
大多数文本分类方法可以分为三类:基于规则的方法或机器学习方法。
基于规则的分类方法
基于规则的文本分类方法通过使用显式设计的语言规则来运作。系统使用工程师创建的规则来确定给定文本属于哪个类别,通过在文本中寻找语义相关的文本元素来实现。每个规则都有一个模式,文本必须匹配该模式才能被放入相应的类别中。
更具体地说,让我们假设你想设计一个文本分类器,可以区分常见的话题,如天气、电影或食物。为了使你的文本分类器能够识别天气讨论,你可能会告诉它在文本样本中寻找与天气相关的词语。你会有一个关键词、短语和其他相关模式的列表,可以用来区分话题。例如,你可能会指示分类器寻找“风”、“雨”、“太阳”、“雪”或“云”的词语。你可以让分类器检查输入文本并计算这些词语在文本中出现的次数,如果它们比电影相关的词语出现得更频繁,你会将文本分类为天气类别。
基于规则的系统的优点是其输入和输出是人类可预测和可解释的,并且可以通过工程师的手动干预来改进。然而,基于规则的分类方法也比较脆弱,通常很难推广,因为它们只能遵循预编程的模式。例如,“云”这个词可能指的是天空中的水汽,也可能指的是数字云,其中存储数据。基于规则的系统很难处理这些细微差别,而不需要工程师花费大量时间来手动预测和调整这些细微差别。
机器学习系统
如上所述,基于规则的系统有局限性,因为它们的功能和规则必须预先编程。相比之下,基于机器学习的分类系统通过应用分析数据集以查找与特定类别相关的模式的算法来运作。
机器学习算法被输入预标记/预分类的实例,这些实例被分析以查找相关的特征。这些预标记的实例是训练数据。
机器学习分类器分析训练数据并学习与不同类别相关的模式。之后,未见过的实例被去掉标签并输入分类算法,分类算法为这些实例分配标签。分配的标签然后与原始标签进行比较,以查看机器学习分类器的准确性如何,评估模型学习哪些模式来预测哪些类别。
机器学习算法通过分析数字数据来运作。这意味着要在文本数据上使用机器学习算法,文本需要被转换为数字格式。有多种方法可以将文本数据编码为数字数据,并围绕这些数据创建机器学习方法。我们将在下面介绍一些不同的方法来表示文本数据。
词袋模型
词袋模型是表示和编码文本数据最常用的方法之一。词袋模型的名称来自于这样一个事实:你基本上取所有文档中的所有词语并将它们放入一个“袋”中,而不考虑词序或语法,只考虑词频。这样就产生了一个长数组或向量,包含输入文档中所有词语的单一表示。如果输入文档中有10000个唯一的词语,那么特征向量将是10000个词语长。

图片:gk_ via Machinelearning.co,(https://machinelearnings.co/text-classification-using-neural-networks-f5cd7b8765c6)
确定特征向量的大小后,每个文档在文档列表中都被分配一个填充数字的向量,表示每个词语在当前文档中出现的次数。这意味着,如果“食物”这个词在一个文本文档中出现8次,那么对应的特征向量/特征数组将在对应的位置有一个8。
换句话说,所有输入文档中出现的唯一词语都被放入一个袋子中,然后每个文档都得到一个相同大小的词向量,该向量用数字填充,表示不同词语在文档中出现的次数。
文本数据集通常包含大量唯一的词语,但大多数词语使用频率不高。因此,用于创建词向量的词语数量通常被限制在一个选择的值(N)上,然后特征向量的维度将为Nx1。
词频-逆文档频率(TF-IDF)
文档中词语的另一种表示方法是称为词频-逆文档频率(TF-IDF)的方法。TF-IDF方法也创建一个向量来表示文档中包含的词语,但与词袋模型不同的是,这些词语是通过权重来表示的,而不仅仅是频率。TF-IDF方法考虑了文档中词语的重要性,尝试量化词语与文档主题的相关性。换句话说,TF-IDF方法分析的是相关性,而不是频率,并且特征向量中的词频被用TF-IDF评分取代,该评分是根据整个数据集计算的。
TF-IDF方法首先计算词频,即词语在特定文档中出现的次数。然而,TF-IDF方法还会限制非常常见的词语(如“the”、“or”和“and”)的影响,因为这些词语虽然很常见,但对文档内容的信息量很小。这些词语需要被折扣,这就是TF-IDF中“逆文档频率”部分的作用。这样做是因为特定词语出现在文档中的次数越多,它在区分文档和其他文档方面的用处就越小。TF-IDF使用的公式是为了保留最频繁和最语义丰富的词语。
TF-IDF方法创建的特征向量包含归一化值,总和为1,每个词语被赋予一个加权值,如TF-IDF公式计算的那样。
词嵌入
词嵌入是表示文本的方法,确保具有相似含义的词语具有相似的数字表示。
词嵌入通过将词语表示为向量来运作,向量存在于向量空间中,具有方向和长度(或幅度)。当将词语表示为向量时,词语被转换为由实值组成的向量。每个词语都映射到一个向量,具有相似含义的词语具有相似的方向和长度。这种编码使得机器学习算法能够学习词语之间的复杂关系。
词嵌入是根据词语的使用方式创建的。因为词语被使用的方式相似,它们就具有相似的向量。词嵌入的创建过程自动转换了一些词语的含义。词袋模型创建了脆弱的表示,词语即使在相似上下文中使用,也具有不同的表示。
因此,词嵌入更擅长捕捉词语在句子中的上下文。
有不同的算法和方法来创建词嵌入。一些最常见和最可靠的词嵌入方法包括嵌入层、Word2Vec和GloVe。
嵌入层
使用词嵌入与机器学习/深度学习系统的一种可能方法是使用嵌入层。嵌入层是深度学习层,将词语转换为词嵌入,然后输入到深度学习系统的其余部分。词嵌入是在网络训练特定文本任务时学习的。

在词嵌入方法中,相似的词语将具有相似的表示,并且彼此之间比不相似的词语更接近。
要使用嵌入层,需要先对文本进行预处理。文档中的文本需要进行一次性编码,并且需要提前指定向量大小。一次性编码的文本然后被转换为词向量,并且这些向量被传递到机器学习模型中。
Word2Vec
Word2Vec是另一种常见的词嵌入方法。Word2Vec使用统计方法将词语转换为词嵌入,并且针对基于神经网络的模型进行了优化。Word2Vec由Google的研究人员开发,并且是最常用的词嵌入方法之一,因为它可靠地产生有用的和丰富的词嵌入。Word2Vec表示捕捉了语言中的语义和句法共同点,这意味着Word2Vec表示捕捉了相似概念之间的关系,能够区分“King”和“Queen”之间的共同点是皇室,并且“King”意味着“男性”,而“Queen”意味着“女性”。
GloVe
GloVe,或全局向量词语表示,建立在Word2Vec使用的嵌入算法和矩阵分解技术(如潜在语义分析)之上。GloVe嵌入方法结合了Word2Vec和矩阵分解技术的优点。Word2Vec的优点是它可以捕捉上下文,但作为权衡,它很难捕捉全局文本统计信息。相反,传统的向量表示很好地确定全局文本统计信息,但它们不适合确定词语和短语的上下文。GloVe从这两种方法中汲取了最好的部分,根据全局文本统计信息创建了词语-上下文。因此,GloVe既可以捕捉上下文,又可以捕捉全局文本统计信息。












