Lambda,柯里化与聊天机器人

栏目: IT技术 · 发布时间: 5年前

内容简介:知乎专栏:AI工程https://zhuanlan.zhihu.com/p/100084125

作者: 段清华( 金证优智技术总监)

知乎专栏:AI工程

原文链接:

https://zhuanlan.zhihu.com/p/100084125

1. 什么是高阶函数与柯里化函数

Python 为例,一个普通函数是这样的:

def add(a, b):
    return a + b

一个高阶函数是可以把函数当参数输入的函数,例如:

def calc(a, b, f):
    return f(a, b)

它可以这么调用:

calc(1, 2, add)

柯里化函数:

# 如下add_2是一个lambda函数,把add这个两参数函数变为了一个单参数的函数,这被称为柯里化

add_2 = lambda x: add(2 + x)

2. 命令式与自然语言式

NLP和对话机器人的一个趋向,似乎就是鄙视命令行,觉得能用自然语言执行就特别厉害。这两者其实本质是等价的,或者说自然语言命令也只是命令的自然语言泛化而已。

自然语言式:帮我查北京的天气
等价命令式:weather(北京)

或者说这就像是做了多个自然语言到一个命令的泛化,即

自然语言式:帮我查北京的天气
自然语言式:查天气,北京
自然语言式:北京的天气怎么样?
全部都等价命令式:weather(北京)

3. 上下文、多轮对话、高级函数、柯里化

自然语言对话:

- 帮我查北京的天气
- 上海呢

命令式等价:

- weather(北京)
-(上海)

那么有人就会问了,自然语言的第二句是“上海呢”,没提到天气啊,命令式的第二个是(上海),没有查天气啊,这样是不是说明自然语言才有上下文呢?

从自然语言的角度我们可以认为,第二句虽然只说了上海呢,但是其实通过上下文判断,这句话也可以等价改写为“上海的天气呢”。也就是说这里在自然语言中也相当与隐藏了一个来自上下文的天气函数!

假设我们有一个函数是解释命令的,它是一个高阶函数,如:

def parse_func(cmd_func=None, cmd_parameters=None):
    cmd_func(cmd_parameters)

即 parse_func(weather, 北京) 是 weather(北京) 的等价

那我们为了融入weather这个上文怎么做呢?我们需要把上面函数改写为一个高阶函数

def parse_func(cmd_func=None, cmd_parameters=None, last_func=None, last_parameters=None):
    cmd_func = cmd_func or last_func
    cmd_parameters = cmd_parameters or last_parameters
    cmd_func(cmd_parameters)
    return cmd_func, cmd_parameters

即我们调用的时候变成了:

last_func, last_parameters = None, None
last_func, last_parameters = parse_func(weather, 北京, last_func, last_parameters)
last_func, last_parameters = parse_func(None, 上海, last_func, last_parameters)

也就是说我们通过高阶函数与柯里化确实的相当于解决了上下文问题!

总结

在实际的工程中,当然肯定不需要了解什么是高阶函数什么是柯里化,也并不似乎如上所说这么写的代码。实际中机器人会保存所有上下文变量,就类似我们上面的last_func和last_parameters做为对话状态(Dialog State / Dialog Belief)。而cmd_func和cmd_parameters实际上就是对话中NLU所解析出来的意图(Intent)和槽值(Slot)。

推荐阅读

最简单的BERT模型调用方法

从互联网爬虫、自动驾驶到对话机器人,什么是Semantic(语义)?

Rasa介绍:对话系统、产品与技术

AINLP年度阅读收藏清单

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

我们建了一个免费的知识星球:AINLP芝麻街,欢迎来玩,期待一个高质量的NLP问答社区

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。

Lambda,柯里化与聊天机器人


以上所述就是小编给大家介绍的《Lambda,柯里化与聊天机器人》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Making Things See

Making Things See

Greg Borenstein / Make / 2012-2-3 / USD 39.99

Welcome to the Vision Revolution. With Microsoft's Kinect leading the way, you can now use 3D computer vision technology to build digital 3D models of people and objects that you can manipulate with g......一起来看看 《Making Things See》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换