软件构造--Poetic walks

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再存入图中
首先,将类复制进来
随后创建
内部参数仅需要
【软件构造--Poetic walks】和部分直接调用图自带的方法: