1.2.2 基于机器学习的方法
基于机器学习的自然语言处理方法绝大部分采用有监督分类算法,将自然语言处理任务转换为某种分类任务,在此基础上根据任务特性构建特征表示,并构建大规模的有标注语料,完成模型训练。其基本流程如图1.4所示,通常分为四个步骤:数据构建、数据预处理、特征构建和模型学习。
图1.4 基于机器学习的自然语言处理方法的基本流程
(1)数据构建阶段的主要工作是针对任务的要求构建训练语料,也称语料库(Corpus)。随着自然语言处理研究的不断发展,很多任务都有公开的基准测试集合(Benchmark),可以方便地用来进行模型训练以及模型之间的横向对比。对于没有公开数据的任务,也可以采用人工标注的方法构建训练语料。
(2)数据预处理阶段的主要工作是利用自然语言处理的基础算法,从词汇、句法、结构、语义等层面对原始输入进行处理,为特征构建提供基础。根据所处理的语言和所针对的任务的不同,采用不同的模块和流程。例如,对于汉语,通常需要进行分词;对于英语,通常需要进行词干提取和词的规范化。在此之后,根据特征构建的需求,还可能需要进行词性标注、句法分析、语义角色标注等。
(3)特征构建阶段的主要工作是针对不同的任务,从原始输入、词性标注、句法分析、语义分析等的结果和数据中提取对机器学习模型有用的特征。例如,针对属性级情感倾向分析任务,需要根据目标属性,从句法分析的结果中提取该属性在对应句子中的评价词等信息。特征定义一般都是由人工完成的,根据经验选取适合的特征。这项工作又被称为特征工程(Feature Engineering)。由于针对自然语言处理任务构建的特征通常维数非常高又非常稀疏,因此还会利用特征选择算法降低特征维度。也可以通过特征变换,根据人工设计的准则进行有效特征提取,例如主成分分析、线性判别分析、独立成分分析等。
(4)模型学习阶段的主要工作是根据任务,选择合适的机器学习模型,确定学习准则,采用相应的优化算法,利用语料库训练模型参数。机器学习模型有很多类型,从不同的维度可以分为分类模型、回归模型、排序模型、生成式模型、判别式模型、有监督模型、无监督模型、半监督模型、弱监督模型等,需要根据任务的目标和特性选择适合的模型。学习准则是机器学习模型中重要的因素,包括0-1损失函数(0-1 Loss Function)、平方损失函数(Quadratic Loss Function)、交叉熵损失函数(Cross-Entropy Loss Function)、Hinge损失函数(Hinge Loss Function)等。针对所选择的模型和学习准则,需要选择相应的优化算法,包括梯度下降法(Gradient Descent Method)、牛顿法(Newton Method)、拟牛顿法(Quasi Newton Method)、随机梯度下降(Stochastic Gradient Descent,SGD)等。机器学习三要素——模型、学习准则、优化算法的选择都会对算法的效果产生影响。此外,模型中通常包含一些可以调整的超参数(Hyper-parameter),它们也需要通过实验和经验进行选择。
通过整体流程可以看到,基于机器学习的自然语言处理方法需要针对任务构建大规模的训练语料,以人工特征构建为核心,针对所需的信息利用自然语言处理的基础算法对原始数据进行预处理,并需要选择合适的机器学习模型,确定学习准则,采用相应的优化算法。在整个流程中,需要人工参与和选择的环节非常多,从特征设计到模型,再到优化方法和超参数,并且这些选择非常依赖经验,缺乏有效的理论支持,这也使得基于机器学习的方法需要花费大量的时间和工作在特征工程上。开发一个自然语言处理算法的主要时间都消耗在数据预处理、特征构建、模型选择和实验上。此外,对于复杂的自然语言处理任务,需要在数据预处理阶段引入很多不同的模块。首先,这些模块之间需要单独优化,其目标并不一定与任务总体目标一致。其次,多模块的级联会造成错误传播,前一步的错误会影响后续的模型,这些问题都提高了基于机器学习的方法实际应用的难度。