- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
03马尔可夫链算法.doc
数据结构设计是程序构造过程的中心环节。一旦数据结构安排好了,算法就像是瓜熟蒂落,编码也比较容易。
这种观点虽然有点过于简单化,但也有一定道理。在数据结构中有关各种基本数据结构,是许多程序的基本构件。在这一章中,我们将组合这些结构,要完成的工作是设计和实现一个中等规模的程序。我们将说明被处理的问题将如何影响数据结构,从这里还可以看到,一旦数据结构安排好之后,代码将会如何自然地随之而来。
我们要选择的问题并不是很常见的,但它在基本形式上又是非常典型的:一些数据进去,另一些数据出来,其处理过程并不依赖于多少独创性。
准备做的就是产生一些随机的可以读的英语文本。如果随便扔出来一些随机字母或随机的词,结果当然是毫无意义的。
为了得到更好一些的结果,我们需要一个带有更多内在结构,例如包含着各短语出现频率的统计模型。但是,我们怎么才能得到这种统计呢?
我们当然可以抓来一大堆英语材料,仔细地研究。但是,实际上有一种更简单也更有意思的方法。这里有一个关键性的认识:用任何一个现成的某种语言的文本,可以构造出由这个文本中的语言使用情况而形成的统计模型。通过该模型生成的随机文本将具有与原文本类似的统计性质。
1马尔可夫链算法
完成这种处理有一种非常漂亮的方法,那就是使用一种称为马尔可夫链算法的技术。我们可以把输入想像成由一些互相重叠的短语构成的序列,而该算法把每个短语分割为两个部分:一部分是由多个词构成的前缀,另一部分是只包含一个词的后缀。马尔可夫链算法能够生成输出短语的序列,其方法是依据(在我们的情况下)原文本的统计性质,随机性地选择跟在前缀后面的特定后缀。
采用三个词的短语就能够工作得很好——利用连续两个词构成的前缀来选择作为后缀的一个词:
设置w1和w2为文本的前两个词
输出w1和w2
循环:
随机地选出w3,它是文本中w1w2的后缀中的一个
打印w3
把w1和w2分别换成w2和w3
重复循环
为了说明问题,用一个实际的例子来说明。
采用两词前缀,下面是一些输入的词对和跟随它们之后的词:
处理这个文本的马尔可夫算法将首先打印出Show your,然后随机取出flowcharts或table。如果选中了前者,那么现在前缀就变成your flowcharts,而下一个词应该是and或will。如果它选取tables,下一个词就应该是and。这样继续下去,直到产生出足够多的输出,或者在找后缀时遇到了结束标志。
程序将读入一段英语文本,并利用马尔可夫链算法,基于文本中固定长度的短语的出现频率,产生一段新文本。前缀中词的数目是个参数,上面用的是2。如果将前缀缩短,产生出来的东西将趋向于无聊词语,更加缺乏内聚力;如果加长前缀,则趋向于产生原始输入的逐字拷贝。对于英语文本而言,用两个词的前缀选择第三个是一个很好的折衷方式。看起来它既能重现输入的风味,又能加上程序的古怪润饰。而对于中文,可以选择更大一些。
什么是一个词?最明显的回答是字母表字符的一个序列。这里我们更愿意把标点符号也附着在词后,把“words”和“words.”看成是不同的词,这样做将有利于改进闲话生成的质量。加上标点符号,以及(间接的)语法将影响词的选择,虽然这种做法也可能会产生不配对的引语和括号。我们将把“词”定义为任何实际位于空格之间的内容,这对输入语言并没有造成任何限制,但却将标点符号附到了词上。许多语言里都有把文本分割成“空白界定的词”的功能,这个功能也很容易自己实现。中文中,为了简单,以字为单位。
输入前缀跟随的后缀词根据这里所采用的方法,输出中所有的词、所有的两词短语以及所有三个词的短语都必然是原来输入中出现过的,但是,也会有许多四个词或更多个词的短语将被组合产生出来。
2数据结构的选择
有多少输入需要处理?程序应该运行得多快?要求程序读完一整本书并不是不合理的,因此我们需要准备对付输入规模n=100000个词甚至更多的情况。输出将包括几百甚至几千个词,而程序的运行应该在若干秒内完成,而不是几分钟。假定输入文本有100000个词,n已经相当大了,因此,如果还要求程序运行得足够快,这个算法就不会太简单。
马尔可夫算法必须在看到了所有输入之后才能开始产生输出。所以它必须以某种形式存储整个输入。一个可能的方式是读完整个输入,将它存为一个长长的字符串。情况的另一方面也很明显,输入必须被分解成词。如果另用一个指向文本中各词的指针数组,输出的生成将很简单:产生一个词,扫描输入中的词,看看刚输出的前缀有哪些可能的后缀,然后随机选取一个。但是,这个方法意味着生成每个词都需要扫描100000个输入词。1000个输出就意味着上亿次字符串比较。这样做肯定快不了。
另一种可能性是存储单个的词,给每个词关联一个链表,指出该词在文本中的位置。这样就可以对词进行快速定位。在这里可以使用第2章提出的散列表。但是,
您可能关注的文档
- 《报告及时性和财务信息质量》外文献英文和 翻译.doc
- 怎样布置小学英语课外作业.doc
- (010级学生)第三编技术观、技术方法论.ppt
- (19三104)山西省太原市第63中学(234探究性)课堂教学模式(名校课模讲座三之104).doc
- (19三51)山西省垣曲县垣曲中学课堂教学改革具体做法和 成功经验(名校课模讲座三之51).doc
- (19五69)西峡县城区二小(三疑三探)在学科教学中应用(一)(名校课模讲座五之69).doc
- (24、25)铁路工程预算定额.ppt
- (一)影响食糖价格变化因素.doc
- (上)中国侵权行为法百年历史及其在新世纪发展.doc
- (上)第三条道路——连接理论和 实践法学的研究方法.doc
最近下载
- DBJT 08-120-2015雨水口标准图2015沪S203.docx VIP
- 神经介入产品培训.ppt VIP
- 重庆市綦江区郭扶镇社区工作者招聘考试试题汇总2024.docx VIP
- ECharts数据可视化课件 第1章 初识ECharts.pptx VIP
- 重庆市綦江区安稳镇社区工作者招聘考试试题汇总2024.docx VIP
- 突发事故处理流程.pdf VIP
- 电工安全生产协议书(完整版).docx VIP
- 固定翼无人机技术完整全套教学课件.pdf
- 1.35KV预制舱变电站项目(整套35KV预制舱,变压器,开关柜,火灾报警)技术规范书.doc VIP
- DB36_T 811-2020 井冈蜜柚 生产技术规程.pdf VIP
文档评论(0)