常用的文本分类算法概览

文章目录

  • [1. 前言](#1. 前言)
  • [2. 文本分类之预处理](#2. 文本分类之预处理)
  • [3. 常见算法](#3. 常见算法)
  • [4. 评估方法](#4. 评估方法)

1. 前言

本文不涉及代码,仅介绍文本分类算法涉及到的操作和常见的一些算法,了解当前文本分类的过程,拓展知识面。

2. 文本分类之预处理

在文本分类任务中,预处理是至关重要的步骤,它涉及清洗文本数据集,去除噪声和不必要的特征,以便进行有效的特征化。预处理常用的一些步骤如下:

  1. 分词(Tokenization):这是将文本流分解为单词、短语、符号或其他有意义的元素(称为标记)的预处理方法。分词的目的是分析句子中的单词。

  2. 停用词(Stop Words):文本和文档分类中包含许多不包含重要意义的词,如"a", "about", "above"等。处理这些词的常见技术是将它们从文本中移除。

  3. 大小写(Capitalization):文本和文档数据点具有不同的大小写形式。为了处理不一致的大小写,常见的方法是将所有字母转换为小写。

  4. 俚语和缩写:俚语和缩写是文本中的其他形式的异常,它们在预处理步骤中被处理。常见的方法是将它们转换为正式语言。

  5. 噪声移除:大多数文本和文档数据集包含许多不必要的字符,如标点符号和特殊字符,这些字符可能对分类算法不利。

  6. 拼写校正:拼写校正是一个可选的预处理步骤,用于纠正文本和文档中的拼写错误。

  7. 词干提取(Stemming):词干提取是一种将单词修改为获得不同词形的方法,它通过去除后缀来实现。

  8. 词形还原(Lemmatization):词形还原是一种将单词替换为其基本形式(词元)的过程。

  9. 句法词表示:为了解决单词之间失去句法和语义关系的问题,研究人员开发了多种技术,如n-gram技术和句法n-gram。

  10. 加权词(Weighted Words):这是基于词频的文本特征提取的基本形式,每个词被映射为一个数字,表示该词在整个语料库中的出现次数。

  11. 词袋模型(Bag of Words, BoW):BoW模型是一种基于特定标准(如词频)从文本中选择部分文本的简化表示。BoW模型面临的挑战包括词汇表的规模可能达到数百万,这导致可扩展性问题。

  12. 词嵌入(Word Embedding):尽管有句法词表示,但并不意味着模型捕获了词的语义含义。词嵌入是一种将词汇表中的每个词或短语映射到N维实数向量的特征学习技术。

在实际处理中,可以结合其中的一些关键步骤,不一定完全执行所有的步骤。

3. 常见算法

  1. Rocchio算法
    优点 :使用了相关反馈来查询全文本数据库,适用于文本和文档分类。
    缺点:用户只能检索到少量相关文档,且算法结果在考虑语义时存在局限性。

  2. Boosting 和 Bagging
    优点 :Boosting 通过自适应改变训练集分布来提升弱学习算法的性能,而 Bagging 不考虑前一个分类器,通过投票分类技术提高分类准确性。
    缺点:计算复杂度高,可解释性差,即无法发现特征的重要性。

  3. Logistic Regression (LR)
    优点 :适用于分类问题,能够预测二元或多元分类结果。
    缺点:假设数据点独立,且在处理非线性关系时可能不够有效。

  4. Naive Bayes Classifier (NBC)
    优点 :简单且计算效率高,适用于大规模数据集。
    缺点:假设特征之间相互独立,这在实际中往往不成立,且在数据稀缺的情况下性能受限。

  5. K-Nearest Neighbor (KNN)
    优点 :实现简单,易于理解和实现,适用于多类问题。
    缺点:对数据存储要求高,且性能依赖于有效的距离函数。

  6. Support Vector Machine (SVM)
    优点 :在文本分类中表现良好,尤其适用于二分类问题。
    缺点:对于大规模数据集,训练时间长,且对于未见过的词(即训练数据中未出现的词)处理不佳。

  7. Decision Tree
    优点 :快速学习和预测,适用于分类任务。
    缺点:对数据的微小变化非常敏感,容易过拟合,且在预测新样本时可能表现不佳。

  8. Random Forest
    优点 :通过集成多个决策树来提高分类的准确性和鲁棒性。
    缺点:训练速度快,但预测时速度较慢,且需要选择合适的树的数量。

  9. Conditional Random Field (CRF)
    优点 :结合了分类和图形模型的优点,能够紧凑地建模多变量数据。
    缺点:训练步骤的计算复杂度高,且不适用于未见过的词。

  10. Deep Learning
    优点 :在许多领域,包括文本和文档分类,取得了最先进的结果。
    缺点:需要大量的数据进行训练,对于小数据集可能不适用。训练过程中的计算复杂性高,需要大量的计算资源。模型的可解释性差,通常被视为"黑盒"模型。选择有效的架构和结构仍然是一个挑战。

对于文本分类的 Deep Learning,可以包含:

  • 深度神经网络(DNN)

    利用多层连接学习,每层只从前一层接收连接,并只向后一层提供连接。输入层可以由TF-IDF、词嵌入或其他特征提取方法构建。输出层的节点数等于类别数,用于多类分类或二类分类。使用 sigmoid 或 ReLU 作为激活函数,并通过反向传播算法进行训练。

  • 循环神经网络(RNN)

    RNN特别适用于序列数据,如文本,因为它们可以在序列的不同时间步长之间传递信息。长短期记忆网络(LSTM)和门控循环单元(GRU)是 RNN 的两种变体,它们通过引入门控机制来解决传统 RNN 的梯度消失和梯度爆炸问题。

  • 卷积神经网络(CNN)

    虽然最初设计用于图像处理,但 CNN 也被证明对文本分类有效。CNN 通过卷积层提取特征,然后使用池化层(如最大池化)来降低特征维度,并通过全连接层进行分类。

  • 深度信念网络(DBN)

    由受限玻尔兹曼机(RBM)堆叠而成,是一种生成模型,可以学习样本的概率分布。

  • 层次注意力网络(HAN)

    HAN 专注于文档级分类,使用两层注意力机制,分别在词和句子级别上应用。

  • 随机多模型深度学习(RMDL)

    RMDL 结合了多个深度学习模型,如 CNN、DNN 和 RNN,以提高分类性能。

4. 评估方法

  1. 准确率 (Accuracy)

    准确率是最直观的性能指标,它衡量的是模型正确分类的文档数占总文档数的比例。然而,准确率在类别不平衡的情况下可能不是最佳的评估指标。

  2. 召回率 (Recall)

    召回率关注于模型识别所有正类样本的能力。它定义为真正例(TP)与实际为正类的所有样本(TP + FN)的比例。

  3. 精确度 (Precision)

    精确度衡量的是模型预测为正类的样本中实际为正类的比例,即真正例(TP)与预测为正类的所有样本(TP + FP)的比例。

  4. Fβ分数 (Fβ Score)

    Fβ分数是一个综合考虑召回率和精确度的指标,通过引入一个参数β来平衡两者的重要性。F1分数是Fβ分数的一个特殊情况,当β=1时,召回率和精确度被赋予相同的重要性。

  5. Matthews相关系数 (Matthews Correlation Coefficient, MCC)

    MCC是一个考虑了混淆矩阵中所有元素的指标,它能够为不平衡的数据集提供更平衡的性能评估。

  6. 接收者操作特征曲线 (Receiver Operating Characteristic, ROC)

    ROC 曲线是一个图形工具,用于评估分类模型的性能。它通过绘制真正例率(TPR)和假正例率(FPR)来展示模型在不同阈值下的性能。

  7. ROC曲线下面积 (Area Under the ROC Curve, AUC)

    AUC衡量的是ROC曲线下的整个面积,它提供了一个模型性能的总体度量,与决策阈值无关,并且对类别的先验概率不敏感。

  8. 宏平均 (Macro-Averaging)微平均 (Micro-Averaging)

    宏平均和微平均是在多类别分类问题中使用的两种聚合评估指标。宏平均对每个类别的指标进行简单平均,而微平均则在类别层面上对所有文档的决策进行聚合,然后输出汇总的指标。

相关推荐
Aileen_0v04 分钟前
【玩转OCR | 腾讯云智能结构化OCR在图像增强与发票识别中的应用实践】
android·java·人工智能·云计算·ocr·腾讯云·玩转腾讯云ocr
FreedomLeo11 小时前
Python机器学习笔记(十三、k均值聚类)
python·机器学习·kmeans·聚类
阿正的梦工坊1 小时前
深入理解 PyTorch 的 view() 函数:以多头注意力机制(Multi-Head Attention)为例 (中英双语)
人工智能·pytorch·python
Ainnle1 小时前
GPT-O3:简单介绍
人工智能
OceanBase数据库官方博客1 小时前
向量检索+大语言模型,免费搭建基于专属知识库的 RAG 智能助手
人工智能·oceanbase·分布式数据库·向量数据库·rag
测试者家园1 小时前
ChatGPT助力数据可视化与数据分析效率的提升(一)
软件测试·人工智能·信息可视化·chatgpt·数据挖掘·数据分析·用chatgpt做软件测试
Loving_enjoy3 小时前
ChatGPT详解
人工智能·自然语言处理
人类群星闪耀时3 小时前
深度学习在灾难恢复中的作用:智能运维的新时代
运维·人工智能·深度学习
神秘打工猴3 小时前
Flink 集群有哪些⻆⾊?各⾃有什么作⽤?
大数据·flink