写点什么

NLP 入门导论

作者:小付聊测试
  • 2023-05-15
    广东
  • 本文字数:5300 字

    阅读完需:约 17 分钟

NLP 入门导论

前言

自然语言处理(Natural Language Processing ,简称 NLP)是目前人工智能领域中爆火的一个分支。ChatGPT 的横空出世,已经让人们兴奋的夜不能寐,而更让我们兴奋的是 AI 的进化速度,从 20 年 OpenAI 首推 GPT-3,到 23 年 3 月退出 GPT-4。整个 AI 的世界变得大不相同。就目前现状来看,AI 并不只是学术界专属的学科,作为工程出身的笔者,也需要多去学习和掌握 AI 的技能。

什么是自然语言处理

自然语言处理是一项处理人类语言的一个基础学科,包括理解人类语言的文字,读或者写,通过该学科完善技术来以达到完成某些语言相关的任务。NLP 可以再进一步进行划分,有量大核心任务。

  • NLU (natural language understading)

NLU 希望计算机像人一样,有正常人的语言理解能力,理解文案的潜在含义

  • NLG (natural language generation)

NLG 将一些非人类语言的数据转换生成人类可以理解的文本数据。所以 NLG 更正专注在文本自动生成

NLU 和 NLG 有一些共通的部分,不仅如此,包括自动翻译,问答系统也是 NLP 领域落地的具体场景。

为什么 NLP 如此重要

NLP 和我们的生活息息相关,包括电子商务里的智能客服再到智能家居和手机里的语音助手,尤其 ChatGPT,可以写代码,写文章,似乎无所不能。 目前 NLP 逐步开始着手解决复杂的问题,但目前仍然有很长的路要走。尽管 NLP 目前有需要的难题等待攻克,不可否认的是,越来越多的非业界的人士已经着手向这片蓝海尝试更多的发起挑战。

NLP 应用场景



NLP 应用于各类与语言相关的实际场景,其中有四项是最常见:

  • 情感分析 情感分析对文本的情感意图进行分类的过程,通过情感分析,可以快速了了解⽤用户的舆情情况。通常,情感分类模型的输入是一段文本,输出是这段文本所表达为正面、负面或中性的概率。通常,此概率基于指定特征、n-gram、TF-IDF 特征,或使用深度学习模型。

  • 聊天机器人 主要体现人机对话,主要应用于客服服务、智能问答、搜索引擎服务以及其他一些常见的自然语言处理领域。在自然语言生成方面,聊天机器人通常使用一些技术,例如语言模型(Language Model)、机器翻译(Machine Translation)、对话生成(Dialogue Generation)等。语言模型用于生成流畅、自然的文本,机器翻译则用于将一种自然语言翻译成另一种自然语言,对话生成则用于生成符合对话场景的自然语言文本。例如,有很多大公司在训练自己的 LLMs 以争夺市场,包括 OpenAI 的 GPT,Google 的 BERT 等模型。

  • 语音识别 语音识别是利用语音模型用于将转换后的文本进行处理和分析,使用机器学习算法对文本进行语言分析、语法分析和语义分析。声学模型和语言模型通常使用深度学习技术,如循环神经网络(RNN)和卷积神经网络(CNN)等。在声学模型中,输入是语音信号,输出是一系列音素或拼音等代表文本的符号。

  • 机器翻译 主要使用机器学习和深度学习算法来处理自然语言文本。机器翻译的核心任务是将一种自然语言的文本转换为另一种自然语言的文本,这个过程通常分为两个步骤:源语言文本的分析和目标语言文本的生成。 机器翻译系统会对输入的源语言文本进行分词、词性标注、句法分析等操作,生成一个源语言文本的结构化表示。然后,机器翻译系统会使用这个结构化表示来生成目标语言的文本,这个过程被称为目标语言的生成。常用的模型为 Seq2Seq,该模型由编码器和解码器两部分组成的,编码器将源语言文本映射为一个向量,而解码器则使用这个向量来生成目标语言文本。

NLP 的基本工作原理

NLP 模型通过查找语言成分之间的关​​系来工作——例如,在文本数据集中找到的字母、单词和句子。NLP 架构使用各种方法进行数据预处理、特征提取和建模。其中一些过程是:

数据预处理

在模型处理完成任务之前,通常需要对文本进行预处理以提高模型处理性能或将文本转换成模型自身容易理解的数据。

  1. 文本清理:去除一些无关的信息,例如 HTML 标签、特殊符号、数字等,并将所有文本转换为小写形式,以便于后续处理。

  2. 分词:将句子或文本按照一定的规则切分成单词或单个字符,以便于计算机进行处理。分词的方法包括基于规则、基于统计和基于深度学习的方法。

  3. 停用词过滤:去除一些常见的无意义词语,例如“的”、“了”、“和”等,以便于减少噪音和提高特征的区分度。

  4. 词干提取或词形还原:将不同的单词形式转换为相同的基本形式,例如将“running”和“run”都转换为“run”,以便于计算机处理和匹配。

  5. 词向量化:将文本中的单词转换为数值向量表示形式,以便于计算机进行特征提取和模型训练。词向量化的方法包括基于 one-hot 编码、基于统计的方法(例如 TF-IDF)和基于深度学习的方法(例如 word2vec、GloVe、BERT 等)。

  6. 序列填充:将不同长度的文本序列补齐为相同的长度,以便于机器学习模型进行处理。

  7. 数据划分:将预处理后的数据集划分为训练集、验证集和测试集,以便于进行模型训练、调参和评估。

特征提取

大多数传统的机器学习技术大多是通过特征来进行分类或者预测。特征提取是将文本数据转化为机器学习算法可以处理的向量形式的过程。它是 NLP 中一个非常重要的步骤,直接影响到机器学习算法的性能和效果。

下面介绍几种常用的特征提取方法:

  • 词袋模型(Bag of Words)

这是一种常用的基于词频的特征提取方法。它将文本看作是一个词汇集合,每个词汇的出现都可以被表示为一个向量。通过计算每个词汇在文本中的出现次数,可以构造出一个向量,用于表示原始文本的特征。



  • TF-IDF

TF-IDF 是一种将词袋模型进一步优化的方法。它不仅考虑了每个词汇在文本中出现的频率,还考虑了该词汇在整个语料库中出现的频率。通过这种方式,可以有效地抑制一些常见的无意义词汇,例如“的”、“了”等。

TF(Term Frequency)代表文档中的词有多重要TF = 单词在文档中出现的次数/ 文档中的单词总量IDF(Inverse Document Frequency): 这个词在整个语料库中有多重要IDF =log(语料库中的文档数/包含该词的文档数)
复制代码



  • 词嵌入(Word Embedding)

词嵌入是一种将词汇表示为低维向量的方法。它可以有效地捕捉词汇之间的语义关系,例如近义词、反义词等。常见的词嵌入模型包括 Word2Vec、GloVe 等。

2013 年推出的 Word2Vec 使用普通神经网络从原始文本中学习高维词嵌入。它有两种变体:Skip-Gram,我们尝试在给定目标词的情况下预测周围的词,以及连续词袋(CBOW),它试图从周围的词中预测目标词。在训练后丢弃最后一层后,这些模型将一个词作为输入并输出一个词嵌入,可以用作许多 NLP 任务的输入。来自 Word2Vec 的嵌入捕获上下文。如果特定的词出现在相似的上下文中,它们的嵌入将是相似的。 GLoVE 类似于 Word2Vec,因为它也学习词嵌入,但它通过使用矩阵分解技术而不是神经学习来实现。GLoVE 模型基于全局词到词的共现计数构建矩阵。

  • 主题模型

主题模型是一种将文本表示为主题分布的方法。它可以将每个文本表示为一个主题向量,用于表示文本所包含的主题。通过这种方式,可以将文本的高维特征空间转换为低维主题空间,从而提高机器学习模型的效率。

这些特征提取方法可以根据具体的任务和数据集进行调整和组合。在进行特征提取时,需要考虑到特征的维度、特征的重要性等因素,并使用合适的方法将原始文本转换为有用的特征表示。

模型处理

数据经过预处理和特征提取后,被送入 NLP 架构,该架构对数据进行建模以完成各种任务。

NLP 常见的分类器模型包括:

  • 朴素贝叶斯分类器:朴素贝叶斯分类器是一种基于概率统计的分类器模型。它假设所有的特征都是相互独立的,从而简化了计算复杂度。朴素贝叶斯分类器在文本分类、情感分析等任务中表现优秀。 P(标签|文本)= P(标签)x P(文本|标签)/ P(文本)

并根据哪个联合分布的概率最高进行预测。朴素贝叶斯模型中的朴素假设是各个词是独立的。因此:

P(文本|标签) = P(word_1|标签)*P(word_2|标签)*…P(word_n|标签)
复制代码
  • 决策树分类器:决策树分类器是一种基于树形结构的分类器模型。它通过递归地将数据集划分为多个子集,从而构建出一棵决策树。决策树分类器在文本分类、命名实体识别等任务中表现良好。



  • 支持向量机分类器:支持向量机分类器是一种基于最大化间隔的分类器模型。它通过寻找最优的超平面将不同类别的数据点分隔开来。支持向量机分类器在文本分类、情感分析等任务中表现优秀。

  • 最大熵分类器:最大熵分类器是一种基于最大熵原理的分类器模型。它通过最大化熵的原则来求解最优的分类模型。最大熵分类器在命名实体识别、词性标注等任务中表现优秀。

  • 深度学习分类器:深度学习分类器是一种基于神经网络的分类器模型。它通过构建深层次的神经网络来提取文本的高级特征表示,并使用 softmax 函数来进行分类。深度学习分类器在文本分类、情感分析等任务中表现优秀。

    卷积神经网络(CNN)

主要思路是将文档视为图像。但是,输入不是像素,而是表示为单词矩阵的句子或文档,用于文本表示的学习和特征提取。

CNN 在文本处理中的一般流程如下:

输入层:将文本中的每个单词转化成一个向量表示。

卷积层:通过卷积操作提取文本中的局部特征。

池化层:将卷积层输出的特征图进行压缩,减少参数数量和计算量。

全连接层:将池化层输出的特征向量进行拼接,并使用全连接层进行分类。



  • RNN(循环神经网络)

一种具有时间序列记忆能力的神经网络模型,在 NLP 领域中得到了广泛的应用。与传统的神经网络模型不同,RNN 可以接收任意长度的输入序列,并能够将序列中的上下文信息进行捕捉和传递。RNN 的优势在于可以处理不定长的输入序列,并能够传递序列中的上下文信息,因此在处理自然语言时非常有优势。但是,RNN 在处理长序列时容易出现梯度消失或梯度爆炸的问题,因此在实践中通常会使用 LSTM(long short-term memory)或门控循环单元( Gated Recurrent Unit, GRU)等改进的 RNN 模型。



  • Autoencoder

一种常见的无监督学习模型,可以用于 NLP 领域中的文本特征提取和降维。

Autoencoder 的基本原理是将输入数据压缩成一个低维度的特征向量,再通过解码器将这个特征向量还原成原始数据。在这个过程中,模型通过最小化输入和输出之间的差异来训练参数,从而得到一个可以将原始数据编码为紧凑特征向量的模型。

在 NLP 中,Autoencoder 模型通常使用词嵌入作为输入,然后将其压缩成一个低维度的特征向量。这个特征向量可以用于后续的分类、聚类、文本生成等任务中。

具体地,Autoencoder 模型在 NLP 中的基本流程如下:

输入层:将文本中的每个单词转化成一个向量表示。

编码器:通过一系列的全连接层或卷积层将输入压缩成一个低维度的特征向量。

解码器:通过一系列的全连接层或卷积层将特征向量还原成原始的输入数据。

损失函数:比较输入和输出之间的差异,通过反向传播算法来更新模型参数。

Autoencoder 模型的训练过程可以分为两个阶段。首先,在无标签数据上进行训练,将输入压缩成一个低维度的特征向量,使其尽可能地保留原始数据的重要信息。然后,将这个特征向量用于有监督学习任务中,如文本分类、情感分析等。

总之,Autoencoder 是一种有效的文本特征提取和降维方法,可以将高维度的文本数据压缩成低维度的特征向量,从而提高模型的准确率和效率。



  • Transformers

一种基于自注意力机制的神经网络模型,由于其在自然语言处理领域中取得的突出表现,已成为 NLP 领域的重要模型之一。

Transformers 的基本原理是首次在 2017 年的论文"Attention Is All You Need "中提出,它放弃了递归,利用多头自注意力机制来处理输入序列中的关系,并在此基础上实现文本编码和解码。该模型由多层堆叠的自注意力模块和全连接层组成,其中自注意力模块是 Transformers 的核心部分。

在自注意力模块中,模型根据输入序列中每个词之间的相互关系动态计算出每个词对其他词的重要性权重,并据此计算出每个词的上下文表示。这种自注意力机制不仅能够捕捉序列中的长距离依赖关系,还可以避免 RNN 模型中的梯度消失和梯度爆炸问题,因此具有较好的性能表现。

具体地,Transformers 模型在 NLP 中的基本流程如下:

输入序列中的每个词先通过一个嵌入层转换成向量表示。

输入向量经过多层堆叠的自注意力模块和全连接层处理,产生一个固定长度的特征向量,该向量可用于下游任务如文本分类、文本生成等。

解码器中的每个位置的输入,都是由之前已生成的部分序列和目标序列中的向量经过自注意力和全连接层处理得到的。

模型使用交叉熵损失函数训练,即最小化模型生成结果和目标序列之间的差异。

Transformers 模型相比于传统的基于 RNN 或 CNN 的模型,在 NLP 任务中具有更好的表现。由于自注意力机制,Transformers 模型能够处理不同位置之间的依赖关系,使得它可以应对包含长文本或多段文本的任务,例如机器翻译、文本生成、情感分析等。



以上分类器模型在 NLP 中都有广泛的应用,并在不同的任务中表现出色。在选择分类器模型时,需要考虑到数据集的特点、任务的要求等因素,并结合实际情况进行调整和优化。

总结

NLP 是 AI 中快速发展的研究领域之一,其应用涉及翻译、摘要、文本生成和情感分析等任务。越来越多的企业利用 NLP 去实际解决某些问题。

对于和笔者一样刚开始入门 NLP 可以从基础学习,例如朴素贝叶斯、决策树等算法。等有一定的理论基础后,再学习使用 NLP 工具和库,例如 NLTK、SpaCy、Stanford CoreNLP、Gensim、TextBlob 等。这些工具和库可以加快实现 NLP 任务的速度,并提供了许多有用的功能。需要我们不断学习和实践,逐步深入了解相关技术和算法,并通过实践掌握相关工具和库的使用。

用户头像

还未添加个人签名 2019-01-29 加入

还未添加个人简介

评论

发布
暂无评论
NLP 入门导论_AI_小付聊测试_InfoQ写作社区