聊天机械人「度天队长」是如何炼成的?
聊天机械人「度天队长」是如何炼成的?
李翰屏
2021年10月
天文台「度天队长」聊天机械人服务于2020年2月推出,采用人工智能技术,自动回答一系列天气或天文有关问题,如现时天气、天气警告、天气预测、潮汐、香港标准时间、世界大城市天气预测、日出日落时间等(图一)。该服务自推出以来广受欢迎,平均每月有接近12万次对答,评分则有接近七成达4分或以上(5为满分)。那么, 这一个聊天机械人背后运作的原理是甚么呢?「度天队长」是如何理解和回应问题呢?
首先, 度天队长会先对问题进行分类。天文台会预先准备一批问题的样本和对话意图(intent),然后运用电脑程式进行监督式学习(supervised learning) , 从而建立起一判断模式(learning model)。
例如,天文台准备了一批与气温有关的问题,如「铜锣湾几度?」、「几度呀宜家?」、「热唔热?」等等,并标签为「温度」类别。同样,天文台会准备其他常见并与天文台服务相关的问题并事先归类标签,从而建立起一套训练数据集。
为了提高训练效率, 在这过程会用自然语言理解(natural language understanding)引擎中的中文分词器(tokenizer)将问题作最合理的句子断词(tokenization)。
| 例如:「香港今日气温如何?」这一问题可以有多种拆成不同标记(token) 的拆法 | ||
| (i) | [香][港][今][日][气][温][如][何] | (一共7个标记) |
| (ii) | [香港今][日][气温如何] | (一共3个标记) |
| (iii) | [香港今日气][温如何] | (一共2个标记) |
| (iv) | [香港今][日气温如何] | (一共2个标记) |
| (v) | [香港][今日][气温][如何] | (一共4个标记) |
很明显, 我们会采用第(v)种拆法, 因为在这种拆法下每一个标记都是有意义的。而如何进行断词的技术细节则视乎我们选用哪一种自然语言理解引擎。之后,我们通过使用一系列人工智能的电脑程式,用这一组已拆好词语和已标记好类别的问题,即一套训练数据集来建立一个问题类别判断模式。
每当有问题查询时,「度天队长」会使用该判断模式去找出这一个问题最有可能的数个类别,并以最高分者为该问题的类别。例如,有市民问「沙田今日几度?」,「 度天队长」会先找出问题的断词, 再运用预先准备好的判断模式,找出该问题与各类别相关程度的分数,最高分数的类别会是该问题的类别:
| 「沙田今日几度?」 --> [沙田][今日][几][度] | |
| 类别: | 分数 |
| (1) 「温度」: | 99.99…分 |
| (2) 「与天气无关」: | 0.00… 分 |
| (3) 「日出、日落」: | 0.00… 分 |
| (4) .... | |
因为"温度"最高分,所以度天队长会将 「沙田今日几度?」归类为「温度」类别。
最后, 聊天机械人会再进一步提取关键词语(entities)内容去理解问题, 并准备答案。在这一例子中,「沙田」,「今日」 和「度」是分别是关键词语「地方」、「时间」及「气温」的内容。由于时间「今日」是一个时段, 所以度天队长会去找当日沙田最高最低气温的资料组织答案回答用户(图二)。
图一:与度天队长的一个对话实例
图二: 聊天机械人的工作流程