深度学习推动了人工智能技术的迅猛发展,特别是在感知层面上的应用,例如语音识别和图像识别。然而,尽管这些技术取得了显著进展,但它们仍局限于基本的感知层面,无法实现真正的智能。智能的核心在于语言的理解,因此未来十年,自然语言处理(NLP)技术将成为最受关注的研究领域之一。正如古语所言:“不积跬步,无以致千里。”技术的进步需要坚实的基础,因此本文将介绍当前主流的NLP技术。
按照语言习惯,NLP技术可以分为三个层次:词法、句法和语义。
词法是语言的最基本单元,因此词法技术可以视为NLP技术的底层基础。词法技术的核心任务是识别和区分文本中的单词,并对其进行预处理。由于单词具有固定的形式,通过规则匹配可以实现较为准确的识别。然而,当前的分词技术在语义理解方面仍有不足,如何更好地辅助语义理解是未来分词技术的关注点。
词法构成了句法,句法技术成为NLP的第二层次。句法是对语言进行深层理解的基础,尤其在机器翻译中至关重要。句法技术的主要任务是识别句子中的句法成分及其关系,通常以句法树的形式展示。句法分析一直是NLP技术发展的瓶颈,主要难点在于歧义和搜索空间。一方面,自然语言存在大量歧义现象,人类可以利用丰富的先验知识消除歧义,而机器在这方面则存在明显不足。另一方面,句法分析需要处理巨大的搜索空间,必须设计高效的解码器以在合理时间内找到最优解。
不论是英语还是汉语,语言的最终目标都是表达含义。因此,语义理解是NLP技术的最终目标。各种NLP技术都以不同的方式服务于这一目标。语义技术不同于词法和句法,其评估结果需要通过具体场景来判断,例如在关键词提取中,可以通过分析结果来衡量机器对浅层语义的理解能力。
接下来,我们将依次介绍词法和句法中的关键技术,以及目前流行的基于机器学习的词向量和深度学习技术。
词法技术的核心任务是识别和区分文本中的单词,即分词过程。词法技术主要分为两大类:规则分词和统计分词。不同语言的分词技术差异较大。例如,英文分词可以通过空格轻松实现,而汉语需要特定的技术来区分词语,且精确度略低。因此,本文将重点介绍中文分词技术。
规则分词通过词典库和字符串匹配来实现文本的分词。由于单词具有固定的形式,这种方法能达到较高的准确率。研究表明,中文中约90%的句子可以通过正向最大匹配法和逆向最大匹配法准确切分,只有约9%的句子需要进一步处理,而不到1%的句子需要进一步处理才能准确切分。这种方法速度快,但由于依赖词典,无法识别词典中未出现的词语,也无法处理歧义问题。
实际上,规则分词常用于文本的初步分词,某些情况下可以完全满足业务需求。
规则分词存在两个缺陷:无法处理未登录词和歧义问题。为解决这些问题,需要引入统计学方法,即语言模型。
语言模型是对语言进行建模,其核心目标是找到最符合语言习惯的表达方式(概率最大)。语言模型广泛应用于多个NLP领域,包括信息检索、机器翻译和语音识别。语言模型可以用概率论的语言描述为:确定长度为m的字符串的概率分布,可以简化为公式1所示。
观察公式1可知,当文本较长时,计算难度较大。为解决这个问题,提出了n元模型(n-gram model)以简化计算。n元模型忽略距离大于等于n的上文词的影响,简化后的公式如公式2所示。
当n=1时称为一元模型(unigram model),此时句子的概率表示为P(ω1,ω2,…,ωm)=P(ω1)P(ω2)…P(ωm),这意味着每个词都是独立的,失去了词序信息。因此,一元模型的效果不理想。当n=2时称为二元模型(bigram model),公式2变为P(ωi|ω1,ω2,…,ωi-1)=P(ωi|ωi-1)。当n=3时称为三元模型(trigram model),公式3变为P(ωi|ω1,ω2,…,ωi-1)=P(ωi|ωi-2,ωi-1)。显然,当n≥2时,该模型可以保留一定的词序信息,且n越大,保留的信息越丰富,但计算成本也呈指数级增长。
通常使用频率计数的比例来计算n元条件概率,如公式4所示。
实际应用中,经常使用规则分词和统计分词相结合的方式,即混合分词。这种组合方式既能在短时间内处理大量文本,又能处理无法划分或存在歧义的文本。
由于词语是语言表达的基本单元,因此NLP技术中几乎都会用到分词技术。分词通常作为数据预处理的一部分,为后续任务服务。
词性是词汇的基本语法属性,通常也称为词类。词性标注是在给定句子中断定每个词的语法范畴,并标注其词性。例如,表示人、地点、事物等概念的词为名词,表示动作或状态变化的词为动词,描述或修饰名词属性的词为形容词。例如,给定句子:“这儿是个非常美丽的公园”,标注结果应为:“这儿/代词 是/动词 个/量词 非常/副词 美丽/形容词 的/结构助词 公园/名词”。
中文中,一个词的词性往往不是固定的,同音同形的词在不同场景下可能有不同的词性。尽管如此,大多数词语特别是虚词,通常只有一个或两个词性,且高频词性在标注中更为常见。因此,对常用词的词性识别可以覆盖绝大多数场景,满足基本的准确度要求。
目前主流的方法是将词性标注作为序列标注任务处理,常用的方法包括隐马尔可夫模型和条件随机场模型。此外,词性标注需要一定的标注规范,如将词分为名词、形容词、动词等,并用“n”“adj”“v”等符号表示。中文领域尚未统一标注标准,主流的标注集主要包括北大词性标注集和宾州词性标注集。
词性标注主要用于提高语义的精确表达,例如在问答系统中可以提高问题相似度判断的准确性。
命名实体识别(NER)是自然语言处理的基础任务之一,是信息抽取、信息检索、机器翻译和问答系统等技术不可或缺的组成部分。其目标是识别文本中的人名、地名、组织机构名等命名实体。由于这些实体数量庞大且构成方式复杂,通常无法在词典中完全列出,因此NER需要独立处理。
NER通常分为三大类(实体类、时间类和数字类)和七小类(人名、地名、组织机构名、时间、日期、货币和百分比)。数量、时间和日期等实体通常可以通过模式匹配获得较好的识别效果,相比之下,人名、地名和机构名较为复杂,因此近年来研究主要集中在这些实体上。
尽管学术界普遍认为NER已经是一个解决了的问题,但仍存在挑战,例如:
中文NER面临的挑战更大,主要有以下几点:
命名实体识别通常采用三种方法:基于规则、基于统计和混合方法。
命名实体识别目前主要用于知识图谱构建,知识图谱依赖于命名实体识别技术来构建实体之间的关系。
在自然语言处理中,句法分析是机器翻译等任务的核心数据结构。句法分析是对语言进行深层次理解的基础,主要任务是识别句子中的句法成分及其关系,通常以句法树的形式表示。句法分析一直是自然语言处理的重要研究方向,主要难点在于歧义和搜索空间。
句法分析(Parsing)是从单词串得到句法结构的过程,完成该过程的工具或程序称为句法分析器(Parser)。句法分析器可以分为完全句法分析和部分句法分析两类。完全句法分析旨在获取整个句子的句法结构,而部分句法分析只关注部分成分,例如常用的依存句法分析。
句法分析方法可以简单分为基于规则的方法和基于统计的方法两大类。基于规则的方法在处理大规模真实文本时存在缺陷,而基于统计的方法随着大规模标注树库的建立而兴起。典型的统计句法分析模型包括概率上下文无关文法(PCFG),在句法分析中广泛应用。
统计句法分析需要语料数据的支持,相较于分词或词性标注,句法分析的语料集更为复杂,是一种树形标注结构,称为树库。目前常用的树库包括宾州树库(Penn TreeBank,PTB)和中文宾州树库(Chinese TreeBank,CTB)。不同的树库有不同的标记体系,使用时需注意。
依存句法分析是一种常用的句法依存技术,通过分析句子内部成分之间的依存关系来解释句法结构。这种方法主张句子中的核心动词是支配其他成分的中心,而自身不受任何成分支配。直观来说,依存句法分析识别句子中的主谓宾、定状补等语法成分,并分析各成分之间的关系。
文本表示是自然语言处理的基础工作,直接影响整个自然语言处理系统的性能。文本向量化是文本表示的重要方式之一,即将文本表示为一系列能够表达文本语义的向量。当前阶段,大多数文本向量化研究是通过词向量化完成的。
词袋模型是最简单的文本向量化方法,将文本表示为词典中每个单词出现的频率。该方法简单易行,但存在维度灾难、无法保留词序信息和语义鸿沟等问题。
词向量技术利用神经网络从大量无标注文本中提取有用信息。词向量技术解决了词袋模型不包含语义信息的问题。分布假说认为上下文相似的词,其语义也相似。基于此,词向量模型通过神经网络建模上下文与目标词之间的关系。
CBOW和Skip-gram模型是当前流行的词向量模型。CBOW模型通过上下文预测当前词,而Skip-gram模型则通过当前词预测上下文。两者各有优劣,可根据实际效果选择。
深度学习在NLP中的应用主要集中在循环神经网络(RNN)上,RNN通过添加记忆单元处理任意长度的序列,更适合处理序列相关的问题。LSTM是RNN的一种变体,专门设计用于学习长时依赖,通过门结构控制信息的流动,从而更好地捕捉长期依赖信息。
Seq2Seq模型在自然语言生成(NLG)和自然语言理解(NLU)中应用广泛,尤其在聊天机器人、机器翻译和自动文摘等领域。Encoder-Decoder结构是Seq2Seq模型的基础,但目前尚无单一模型能够完美解决NLG和NLU的问题。
总结 本文简要介绍了NLP中的常见技术,希望起到抛砖引玉的作用。由于篇幅有限,许多细节未能详述,感兴趣的读者可以参考相关资料。