- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MathMLweb公式检索方案设计
基于MathMLweb公式检索方案设计
【摘 要】数理公式作为知识体系中的重要组成部分,在基于Web的网络教学、信息发布、学术交流等方面起着非常重要的作用。然而在目前的Web环境下,数理公式的检索问题一直困扰着用户。本文设计了一个公式检索系统,可以实现数学公式的在线输入及准确的检索。系统使用JSP技术开发前天界面,Oracle作为后台数据库,MathML数学标记语言作为数学公式的描述语言,通过设计在线公式编辑模块,用户可以所见即所得的编辑数学公式,而公式在系统中存储为MathML代码形式,因此可以通过代码的匹配实现数学公式的检索。
【关键词】公式检索;在线公式编辑;MathML
0 引言
科技飞速发展的今天,数学公式的应用越来越广泛。然而WEB技术对数学符号、公式和特殊符号的支持还十分有限。目前微软的IE浏览器仍无法直接支持数学公式的显示。
目前,Web上处理数学公式问题的方法主要有以下四种:
(1)图片法。Web发布者先通过MathType等客户端公式编辑器来编辑公式并将其转换为图片(JPG或JIF格式),然后嵌入到HTML网页中,最后公式以图片的形式在客户端的浏览器中显示。这种方式只能实现实现公式的显示,无法对其查询。
(2)使用专用的数学公式的浏览器插件。有些公司为了配合本公司自己的教学软件或教学网站,设计了专用的插件。访问者要观看数理公式,必须先要下载这些专用的浏览器插件。这种方式的主要缺点有公式复用性差;软件独立性差。
(3)使用LaTex。LaTex是一套基于习惯性书写思维的数学公式表示方法。一些大的软件公司开发一些专用的LaTex浏览器插件,通过这种方式。浏览器可以直接观看嵌入在HTML中的公式符号。这种方式的优点是LaTex文档的操作简洁,复用性好;缺点是LaTex不是一种标记语言,在网络应用和数据的格式化标准化方面的扩展能力较差。
(4)基于MathML的应用。MathML是W3C组织制定的一套基于XML的数学公式处理的标准。作为一种标记语言,MathML在设计之初就考虑到网络上的应用和集成,其公式存储形式更利于所以MathML在web上具有非常广泛的应用前景。
1 公式预处理
当用户输入数学公式后,首先会进行预处理,过滤掉代码中的无用xml标签,同时替换掉字符代码。比如勾股定理c2=a2+b2,当用户查找时若输入z2=x2+y2,则无法匹配,得不到预期的结果。所以该模块将输入的字符数据替换成统一字符x,这样在查找时就不会因为某个字母不一致而无法查询了。
虽然这样做会降低查准率,但是格式相同或相近的公式毕竟不多,所以本系统更加着重于提高查全率。
图1 预处理模块工作流程图
2 匹配方法
对于已知公式名称,可以很简单查询到公式的内容。但是对于只知道部分公式内容,则需要进行代码预处理,以过滤标签、字母,达到查询的准确性。
2.1 处理不匹配字符的规则
在从右向左扫描的过程中,若发现某个字符x不匹配,则按如下两种情况讨论:
(1)如果字符x在模式P中没有出现,那么从字符x开始的m个文本显然不可能与P匹配成功,直接全部跳过该区域即可。即skip=plen,其中skip为向右移动的距离,plen为模式串P的长度。
(2)如果x在模式P中其它位置出现,则以该字符进行对齐。即skip=plen-max(x),其中skip为向右移动的距离,plen为模式串P的长度,max(x)为模式串P中x再次出现的位置。
程序中使用MakeSkip()函数实现该规则的处理,函数返回结果为模式串右移的距离。它的程序流程为:
(1)获取匹配字符及模式串作为参数。
(2)若获取参数为空,则抛出异常;否则进行第3步。
(3)初始化设置skip=0。
(4)将字符与模式串进行匹配。
(5)如果该字符在模式串中其它位置未出现,则skip=plen;否则skip=plen-max(x)。
(6)返回skip值。
(7)结束。
2.2 处理已匹配字符串的规则:
若发现某个字符不匹配的同时,已有部分字符匹配成功,则按如下两种情况讨论:
(1)如果在P中位置t处已匹配的部分p1,在P中的t′位置再次出现,且位置t1的前一个字符与位置t的前一个字符不相同,则将p右移使t1对应t方才的所在的位置。
(2)如果在P中任何位置已匹配部分p1′都没有再出现,则找到与p1的后缀p11相同的p的最长前缀x,向右移动p,使x对应方才p11后缀所在的位置。
程序中使用MakeShift()函数实现该规则的处理,函数返回结果为模式串右移的距离。它的程序流程为:
(1)获取已匹配字符
原创力文档


文档评论(0)