<aside> 💡
本篇博客是我计划撰写自然语言处理理论系列的第一部分—NLP综述及其核心概念,不同于市面上大部分有关NLP的书籍的知识排版规则,该系列对NLP中常见的知识进行直接了当、开门见山式的讲解,并没有追求整个NLP理论体系的完整性,比较适合希望快速上手和掌握NLP基本概念和理论的朋友。如果想要力求更为完整的知识体系和理论框架,推荐大家阅读额外的书籍、论文、互联网资源等作为补充以达到更好的学习效果。
</aside>
相信大家对语言这个词并不感到陌生,我们日常生活中交流使用的汉语、英语、俄语、法语、西班牙语、阿拉伯语等都被称作语言,但从自然语言处理的视角来看,这些用于人与人之间进行交流的语言被称为“自然语言”。在计算机领域,与自然语言相对的是“编程语言”——它描述的是计算机中用来编写程序的语言,如我们熟知的高级语言(C++、Python、Java等)、汇编语言(x86汇编语言、ARM汇编语言等)和机器语言(x86机器语言、ARM机器语言等)。
Definition 自然语言处理(NLP,Natural Language Processing)是计算机科学与人工智能的一个交叉研究领域,它关注的是能够通过书写、口语表达和组织等自然语言形式的方法来处理人类本身的自然语言。比如将一段文字转换为能够实现其功能的代码、将一段文字中的主要观点提取出来、将一段英语文字翻译成中文等。NLP始于利用计算机科学来理解自然语言原理的计算机语言学(Computational Linguistics),但它并非纯粹开发理论框架,而是通过技术构建来实现实际应用的工程学科;NLP可分为两个重叠的子领域:自然语言理解(NLU,Understanding)和自然语言生成(NLG,Generation),其中NLU专注于语义分析或确定文本的意图与含义,NLG专注于通过机器来生成文本。
自然语言处理系统常常也被人们称为“pipeline(流水线)”,因为该系统往往包括多个处理环节,其中自然语言从“流水线”的一端输入,处理得到的结果从另一端输出(即所谓的“端到端”)。
History 自然语言处理起源于20世纪50年代,当时艾伦·图灵发表的开创性的论文《Computing Machinery and Intelligence》及其后续研究为NLP奠定了基础,随着时间推移,NLP目前分为三种主要体系:
Heuristic-Based NLP(基于启发式/规则/符号化的NLP,20世纪50年代-80年代)
该方法依赖于人们为自然语言处理系统预先定义好的规则和特定领域的知识库与字典,这些规则通常源自相关专家的经验和研究。典型的例子是常用于模式匹配和文本处理任务的正则表达式(Regex)。
Statistical and Machine Learning-Based NLP(基于统计方法和传统机器学习的NLP,20世纪80年代-21世纪初)
该方法通过整合机器学习算法和概率来对语言模式进行建模,运用统计规则并通过数据集进行学习,其中需要人工标注好的语料库作为训练数据以及进行特征工程处理。常见的机器学习算法有朴素贝叶斯、支持向量机和隐马尔可夫模型等。
Neural Network-Based NLP(基于神经网络/深度学习的NLP,21世纪初-至今)
该方法是当前领域的主流方法,应用诸如循环神经网络(RNNs)、长短期记忆网络(LSTMs)和Transformer架构等模型来进行自然语言处理,该类方法的显著特征是模型训练需要大量的数据以及算力。
Application 自然语言处理的应用范围十分广泛,以下是生活中常见的一些应用:
情感分析(Sentiment Analysis)
情感分析是对文本信息中的情感倾向进行分类的过程。通常情况下情感分类模型的输入是一段文本,输出是对该段文本表达的情感属于积极、消极或中性的概率,该概率计算通常基于人工生成的特征、n-gram、TF-IDF特征或者利用深度学习模型捕捉序列化的长短期依赖关系。情感分析通常被应用于对各类在线平台的客户评论进行分类(如某宝、某多上的商品评论),也可被用于识别在线评论中的心理疾病迹象等场景。
机器翻译(Machine Translation)
机器翻译是我们日常生活中使用频率最高的NLP应用之一,其旨在实现不同语言之间的自动翻译,此类模型的输入是指定源语言的文本,输出是指定目标语言的文本。常见的翻译服务提供商有DeepL、Google翻译、微软翻译等。
文本生成(Text Generation)
文本生成,更为正式的名称为自然语言生成,它能够生成类似人类书写的自然语言文本,此类自然语言模型可以通过微调生成不同体裁和格式的文本(如推文、博客或者计算机代码等),此类技术广泛用于自动补全、聊天机器人等场景。
垃圾邮件检测(Spam Detection)
垃圾邮件检测是NLP中常见的二元分类问题,其目的是将电子邮件分类为垃圾邮件或者非垃圾邮件。垃圾邮件检测器接收邮件的标题、正文、发件人姓名等各类文本作为输入,旨在输出该邮件属于垃圾邮件的概率。Gmail等电子邮件服务商通过此类模型检测未经用户请求的垃圾邮件并将其移入至指定的垃圾邮件文件夹,从而提升用户的体验。
命名实体识别(Named Entity Recognition)
命名实体识别旨在将文本中的实体提取至人们预定义好的类别中,如人名、组织机构名、地名、数量值等。模型的输入通常是文本,输出是各类命名实体及其所在文本中的起始和结束位置。例如“The Wikipedia shows that Michael Jackon is one of the greatest artists of America.”这句话的“Wikipedia”会被匹配至我们预先定义好的“组织机构名”这一类别中、“Michael Jackson”会被匹配至“人名”类别、“one”会被匹配至“数量”类别、“America”会被匹配至“国家”类别中。
语法纠错(Grammatical Error Correction)
语法纠错模型通过编码语法规则来纠正文本中的语法错误,这常常被视为一种序列到序列(sequence-to-sequence)任务(模型将不合语法的句子作为输入经过训练纠正后输出正确的句子)。例如Grammarly的在线语法检查工具、常见的线上作文批改工具等。
摘要生成(Summarization)
摘要生成是一项旨在缩短文本来凸显最主要、最相关信息的NLP技术。其中可分为两大方法类别:提取式摘要(Extractive Summarization)和生成式摘要(Abstractive Summarization)。提取式摘要侧重于从长文本中提取出最重要的句子并将这些句子组合成摘要(先对输入文本中的每个句子进行评分然后再选择若干句子组成摘要);生成式摘要通过转述原文本生成摘要,类似于撰写原文中没有包含的词汇和句子的摘要,其通常也被作为序列到序列任务(输入是长文本、输出是摘要)。
. . . . . .