概述
什么是语言
语言是一种由三部分组成的符号交流系统,包括记号、意义和两者间的对应关系,是一种由组合语法规则制约、旨在传达语义的记号形式系统。
什么是自然语言
自然语言是一种上下文相关的信息表达和信息传递方式,是人类在日常生活中用于交流和表达思想的语言系统。
自然语言相比于人工语言/编程语言难在何处?
- 模糊性和歧义
自然语言同一个词或句子在不同上下文中可能有多种解释。(如南京市长江大桥),而编程语言每一个符号或指令都有唯一的解释。 - 上下文和世界知识(语言无关)的利用和处理
自然语言的理解往往需要依赖上下文、文化、背景知识等。(如代词需要依赖上下文推测指代对象)。编程语言的指令通常是自包含的,执行时不需要推理复杂的上下文。代码的上下文(如变量作用域)是严格定义的,通过规则可以轻松推导出含义。 - 非结构化、表达具有多样性和动态性
自然语言数据往往是非结构化的,语言表达可以是自由形式的,没有严格的格式要求。编程语言是高度结构化的,遵循明确的语法和语义规则,每一个代码片段都可以通过编译原理的方法处理。
什么是自然语言处理
自然语言处理是指利用计算机对自然语言进行各种加工处理、信息提取及应用的技术,实现人与机器之间的自然语言交互,包括自然语言理解和自然语言生成。其中自然语言理解的目标是理解文字的意义,自然语言生成的目标是用文字描述特定的意图和思想。
自然语言理解
自然语言理解旨在使计算机能够理解和解释人类使用的自然语言,包括语义理解、词义消歧、指代消解、情感分析等任务。
自然语言生成
自然语言生成旨在让计算机自动生成具有自然语言形式的文本,包括文本摘要、图像描述生成、对话系统等任务。
自然语言处理方法的演变
基于规则的方法、基于统计的方法、基于深度学习的方法。基于规则的方法属于理性主义的方法,以生成语言学为基础,依靠人类先验知识。基于统计的方法、基于深度学习的方法属于经验主义的方法,以数据驱动为基础,从数据中学习经验和知识。
基于规则的方法
基于规则的方法使用专家设计的语法、词汇表和语言规则来处理自然语言。它们依赖于语言学家和专家创建的手工规则,用于解析、理解和生成自然语言文本。具有针对性强、可解释性强的优点。但是存在扩展性差、对变体的处理能力弱、对复杂上下文处理困难的问题。
基于统计学习的方法
统计学习方法依赖大量的训练数据来建模语言中的模式和概率关系。这种方法相对于规则驱动方法更加灵活和适应性强,能够处理更加复杂的语言现象。但是存在数据稀疏问题,由于语料库不能覆盖所有词语,在计算时会出现大多数的数值缺失,数据越稀疏结果越不准确。并且存在参数规模问题,当考虑的K阶马尔可夫假设的K变大时,参数量指数级增加。
基于神经网络的方法
基于神经网络的方法具有强大的表达能力、处理复杂上下文的能力和迁移学习能力,但是它依赖大量训练数据,可解释性差,推理和训练时间长。