转换生成语法 自然语言处理_小说生成者的事后分析:具有自然语言某些特性的语法写作...

转换生成语法 自然语言处理

几年前,我写了一个演示/显示黑客程序 ,生成了用于拼写的字母和词汇。 对于NaNoGenMo 2017我对其进行了修改,以使用PIL代替乌龟,使用markov链(而不是随机选择单词),并写入A1尺寸的页面图像

我想对这里发生的事情做一些说明。

首先,我生成一个字符集。

每个字符都是由角度变化分开的一系列笔画 。 最初,此逻辑用于pyturtle的笔式系统,这对于模拟手写很有用。 因此,笔划进入下一个笔划-除重音符号外,无需抬起笔就可以绘制每个字符。 (一个角色可以有一个或两个点或重/重音符-如果一个角色有两个点,则是变音符号,如果一个角色既有重音又有重音,则其克拉为克拉。)

字符中的每个元素(除重音符号之外)实际上都是注音的: 每种笔触类型都是辅音,每个角度变化都是元音 。 (这是由hangul启发的,在这里看起来像一个语标实际上是最多三个语音字符的簇。)在这种情况下,我们最多有五个笔触角对。 这些语音读数未使用,但在脚本的原始版本中,它们位于调试输出中。

笔触可以是全长,也可以是一半,并且可以是直线或半圆。 角度变化限制为45度间隔(即45、90、180,-45和-90)。 这些限制旨在模拟在手写语言中可能实际起作用的各种差异-不同字符之间必须有很大的界限,否则很容易造成误读。

字符集介于20到36个字符之间-与语音书写系统中一两个声音字符的实际范围大致相同。 由于我们的每个字符实际上最多有五个音节,因此我们确实应该有更多的音节,但这很痛苦。

然后,我通过组合随机字符来创建词汇表。 最初,我对短单词有偏见,并将这种偏见与词频联系在一起,但是我不再这样做了,因为我在输出方面遇到了问题。 该词汇大约有300个字,长度为1至5个字符。

掌握了词汇后,我会通过创建一堆句子的马尔可夫模型类似于真实语言的马尔可夫模型来制作类似于语法的东西。 基本上, 我创建了一个句子池,并在增长池的同时,将词汇表中随机选择的单词累积到池中随机选择的部分 。 结果是某些单词将具有明显更强的关联性,因此,一旦我们建立了马尔可夫模型,通过该模型链接产生的东西的分布将是zipf — 我认为 。 我实际上没有正确地计算出它,所以我可能完全错了。

我为词汇表中的每个单词创建一个图像,然后将结果链接并呈现到页面上。 我得到了很多单字行,因此我创建了一个过滤器,该过滤器可以在98%的时间内合并行,从而使页数减少到更合理的水平。

我的第一个pdf文件中 ,由于基本笔划单元非常小(5像素),因此很难看到这些字符。 因此,我创建了第二个基本笔划长度为10像素的对象

由于正确地调整字距非常困难,因此我打开了草书模式并使用已连接的脚本创建了另一个版本

所有这些都具有50k或更多的“单词”。

翻译自: https://hackernoon.com/post-mortem-of-a-fiction-generator-asemic-writing-with-some-properties-of-natural-languages-2b008fbf8563

转换生成语法 自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值