自然语言处理是什么?让计算机理解和生成人类语言
自然语言处理(Natural Language Processing,NLP)是人工智能和语言学交叉的一个领域,研究如何让计算机理解、处理和生成人类的语言。“自然语言”指的是人们日常使用的语言,比如汉语、英语,以区别于编程语言等人工设计的形式语言。
为什么语言很难处理
人类语言充满了歧义和灵活性。一词多义:“苹果”可以是水果,也可以是公司;“打”在“打电话”“打篮球”“打酱油”中意思各不相同。结构歧义:“咬死了猎人的狗”,可以理解为狗把猎人咬死了,也可以理解为某个东西咬死了猎人养的狗。依赖上下文和常识:“他把杯子放在桌子上,它碎了”,“它”指的是杯子还是桌子,需要常识来判断。还有讽刺、比喻、省略、网络新词、方言,以及大量需要背景知识才能理解的表达。对于中文来说,词语之间没有空格,还需要先进行分词。
主要的任务
基础的语言分析:分词、词性标注、句法分析,弄清楚句子由哪些词组成、它们之间是什么关系。信息抽取:命名实体识别,找出文本中的人名、地名、机构名等;关系抽取,找出实体之间的关系;事件抽取。文本分类:判断一篇新闻属于哪个栏目,一封邮件是不是垃圾邮件。情感分析:判断一段评论表达的是正面还是负面的态度。机器翻译:把一种语言自动地翻译成另一种语言。问答系统:根据问题从文本或知识库中找到答案。文本摘要:把长文压缩成简短的要点。对话系统:与人进行多轮的自然对话,比如智能客服和聊天机器人。文本生成:写作文章、生成代码、创作诗歌等。
发展历程
基于规则的阶段:从 20 世纪 50 年代起,自然语言处理主要依靠语言学家编写的语法规则和词典。1954 年的乔治城-IBM 实验首次演示了机器翻译;1966 年,麻省理工学院的约瑟夫·维森鲍姆开发了早期的聊天程序 ELIZA,它通过简单的模式匹配模仿心理治疗师与人对话。基于规则的方法可解释性强,但难以覆盖语言中千变万化的现象。统计的阶段:从 20 世纪 90 年代起,随着大规模语料库的出现和计算能力的提升,基于统计和机器学习的方法成为主流,比如 n 元语法语言模型、隐马尔可夫模型、条件随机场、统计机器翻译,从大量的数据中自动地学习语言的规律。神经网络的阶段:2013 年的 Word2Vec 词向量让词语有了能表示语义的向量;循环神经网络、长短期记忆网络、注意力机制推动了机器翻译等任务的进步。2017 年,谷歌提出了 Transformer 架构。预训练大模型的阶段:2018 年,BERT 和 GPT 开启了“预训练加微调”的范式:先在海量的文本上进行预训练,再针对具体的任务进行微调,在几乎所有的任务上都大幅提升了效果。2020 年的 GPT-3 展示了大模型只需少量示例就能完成新任务的能力;2022 年底,ChatGPT 的发布引起了全球的关注。如今,大语言模型能够以一种统一的方式,通过自然语言的指令完成大多数自然语言处理任务,很多原本需要单独开发的任务,现在只需要一个模型和一段提示词就能完成。
今天的挑战
尽管取得了巨大的进步,自然语言处理仍然面临不少挑战:大语言模型可能产生幻觉,编造不存在的事实;可能带有训练数据中的偏见;对于资源较少的语言和方言,效果仍然较差;在需要严密推理和精确计算的任务上仍会出错;以及如何评价生成内容的质量、如何确保模型的安全和可控,都是活跃的研究方向。