博舍

基于马尔可夫链的写作机器人软件 有没有自动写作业的机器人软件啊视频教程

基于马尔可夫链的写作机器人软件

数据结构课设(二)

作业要求

设计并实现一个基于马尔可夫链的写作机器人软件。软件通过对素材文本的学习,建立词库以及单词的马尔可夫链,然后使用所建立的单词马尔可夫链配合随机数选择,自动生成一段文字。

分析

由于不太清楚老师的具体要求,所以在网上找了个马尔可夫链的简单教程,基于的是一阶马尔可夫链,只往前看一个词,所以比较简单,就决定做这个了,虽然感觉和马尔可夫链没多大关系。

具体实现

具体原理不太懂,就不多说了,只能根据前一个字推测出下一个字,所以关联度很低,比较简单的句子效果更好,学习多的句子就不太顺了。比如:根据这个例子,来讲解一下我的程序。首先,用了一个vector来存储每句话的第一个字,这样子我们生成句子的时候,生成的第一个字就从这个vector里面随机选取。

vectorStart;//开始token

然后用了一个map存储所有的字

mapT;//Token序列

接着就是这个map和一个二维的vector存储着所有的“词典”,这个Co结构体里的weight可能是整个算法和马尔可夫有一点关系的东西…

structCo{stringname;//字intweight;//出现次数Co(stringn){name=n;weight=1;}};vectorToken;//词典

最后存储的效果大概是这样子的前面的是所有的字,后面的是就是类似于组词一样,在样本中出现的临近字。从这里就可以看出关联性是比较弱的,两个毫无关系的词也会组在一起,比如“好-朋,明-是”,如果是英文的应该会好一点,中文的许多单个字是不成意思的。read函数

intRead(vector&Start,map&T,vector&Token)//训练马可夫链,得到词典{ifstreamfin("test2.txt");if(!fin){cout

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇