本文主要是介绍软件构造--Poetic walks,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Poetic walks
这是一个基于图的诗歌生成器,是通过文本语料库来生成的
图中的顶点是单词,单词被定义为非空非换行符组成的字符串,不分大小写。他们再语料库中由空格、换行或者问卷末尾分隔。
语料库是由自己所定义的,通过输入一系列以空格隔开的文本来自定义地创建语料库。比如,输入:w1 w2,将会产生w1指向w2的边,而边的权重由w1 w2衔接的次数决定
对于input的一个句子,对于每一对单词w1、w2,在图中寻找是否存在w1-b-w2,若存在多组满足要求的b,选择权重是最大的一条路径。若无可以连接的单词b,则将w1 w2直接输出。
具体实现
通过语料库生成图
首先,以行的方式读取文件文本内容,将所有的句号都转换为空字符串。
随后将每行内容拼接起来,注意需要在行之间加入空格,再将拼接后的字符串所有字符转换为小写形式。
将字符串以空格分隔开,返回一个字符串数组。
遍历这个字符串数组,每次遍历邻接的两个单词:
由于不知道表示这两个单词的点原先是否已经存在边,先加入一条单词1到单词2,权为1的边,获取返回值,返回值表示的是加入边之前两点之间的边权值。判断返回值,如果返回值为0,说明原先不存在边,不用改动,因为已经set了一条权值为1的边,如果返回值不为0,说明两点间之前存在边,将原先边权值+1再存入图中
Friendship
首先,将Person类复制进来
随后创建FriendshipGraph
内部参数仅需要
addVertex和addEdge部分直接调用图自带的方法:
这篇关于软件构造--Poetic walks的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!