看咒语,知情节?他们用《哈利·波特》让AI学习剧透

看《哈利·波特》,学剧透技能

郭一璞 假装发自 霍格沃兹

量子位 报道 | 公众号 QbitAI

看咒语,知情节?他们用《哈利·波特》让AI学习剧透

看到一句《哈利·波特》里的咒语,就知道接下来要发生什么情节了:

是逃课去喝黄油啤酒、蹲在厕所里易容、还是大战伏地魔?

真的有人做这样的研究。

西班牙拉科鲁尼亚大学的两名研究者,在一篇发表在NAACL的论文里提出了一个新的自然语言处理(NLP)任务:

看文字场景,猜下一步行动

举个栗子来讲,就是造一个AI,让它看到“深蓝的天空中挂着一轮金黄的圆月,下面是海边的沙地,都种着一望无际的碧绿的西瓜”,就知道接下来少年闰土要刺猹了。

差不多就是一个小说剧透插件。

从咒语入门

既然想到要做这样一个任务,那一定得有相应的语料库,用监督学习的方法,就需要一段文字场景描述,对应一段下一步行动

这样看来,《哈利·波特》里固定的几十个咒语就是最佳的文字场景描述,毕竟咒语都是一样的,说错了就不管用了,并不像普通的人类自然语言那样博大精深,可以用许多种表述来说同一件事情。

比如说:

Lumos:荧光闪烁

看咒语,知情节?他们用《哈利·波特》让AI学习剧透

Alohomora:开锁

看咒语,知情节?他们用《哈利·波特》让AI学习剧透

Avada Kedavra:阿瓦达索命咒

看咒语,知情节?他们用《哈利·波特》让AI学习剧透

于是,研究人员们开心的抱着《哈利·波特》原著,开始找包含咒语的文本段落,大概长这样:

看咒语,知情节?他们用《哈利·波特》让AI学习剧透

比如最后一个例子是这样的,文本语料库长这样:

哈利感觉好像被看不见的人推着走一样,他听到罗恩疼的叫了一声。

“怎么了?”赫敏紧张地说,步伐也突然停了下来,哈利在后面撞上了她。

“罗恩,你在哪儿?哦,这样太蠢了——Lumos”

行动是这样的:

发光。

原著翻来覆去看完了,研究者们发现了一个尴尬的问题:

七本《哈利·波特》里,只出现了432次咒语。

看咒语,知情节?他们用《哈利·波特》让AI学习剧透

432,这么点哪够当语料库用的啊!

数据量不够,怎么办呢?

原著不够,同人来凑。

因为《哈利·波特》系列太火,粉丝们也觉得这些故事看不够,所以创作了很多同人小说。既然是同人小说,那故事的世界观都是一样的,大家住在同一个霍格沃茨城堡里,上一样的魔药课,说一样的咒语,能用。

于是,研究者们找到了《哈利·波特》粉丝网站,从N多部同人小说里挑出了没有太监(断更)的那一部分小说文本,开始扒拉咒语。

果然,人多力量大,这下原著+同人,凑出了82836个咒语文本段落,语料库够了。

各种模型哪家好

有了数据集,就需要在模型上跑了。

研究者用到了多项逻辑回归(MLR)、多层感知器(MLP)、LSTM、CNN四种模型,并在结果上将频繁动作和不频繁的动作分开。

看咒语,知情节?他们用《哈利·波特》让AI学习剧透

看来,结论来了:

看场景猜行动这个任务上,LSTM是最好用的,指标相对较高;其他的,像逻辑回归之类的,不太行咯。

传送门

论文

Harry Potter and the Action Prediction Challenge from Natural Language

David Vilares, Carlos Gómez-Rodríguez

https://arxiv.org/abs/1905.11037

GitHub

https://github.com/aghie/hpac

版权所有,未经授权不得以任何形式转载及使用,违者必究。