推广 热搜:   公司  企业  中国  快速    行业  上海  未来  设备 

基于马尔科夫链的自动文本生成器

   日期:2024-12-21     移动:http://fabua.ksxb.net/mobile/quote/4361.html

图片来源:unsplash.com 摄影:Thomas Lefebvre

基于马尔科夫链的自动文本生成器


关于该算法如何与提供的参考代码一起使用,请参阅此逐步指南。


使计算机生成的文本模仿人类言语是令人着迷的,虽然生成一些语义通顺的文本并不困难,但是其过程一定很有趣。马尔科夫链就是一种用来生成文本的方法。它的工作原理是根据历史文本生成新的文本,其中邻近单词(或单词组)的原始排序用于生成有意义的句子。


真正有趣的是,你可以基于一个人以前的文字,生成一段和这个人说话方式相似的句子。 或者,您可以合并来自两个不同人的文本并获得混合风格的文本。

 

下面,以两位伟大总统的演讲稿为例,进行具体的说明:

 

巴特勒和奥巴马

图片来源:screentv.com


我使用奥巴马的演讲文本和巴特勒的台词对我的马尔科夫链模型进行训练,其生成的文本如下所示:

“我可以在北卡罗来纳州烧我的母亲给我们一个伟大的夜晚计划。”

所以向前走,我相信我们可以在他们的教堂里制造炸弹。”

查理,我父亲每次进入情况室都会长大。

这场运动必须是弹道式的。

ntent="t" style="font-size: 16px;">1.文本生成领域的马尔科夫链



对于更多技术性的解释, 你可以在网上找到大量的相关内容。 一般情况,马尔科夫链是一种算法,用于根据历史文本从加权单词列表中产生新的结果。 此处马尔科夫链这个概念更加抽象,实际应用中,在文本生成中,它使用历史文本 ,将其分割成单个单词(或单词集),然后随机选择一个单词,之后基于之前选择的单词序列随机选择一个相似的单词。

例如:

 


上面的示例中显示了:原始文本(A)、生成单词字典(B)以及从随机选择的单词生成的示例文本(C),其中所选单词用红色突出显示。 括号中的数字表示该单词在原始单词中的出现次数。

 

这不仅适用于文本(其中最流行的应用之一就是在智能手机中进行文本预测),他还可以被应用在任何基于过去信息和给定状态下来预测下一步信息的场景中。例如,你可以编写一个股票市场波动预测模型(例如过去30天的每日变化百分比),然后用它来查看历史上可能的第二天结果是什么(只是举个例子,我很怀疑它的有效性)。

ntent="t" style="font-size: 16px;">2.它为什么这么有趣


我一直想建立一个文本生成器,因为它是一个非常棒的方式,可以用一个非常便宜的快捷方式来查看如何模仿智能。 你会看到下面的算法,它非常简单。 另一个事实是,就像上面的例子一样,你可以用它来混合来自两个不同人的“声音”并查看结果。

ntent="t" style="font-size: 16px;">3.它是如何工作的


用马尔科夫链生成文本有两个阶段。 首先是词典构建阶段,其中包括收集历史文本,然后生成一个词典,其中,键为给定句子中的词,值为该词之后紧邻的那个词。

在这里,您可以看到原始句子被分解成单词,并将随后的单词与计数器一起包括在内以指示出现的次数。 请注意,句号也包括在内。


第二个是执行,你从一个给定的单词开始,然后用这个单词以概率的方式看下一个单词是什么。 

例如:


遍历字典以生成文本

ntent="t" style="font-size: 16px;">4.长久摸索的技巧


  1. 你不能从任何的随机词开始——如果你这样做,那么你会得到这样的句子: “ate the cat”。 你应该记录每个句子的首个单词以使事情简化于是你会得到这样的结果:“John ate the cat” 。

  2. 不要忽略标点符号 ——如果你删除了标点符号,你会得到这样的句子:“The dog barked at John cat”。相反,保留标点符号,你才更有可能生成一个更加真实的句子 : “The dog barked at John’s ca”。

  3. 以句号结尾——当你从一个单词开始,然后找到下一个单词,再找到下一个单词……你可以继续下去,直到你达到指定的长度,但是你最终会在这个句子中间停下来,比如:“The cat ate John’s”。相反,当你可以遇到一个句号的时候便停止(这也是不删除标点符号的另一个理由) , 例如:“The cat ate John’s boots”


我使用过不同的文本,包括艾迪·墨菲的单口相声文稿、唐纳德特朗普推文、奥巴马演讲和巴勒特的剧本。你可以在下面的网址下载他们:

https://github.com/pub12/MarkovText


完全可以使用上述的任意一个素材来生成我们的字典,但你还可以混合使用两个素材(例如:奥巴马的和巴勒特的),创建一个字典文件。 然后,当你遍历整个字典的时候,你可以获得这两份文本的信息。


确保您可以平衡文本很重要 。例如,如果你有奥巴马的8000份文本而只有艾迪·墨菲的1000份文本,那么你可能会看到更多来自奥巴马演讲稿的单词。当然,当你建立词典时,你可以人为地为那些数量较少的文本素材设置权重,以平衡各个训练素材。首先,这并不完美 。当你创建你自己的模型的时候,你会看到有些文本都是一些莫名其妙的句子。训练的素材越多,你的模型才越有用。其次,在词典中使用单个单词没有太大的用处 , 你应该使用2-3个单词组,实际数量取决于您有多少历史文本。


你可以在下面的网址中找到本文涉及的所有源代码:

https://github.com/pub12/MarkovText



翻译:Sylvia 王贝贝

审校:奔跑的笤帚把子

编辑:Yiri

原文地址:https://hackernoon.com/automated-text-generator-using-markov-chain-de999a41e047



关注集智AI学园公众号

获取更多更有趣的AI教程吧!

搜索微信公众号:swarmAI

集智AI学园QQ群:426390994

学园网站:campus.swarma.org

 商务合作|zhangqian@swarma.org     

投稿转载|wangjiannan@swarma.org

本文地址:http://fabua.ksxb.net/quote/4361.html    海之东岸资讯 http://fabua.ksxb.net/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号