GraphPoet翻译
作者:互联网
Class GraphPoet
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,”) -> (“hello,”) 权重为2
- (“hello,”) -> (“goodbye!”) 权重为1
两个点表示为不区分大小写的 “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类,但是除此之外这个类的实现取决于你。
Constructor Summary
GraphPoet (File corpus)
使用从corpus生成的图创建一个新的诗人。
Method Summary
String poem (String input)
生成一首诗。
从java.lang.Object类继承的方法
equals, getClass, hashCode, notifyAll, toString, wait, wait, wait
Constructor Detail
GRAPHPOET
public GraphPoet(File corpus) throws IOException
使用从corpus生成的图创建一个新的诗人。
parameters
corpus - 生成诗人的单词亲和图的文本文件
Throws
IOException - 如果无法找到或无法读corpus文件
Method Detail
POEM
public String poem(String input)
派生一首诗。
Parameters
input - 派生一首诗的源字符串
Returns
poem - (如上文所说)
声明:翻译自MIT6.031的 GraphPoet(Problem Set 2: Poetic Walks)仅供个人学习
个人水平有限,如有疏漏和错误恳请批评指正
标签:翻译,GraphPoet,语料库,单词,w2,w1,corpus 来源: https://blog.csdn.net/tsien88/article/details/118555286