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

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

真的有人做这样的研究。

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

假如让AI续写给哈利波特

看笔墨场景,猜下一步辇儿为。

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

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

从咒语入门

既然想到要做这样一个任务,那一定得有相应的语料库,用监督学习的方法,就须要一段笔墨场景描述,对应一段下一步辇儿为。

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

比如说:

Lumos:荧光闪烁

Alohomora:开锁

Avada Kedavra:阿瓦达索命咒

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

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

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

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

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

行动是这样的:

发光。

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

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

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

数据量不足,怎么办呢?

原著不足,同人来凑。

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

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

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

各种模型哪家好

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

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

看来,结论来了:

在看场景猜行动这个任务上,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