java.lang.Object
poet.GraphPoet
public class GraphPoet
extends Object
一个基于图的诗歌派生器。
GraphPoet由文本语料库初始化,它用这个语料库来派生一个单词亲和图word affinity graph。单词words用图中的顶点vertices表示。单词是不包括空格和换行符的不区分大小写的非空字符串,它们在语料库中由空格、换行符或EOF分隔。图中的各边表示邻接的数量:从w1到w2的边的权重定义为语料库中“w2”紧跟在“w1”后面的次数。
举个栗子,给定这个语料库:
Hello, HELLO, hello, goodye!
生成的图应该包含两条边:
两个点表示为不区分大小写的 “hello,” 和 “goodbye!”
给定输入字符串,GraphPoet通过尝试在输入中的每对相邻单词之间插入一个桥接词bridge word来生成一首诗。单词由语料库中的单词定义和分隔。输入词“w1”和“w2”之间的桥接词“b”使得w1->b->w2成为一条包含两条边的路径,满足在这个诗人(GraphPoet)的单词亲和图中的所有从w1到w2的包括两条边路径中,具有最大权重。如果没有这样的路径,则不会插入桥接词。在输出的诗句中,输入词保留了原来的大小写,而桥词则是小写。诗中每个字之间的空白是一个空格,开头和结尾没有空格。
再举个栗子,给定这个语料库:
This is a test of the Mugar Omni Theater sound system.
对于这个输入:
Test the system.
输出的诗句将会是:
Test of the system.
说明:这是一个有要求的ADT类,并且你不能弱化要求的规约specifications。但是,你可以强化规约,也可以添加额外方法。你必须在你的属性rep中使用Graph类,但是除此之外这个类的实现取决于你。
GraphPoet (File corpus)
使用从corpus生成的图创建一个新的诗人。
String poem (String input)
生成一首诗。
从java.lang.Object类继承的方法
equals, getClass, hashCode, notifyAll, toString, wait, wait, wait
GRAPHPOET
public GraphPoet(File corpus) throws IOException
使用从corpus生成的图创建一个新的诗人。
parameters
corpus - 生成诗人的单词亲和图的文本文件
Throws
IOException - 如果无法找到或无法读corpus文件
POEM
public String poem(String input)
派生一首诗。
Parameters
input - 派生一首诗的源字符串
Returns
poem - (如上文所说)
声明:翻译自MIT6.031的 GraphPoet(Problem Set 2: Poetic Walks)仅供个人学习
个人水平有限,如有疏漏和错误恳请批评指正