NLP产品级系统设计模式

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介: 在本文中,作者从六个方面描述了一些生产NLP系统的常见设计和部署模式。这些是团队为了使产品开发与技术、业务、战略和操作目标保持一致而必须做出的选择或权衡。

摘要:在本文中,作者从六个方面描述了一些生产NLP系统的常见设计和部署模式。这些是团队为了使产品开发与技术、业务、战略和操作目标保持一致而必须做出的选择或权衡。

虽然构建NLP系统可能很复杂,但是在构建NLP系统时,重要的是要记住,构建的系统需要解决某一个任务,并且只是实现这个目标的一种方法。在系统构建过程中,工程师、研究人员、设计师和产品经理通常有多个选择。虽然我们的书主要集中在技术或基础构建块上,但是将这些构建块放在一起来设计复杂的结构来满足你的需求将需要一些模式思考。模式思维和描述模式的语言是“在专业领域中描述好的设计实践或有用的组织模式的方法”。这在许多学科中都很流行(Alexander, 1979),包括软件工程。因此我们主要从以下从六个方面来研究这些设计选择:

1在线系统和离线系统:在线系统是指需要实时或接近实时地进行模型预测的系统。有些任务,如打击垃圾邮件、内容审核等,本质上需要一个在线系统。另一方面,离线系统不需要实时运行。它们可以被构建并利用像Transductive Learning这样的方法同时在一批输入上高效运行。有些在线系统可能是被动的,甚至可以以在线方式(也就是在线学习)进行学习,但是许多在线系统是通过定期的离线模型构建来构建和部署的,并将其推向生产。使用在线学习构建的系统应该对敌对环境特别敏感。最近的一个例子是著名的Twitter聊天机器人Tay,一开始从通过网络进行在线学习。但是很快Tay就开始用攻击性的推特回应,其母公司微软在推出后不到一天就不得不关闭这项服务。系统构建的一个典型轨迹是首先构建一个离线系统,将其作为一个“在线”系统进行大量的工作,然后通过添加反馈循环并适当的改变学习方法使其成为一个“在线学习”系统。虽然这种方案在代码库中增加了不少的复杂性,但有的时候是非常有必要的。下图显示了“Facebook免疫系统”作为一个在线系统检测垃圾邮件的例子(大约2012年)。注意在线系统比类似的离线系统需要更多的工作。

2af69e70365b5fb3fd5acf9475bf3d77272f0e03 

2、交互系统与非交互系统:大多数自然语言系统都是非交互的,因为预测仅仅来自一个模型。实际上,许多产品级NLP模型都深入到数据处理的“Extract-Transform-Load”(ETL)管道的转换步骤中。因此在某些情况下,人类参与到预测的循环中可能会有帮助。下图展示了Lilt Inc.的一个交互式机器翻译接口示例,其中模型和人共同参与了所谓的“混合主动模型”(Green 2014)的预测制作。虽然交互式系统很难设计,但通过将人带入循环,仍然可以实现非常高的准确性。

d04bc0e3f9f260fdd3e29a19788bef9296bdf43c 

3、单模式系统与多模式系统:在学习和预测过程中合并多个模式可能会有帮助。例如,新闻转录系统不仅要使用音频流,还要使用视频帧作为输入。例如,谷歌最近的一项名为“Look to Listen”(Ephrat et al 2018)的工作,使用多模态输入来解决演讲者源分离的难题(又称鸡尾酒会问题)。多模态系统的构建和部署是昂贵的,但是对于将来自多个模态的输入组合在一起的困难问题,提供的信号在其他情况下是单模态无法实现的。我们在NLP中也看到了这样的例子。例如,在多模式翻译中,我们可以通过在可用的情况下合并来自多种源语言的输入来提高翻译质量。在为web页面生成主题(主题建模)时,可以将从其中包含的图像中提取的特性与页面上的文本合并在一起。

76318c9cbbe7edfa9af6e1d3f3a726b597f8615c 

4、端到端系统与分段系统:自深度学习问世以来,研究人员和工程师的另一个选择是构建一个复杂的NLP系统,要么作为不同单元的管道,要么作为一个整体端到端系统。端到端设计在机器翻译、总结和语音识别等许多领域都很有吸引力,在这些领域,精心设计的端到端系统可以显著地降低实现和部署的复杂性,当然还可以减少代码行数。分段系统将复杂的NLP任务分解为子任务,每个子任务分别进行优化,独立于最终的任务目标。分段系统中的子任务使它变得模块化,并且很容易“修补”生产中的某个特定问题,但通常伴随着一些“技术债务”。

805284e04b60c8ec9ef2c9125f99fc91a67d06c3 

5、封闭域与开放域系统:封闭域系统是为了单一目的而明确优化的,以便在该域中表现良好。例如,可以明确优化机器翻译系统使之与生物医学期刊一起工作——这需要对生物医学平行语料库进行训练。开放域系统旨在用于通用目的(例如Google Translate)。再举一个例子,考虑一个文档标记系统。如果系统只预测它所训练的许多类中的一个(典型的情况),那么它将导致一个封闭域系统。但是,如果系统被设计成在运行时发现新的类,那么它就是一个开放域系统。在翻译和语音识别系统中,封闭域系统也被称为“有限词汇”系统。

6、单语与多语系统:为使用单一语言而构建的NLP系统称为单语系统。建立和优化单语系统是很容易的。相反,多语言系统可以处理多种语言。当它们在一个不同语言的数据集上接受训练时,它们的结果是显而易见的。虽然构建一个多语言系统很有吸引力,但是专注于一个单语版本有它的优势。研究人员和工程师可以利用该语言中广泛且可用的资源和领域专业知识,以生产高质量的系统,而在一般的多语言系统中,这是不可能的。由于这个原因,我们经常发现许多单语系统集合的多语言产品被单独优化,并使用语言标识组件将输入分发给单语系统。

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《Design Patterns for Production NLP Systems

作者:Delip

译者:黄小凡,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

相关文章
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
springboot基于人工智能和自然语言理解技术的医院智能导医系统源码
智能导诊系统可为患者提供线上挂号智能辅助服务,患者根据提示手动输入自己的基本症状,通过智能对话方式,该系统会依据大数据一步步帮助患者“诊断”,并最终推荐就医的科室和相关专家。患者可自主选择,实现“一键挂号”。这一模式将精确的导诊服务前置,从源头上让医疗服务更高效。
451 2
|
6月前
|
机器学习/深度学习 存储 人工智能
人工智能自然语言对话系统
人工智能自然语言对话系统
132 1
|
6月前
|
设计模式
二十三种设计模式全面解析-职责链模式的高级应用-日志记录系统
二十三种设计模式全面解析-职责链模式的高级应用-日志记录系统
101 1
|
4月前
|
SQL 自然语言处理 关系型数据库
PolarDB上实现一个自然语言查询系统
PolarDB上实现一个自然语言查询系统
|
2月前
|
机器学习/深度学习 自然语言处理 搜索推荐
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
159 0
|
3月前
|
设计模式 存储 前端开发
揭秘.NET架构设计模式:如何构建坚不可摧的系统?掌握这些,让你的项目无懈可击!
【8月更文挑战第28天】在软件开发中,设计模式是解决常见问题的经典方案,助力构建可维护、可扩展的系统。本文探讨了.NET中三种关键架构设计模式:MVC、依赖注入与仓储模式,并提供了示例代码。MVC通过模型、视图和控制器分离关注点;依赖注入则通过外部管理组件依赖提升复用性和可测性;仓储模式则统一数据访问接口,分离数据逻辑与业务逻辑。掌握这些模式有助于开发者优化系统架构,提升软件质量。
52 5
|
3月前
|
存储 自然语言处理 算法
使用面向对象方法优化自然语言处理系统
【8月更文第11天】自然语言处理(NLP)是计算机科学领域的一个分支,专注于让计算机能够理解、解释和生成人类语言。NLP系统通常需要处理大量不同的任务,如文本分类、情感分析、机器翻译等。这些任务往往涉及复杂的算法和技术栈,而面向对象编程(OOP)可以作为一种强大的工具来组织这些复杂的逻辑,使得代码更加模块化、可扩展且易于维护。
48 3
|
3月前
|
机器学习/深度学习 自然语言处理 区块链
自然语言处理 Paddle NLP - 开放域对话系统-理论
自然语言处理 Paddle NLP - 开放域对话系统-理论
20 0
|
3月前
|
机器学习/深度学习 自然语言处理
自然语言处理 Paddle NLP - 任务式对话系统-理论
自然语言处理 Paddle NLP - 任务式对话系统-理论
62 0
|
4月前
|
SQL 机器学习/深度学习 自然语言处理
实现自然语言查询系统时,如何确保查询结果的准确性和可靠性
实现自然语言查询系统时,如何确保查询结果的准确性和可靠性