基于MathML的web公式检索的方案设计

2014-10-21 14:56王霞文刘浩
科技视界 2014年36期

王霞文 刘浩

【摘 要】数理公式作为知识体系中的重要组成部分,在基于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)获取已匹配字符p1及模式串p作为参数。

(2)若获取参数为空,则抛出异常;否则进行第3步。

(3)初始化设置shift=0。

(4)将已匹配的字符串p1与模式串p进行匹配。

(5)如果该字符串在模式串中其它位置未出现,则shift=plen-pidx,其中pidx为p中再次出现p1的位置;否则进行第6步。

(6)去掉p1串的头部,再次匹配,直到在p中找到相同的最长前缀x,设置shift=plen-pidx;若p1在p中从未再次出现过,则shift=plen。

(7)返回shift值。

(8)结束。

2.3 匹配的实现

通过MakeSkip()函数和MakeShift()函数可以处理不同失配的情况时,模式串右移的距离,通过本函数,即Search()函数,则可以实现该匹配模式的部分精确匹配的功能。它的程序流程为:

(1)初始化,获取文本串和模式串。

(2)若获取参数为空,则抛出异常;否则进行第3步。

(3)字符串左端对齐,从右端开始匹配,若匹配成功,则返回1;否则进行下一步。

(4)调用MakeSkip()函数,计算出现不匹配字符的时候,模式串p应该右移的距离skip。

(5)调用MakeShift()函数,计算出现已匹配字符串的时候,模式串p应该右移的距离shift。

(6)令模式串p右移的距离moved为skip和shift中的大者。

(7)模式串右移moved距离,同时设置记录文本串长的参数blen,令blen=blen-moved。

(8)判断是否匹配结束,即blen

(9)结束。

3 结论

现有的Web中的数学公式,存储格式五花八门,多以图片形式存在,少数以MathML代码形式出现的公式,其存储格式多数不够规范,因应用较少,故难以达成统一标准。

系统以文本编辑器Fckeditor作为运行平台,用户在界面中编辑要查询的数理公式,通过对公式代码的处理,即可到公式数据库中查詢。结果页面会返回查询公式的相关信息,并根据查询到的公式名称到百度、谷歌两个搜索引擎中查询出相关页面,并返回页面链接。

作者声明:“作者对本文版权全权负责,无抄袭.”

本文作者创新点:设计了一个公式检索系统,可以实现数学公式的在线输入及准确的检索。系统使用JSP技术开发前天界面,Oracle作为后台数据库,MathML数学标记语言作为数学公式的描述语言,通过设计在线公式编辑模块,用户可以所见即所得的编辑数学公式,而公式在系统中存储为MathML代码形式,因此可以通过代码的匹配实现数学公式的检索。

【参考文献】

[1]李春伟.基于MathML的web数学公式的解决方案[J].中国科技信息,2008,10(17):78-82

[2]姜力.基于MathML的WEB数学公式表示[J].齐齐哈尔大学学报,2006,9(06): 98-102.

[3]童宁江,喻茜芝,凌代红.WebEQ数学套件核心技术精解[J].中国科技信息, 2008,6(05).

[责任编辑:杨玉洁]