
现在,新闻界经常出现诸如“人工智能学会以作者X的风格写作”或“机器学习创造艺术”之类的新闻。 鉴于此,我们决定-如果能够在实践中验证这些引人注目的声明,那将是非常不错的。
是否可以安排机器人之间写诗的斗争? 由此可以使竞争故事变得清晰和可复制吗? 现在我们可以肯定地说这是可能的。 以及如何编写第一个生成诗歌的算法,请继续阅读。
1.经典AI
参加者的任务
根据比赛的条款,参赛者需要建立一个模型,以一种俄罗斯经典音乐的风格为特定主题生成诗歌。 为主题和作者提供输入模型,并在输出中预示一首诗。 完整说明在竞赛
资料库中 。
该主题的条件比较温和:可以是短句,短语或几个单词。 唯一的限制是大小:不得超过1000个字符。 专家将对将要测试算法的主题进行汇编。 一些主题将是公开和公开的,但是一组隐藏的主题将用于确定最佳算法。
比赛的全球思想是:任何诗歌都可以汇编几个单词的简短注释。 让我们来看一个例子。
如果摘录自
“ Eugene Onegin” A.S。 普希金 :
“ ...那年,秋天的天气
我在院子里站了很久
冬天在等,大自然在等。
一月降雪
在第三天晚上。 早起
塔季扬娜透过窗户看见
早晨,白院
窗帘,屋顶和围栏,
玻璃上的灯光图案
冬季银树
在院子里四十开心
和散落的山脉
冬天的地毯很漂亮。
一切都光明,周围都是白色...“ 1823-1830
上面的简短摘要适用于“塔蒂亚娜(Tatyana)透过窗户看到第一场雪”。 然后,此输入的理想诗意模型将产生非常接近原始的东西。
为了训练本次比赛,我们提出了五位俄罗斯著名诗人的3000多种作品的
数据集 :
1.普希金
2. Yesenin
3.马雅可夫斯基
4.块
5. Tyutchev
必须编写算法,以使其生成速度足够快并具有必要的接口。 在速度方面,您可以与中型现代PC媲美。 接口和限制在“解决方案格式”部分中进行了详细说明。
为了能够跟踪其决策的进度,并将其与参与者的其他决策进行比较,将在整个比赛过程中通过聊天机器人进行决策标记。 将根据两个标准评估算法的结果:
- 证词的质素和古典诗人的风格
- 诗歌中给定主题的披露的完整性
每个标准将提供5分制的量表。 该算法将必须为测试套件中的每个主题撰写经文。 专家将对将要测试算法的主题进行汇编。 一些主题将是开放且可访问的,但是将使用一组隐藏的主题来确定最佳算法。
由于以下原因,可能会拒绝由于算法而获得的诗歌:
- 生成的文本不是俄语的一首诗
- 生成的文本包含粗话
- 生成的文本包含故意包含的冒犯性短语或亚文本
比赛程序
与许多比赛不同,本比赛只有一个在线阶段:从30.07到26.08。
在此期间,您可以每天发送以下限制的解决方案:
- 比赛中不得超过200个决定
- 每天不超过2个成功的决定
- 不计入验证失败的决策的每日限制
奖金与任务的复杂性相对应:前三名将获得100万卢布!
2.创建诗歌生成器的方法
现在已经很清楚了,这项任务是不平凡的,但不是新的。 让我们尝试找出研究人员以前是如何解决这个问题的? 让我们看一下过去30年中创建诗歌生成器的最有趣的方法。
1989年1989年 《
科学美国人》 N08发表了A.K. Dyudney“计算机正在尝试散文和诗歌。” 我们不会重述该文章,而是提供了全文链接,我们只是想提请您注意Rosemary West对POETRY GENERATOR的描述。
该发电机是全自动的。 此方法基于大型词典,从中随机选择短语,并根据一组语法规则从中形成短语。 每行被分成句子的各个部分,然后被其他单词随机替换。
1996年20多年前,一所著名莫斯科大学的毕业生为主题为“语言建模与人工智能”的文凭辩护:作者
Leonid Kaganov 。 这是全文的
链接 。
“语言建模和人工智能”-听起来像这样
我主题的名称。 “一个组成诗歌的程序”-这就是我的回答
朋友的问题。 “但是您已经有这样的程序了吗?” -他们告诉我。 我回答,“是的,但是我的不同之处在于它不使用原始模板。”
(c)卡加诺夫
到1996年,这些发电机包括:
- BRED.COM创建一个伪科学短语
- TREPLO.EXE,生成有趣的文学文字
- POET.EXE组成具有给定节奏的诗句
- 可执行文件
“例如,POET.EXE具有带有重音和其他一些有关它们的信息的单词词典,还可以设置节奏并指出要加韵的行(例如1和4)。 所有这些程序都有一个共同的特性-它们使用模板和预先准备的字典。”
作为主要优点,我们可以强调以下事实:
- 运用联想经验
- 独立进行押韵
- 有可能进行主题创作
- 允许您设置诗歌的任何节奏
算法和代码可以在这里找到。 2016年来自中国的科学家用自己的语言创作诗歌。 他们有一个实时项目
存储库 ,在当前竞争中可能会很有用。
如果非常简短,则它的工作方式如下(
链接到图片的来源 ):
同样在2016年,另一个小组介绍了他们的开发
Hafez (
此处为存储库)。
该生成器使用以下内容“组合”给定主题的经文:
- 口音词典
- 相关词
- 从一个主题中的一组单词押韵单词
- 有限状态受体(FSA)
- 使用RNN选择通过FSA的最佳方法
他们的算法(
链接到图片的来源 ):
他们不仅以英语教授该算法,还以西班牙语教该算法。 他们承诺一切都应在几乎所有地方都能正常工作。 该声明非常响亮,因此我们建议您当心。
2017年最后,我想提到有关Habr的非常详细的文章
“如何教您的神经网络生成经文 。
” 如果您从未处理过此类模型,那么您来了。 有一个神经诗生成器:关于语言模型,N-gram语言模型,关于评估语言模型,关于如何文件体系结构以及完善输入和输出层的知识。
例如,这是将形态标记添加到单词(
链接到图像源 )的方式:
该文章与伊利亚·古塞夫(Ilya Gusev)共同撰写,伊利亚·古塞夫(Ilya Gusev)拥有一个
图书馆,用于分析和创作
俄语诗歌以及俄语 诗歌集 。
3.编程人工诗人
一个简单的诗意生成器的例子
一方面,竞争看似相当复杂,但对他而言,很可能制定一条简单但可行的
基准 。
根据条件,作者的标识符(author_id)和主题文本(seed)输入该程序的输入,为此,模型应返回该诗。
让我们尝试对该主题进行形式化,以便可以在某个向量语义空间内对其进行安全操作。 最简单的方法是获取每个单词(例如Word2Vec)的语义向量,然后对其求平均值。
因此,我们得到了一种“ seed2vec”,它允许我们将主题转换为向量。
实际上,这为研究开辟了一个广泛的主题,因为 隔离主题的问题已经长期困扰科学家,下面仅举几个例子:
-
通过LDA突出主题-lda2vec-send2vec-
大规模杀伤性武器现在,您需要了解如何使用author_id生成完全符合该作者风格的诗歌。
这里的想法并非如此简单:让我们从诗集中抽取作者的一首随机诗,之后,我们将每个单词替换为一个与原始单词最相符的单词(音节数量相同,重读相同,最后三个字母与Levenshtein的距离尽可能与原始单词相似),并且它具有与主题向量最相似的向量。 例如,对于主题“足球”和行“并且它像琥珀一样发光”,输出行可以是“并且像守门员一样玩”。 这样,我们得到了一种文本样式。
作为替换的基础,使用了一个数据集,该数据集包含来自Wikipedia的一小段文本(可以在GitHub的基准代码中找到其使用说明)。
经过此处理后,将获得文本,看起来像作者的诗歌,但同时包含作者未提出的话题。
基线的结果:
主题:物理学
款式:座
铅和铋单位
古代非线性媒体的水牛城
我在开尔文刨花板上
您的现象,您的科学追求
法拉第塞维利亚蟑螂
他的发明
中等声子重力
正电子鬼学校烟
主题:数学
款式:座
就像创意中的一大堆实验室
弯曲和学校学习
但是一群人在创造力研究中
示例曲线脑儿童
游泳者知道曲线
木板将通过,法院将进入参议院
比发情的女儿更古老的戈巴
和苏里亚濒临灭绝
游泳者研究欧几里得上的所有阴影
标题已发布和配额
精通劳动
教授教育笑话
显然,基线不是完美的,因此它是基线。
您可以轻松地添加一些功能,这些功能将有助于更好地改善生成并提高您的排名:
- 您需要删除重复的单词,因为对一个好的诗人来说,自己押一个单词并不适合
- 现在,这两个词完全没有一致,因为 我们不使用有关词性和单词情况的信息
- 您可以使用更丰富的字词,例如Wikipedia转储
- 使用其他嵌入也可以改善,例如,FastText不能在单词级别使用,但可以在n-gram级别使用,从而可以为未知单词嵌入
- 称重单词以计算主题向量时,使用IDF作为权重
您可以在此处随意添加更多点。
准备调度解决方案
训练完模型后,有必要将打包在ZIP归档文件中的算法代码发送到测试系统。
解决方案在使用Docker的隔离环境中运行,测试时间和资源有限。 该解决方案必须满足以下技术要求:
它应该是端口8000上可用的HTTP服务器的形式,它可以响应两种类型的请求:
GET /ready
如果可以使用该解决方案,则必须使用代码200 OK回答该请求。 任何其他代码意味着该解决方案尚未准备就绪。 该算法的工作准备时间有限,您可以从磁盘上读取数据,并在RAM中创建必要的数据结构。
POST /generate/<poet_id>
要求生成一首诗。 URL中指示了需要写作的诗人的标识符。 请求的内容为JSON,其中包含包含主题的单个种子字段:
{"seed": " "}
作为回答,您必须在指定的时间在poem字段中将包含生成的合成的JSON给予:
{"poem": " \n \n..."}
请求和响应必须具有Content-Type:application / json。 建议使用UTF-8编码。
装有溶液的容器在以下条件下启动:-解决方案可用的资源:
-16 GB的RAM
-4个vCPU
-GPU Nvidia K80
-解决方案无法访问Internet资源
-/ data /目录中的解决方案具有共享数据集
-准备工作的时间:120秒(此后必须用/ ready请求回答200)
-每个请求/生成/的时间:5秒
-解决方案应接受来自外部计算机的HTTP请求(不仅是localhost / 127.0.0.1)
-在测试过程中,请求是按顺序发出的(一次不超过1个请求)
-带有解决方案的已打包和未打包档案的最大大小:10 GB
生成的诗歌必须符合以下格式:
-诗句大小-从3到8行
-每行最多包含120个字符
-行由\ n分隔
-空行被忽略
主题主题(种子)的长度不能超过1000个字符。
在测试期间,仅使用上面列出的5位诗人的风格。
此处提供
了有关将解决方案发送到系统并分析最常见错误的详细信息。
4. Hackathon平台
包含有关该比赛所有必要信息的平台,位于
classic.sberbank.ai 。 详细规则可在
此处找到。 如果出现问题,您可以在论坛上获得有关任务和技术问题的答案。
ML模型的创意竞赛并不容易。 许多人已经完成了诗歌创作的任务,但是还没有重大突破。 现在,在我们的classic.sberbank.ai平台上,来自俄罗斯各地的参与者正在竞争这一艰巨的任务。 我们希望获胜者的决定将超越早先制定的所有决定!
5.参考