2021年6月19日
19分钟阅读
本文基于在NAACL 2021“教学NLP”研讨会和L3-AI在线会议上的演讲。
烹饪需要掌握技能、技术、配方、设备、食材、营养学等多方面知识。但餐厅的成功不仅在于烹饪本身,更在于菜单设计:菜品需要协调一致,食材供应可靠,每道菜需稳定复现,同时要服务市场需求并获得足够利润。
“做什么”与“怎么做”
应用型NLP更像是决定“做什么菜”,而非“怎么做菜”。实际上,很大一部分工作是决定“是否要做菜”——找到适合使用NLP且可行的项目。
“怎么做”:实现模型、理解模型工作原理、机器学习基础、训练与评估、提升结果、熟悉标准库、编程与软件工程。这些可以从书本和课程中学到。
“做什么”:将应用目标转化为机器学习需求,设计系统功能及评估方式。包括判断是否使用机器学习(或改用规则系统),选择最合适的组件和模型类型,深入理解输出在更大应用上下文中的用途,找到正确权衡(如速度与准确性、便利性与灵活性)。这还需要了解可用资源和库,以及何时使用什么。“做什么”是应用型NLP中最重要的部分——但缺少“怎么做”无法解决,仅有“怎么做”也不够。
假设工作于某大型机构,IT服务台收到大量支持工单。目标:更快速高效地回复工单,并了解最常见问题以预防未来发生。
可能的NLP方案:
然而数据边界不清晰,关键短语可能不连贯。数据不一致性越大,模型训练越困难。可能需要使用定制嵌入来提高准确性。系统必须有用——如何衡量有用性?
项目成败的关键在于对“做什么”的回答。如果用错误的方式定义问题,即使模型在测试集上达到高准确率也无济于事。
首先,不能脱离应用场景思考应用型NLP。其次,不应认为“做什么”是简单的——假设应用需求转化为机器学习设计很容易,会想当然认为第一个想法就是正确的,这可能导致昂贵错误。更好的做法是假设第一个想法可能不理想,甚至完全不可行。
准确性:可以在测试集上计算的任何客观分数。
实用性:模型在应用或项目中的实际影响,更难衡量,始终依赖于应用上下文。
评估指标应至少与实用性相关(但不一定是完美的线性关系)。在应用型NLP中,评估指标不是一切。
研究 | 应用 |
|---|---|
构建公共知识库 | 从公共知识库学习 |
寻找可泛化的上下文无关解决方案 | 将通用解决方案适配到特定上下文 |
使用标准评估进行直接比较 | 将评估对齐项目目标 |
标准化所有非新颖部分 | 做任何有效的事 |
在研究中,评估主要用于验证新想法;在应用中,评估主要用于选择哪些系统上线试运行,将评估作为实用性的代理指标。
对于应用型NLP,少量语言学知识可以发挥很大作用,避免昂贵错误。
词法类型、标记与形态学
以IT工单为例:提取关键词作为主题标签。如果包含二元组和三元组,可能得到像“n't turn”这样常见但无用的主题,而不是“turn on”和“resets”。理解词法类型与标记的区别,以及齐普夫定律,有助于约束系统输出,使应用更有用。
组合句法与语义
常见误区:想让模型识别“问题”对应的文本子序列。但“问题”并不总是以某个特定句法成分表达,可能甚至不在单个谓词-论元结构中。解决方案:将问题建模为文本分类任务,这样标注更一致,也更容易让领域专家参与。
在聊天机器人场景中,需要将文本解析为函数调用及参数。句法知识有助于正确定义参数边界(参数应为句法成分),语义知识帮助理解真实文本远复杂于简单的“主-谓-宾”示例。
应用型NLP最重要的是思考产品或应用目标。不能抽象掉这些目标,只埋头优化某个指标——那样永远无法交付有价值的东西。需要尝试不同的数据方案、模型实现、甚至评估方式。
评估在项目中扮演不同角色:留出的分数只是模型优于另一模型的证据,需要去验证。准确率不等于实用性。
应用型NLP需要大量决策,通常很困难。迭代很重要,建立更好的直觉来判断什么可能有效、什么可能无效也很重要。语言学中的某些主题对此非常有帮助。在掌握扎实的编程技能和机器学习概念之后,值得在语言学技能树上投入一些点数。
应用型NLP不是研究型NLP减去新颖性和深度思考。它需要不同的思维方式:应用型NLP思维。FINISHED
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。