摘要

提出了一种检索LaTeX文档中数学公式的方法。首先,根据LaTeX描述,用二叉树表示检索到的数学公式,对二叉树的结构进行规范化,获取结构码,然后在数学公式数据库中搜索由二叉树前两级的结构码和公式元素命名的数学公式表。如果表存在,则搜索表中二进制树的规范化变量名预排序遍历序列,并显示包含数学公式的文档信息。实验结果表明,该算法实现了LaTeX文档中数学公式的检索,具有较高的检索精度和较快的检索速度。

1.简介

随着互联网和数字图书馆的迅速发展,越来越多的包含数学公式的文档存储在计算机上。为了快速共享和交流这些文档,数学公式的在线检索受到了广泛关注,并已成为一个重要的研究领域。

文本检索技术已经相对成熟[17]. 然而,如何有效地检索文档中的数学公式仍然是一个正在研究的问题[8]. 以及一些控制思想,例如数据驱动[913]和系统开关[1417],也已为此雇用。Lee和Wang[18]提出了一个数学公式重组系统,但该系统不能处理多行数学公式以及更复杂的单行数学公式。Fateman等人[19]设计了一个数学公式重组系统,但该系统只能重组固定格式的积分表。Zanibbi等人[2022]提出的方法可以对扫描图像中的公式取得良好的效果,并支持自动评估识别性能。尽管如此,这些方法无法使用两个或多个修饰符分析表达式。数学阅读器[23]能够识别更多种类的数学表达式;然而,它还没有达到实际应用的程度。

数学公式的描述方法主要包括MathML、LaTeX和图像。其中,LaTeX广泛用于编辑科学论文、书籍、文件、学位论文、手稿、个人信件和各种复杂的符号公式。此外,其他格式的文档可以轻松转换为LaTeX格式。因此,提出了一种检索LaTeX文档中数学公式的方法。

论文的其余部分组织如下。章节2给出了数学公式的二叉树描述。章节3介绍了数据库的设计。章节4详细描述了我们的数学公式检索方法。实验结果见第节5第节概述了结论6.

2.数学公式的二叉树表示

2.1. 二叉树的构造

由于显著的结构特征,LaTeX形式的复杂数学公式可以划分为多个子表达式,然后每个子表达式可以划分为更小的子表达式。我们重复该过程,直到没有留下可折叠的组件。最后的子表达式称为公式元素。

运算符有三个操作数,例如“,”这与其顶部区域、底部区域和右侧区域有密切关系。我们通过添加操作符“link”将其与右侧子表达式结合

我们从左到右遍历带有“link”的公式元素字符串,生成公式元素的优先级列表,然后根据数学公式的结构特征和优先级列表获得数学公式的二叉树表示。二叉树的数据结构如表所示1.

我们使用递归方法获得公式元素的二叉树表示。首先创建优先级最低的元素根,然后根据公式元素字符串中根元素之前的元素创建左子树。因此,右子树可以由公式元素字符串中根元素之后的元素创建。

对于每个节点,其元素类别和组合可以由公式元素确定。每个节点的高度可以通过以下公式计算:哪里是节点的高度,是节点左子节点的高度,并且是节点的右子节点的高度。

例如,对于数学公式,其LaTeX形式为(总和[i=1][10] 一个i+x(i+x)乘以y时间z)次数(x乘以y+y时间z)。相应的二叉树表示如图所示1.

2.2. 规范化处理

由于某些算子满足交换律,即对于这些操作数,可以随机交换它们以构成不同的数学表达式;这些表达的意思是相同的。但值得注意的是,相应的二叉树的结构可能不同。因此,必须对结构不同但意义相同的二叉树进行规范化。我们按照预先的顺序遍历二叉树,如果公式元素的类别是OPS,并且左孩子的高度高于右孩子的高度,则交换节点的左子树和右子树。2显示了对应于图1.

对二叉树进行规范化后,通过按后序遍历二叉树,可以生成每个节点的结构代码。节点“node”的结构代码可按以下方式获得:哪里是节点左子节点的结构代码是节点的右子节点的结构代码。

注意,数学表达式的变量名与公式含义无关。对于给定的结构二叉树,我们可以根据给定的遍历顺序得到其相应的公式元素序列。为了使序列唯一,我们仍然需要规范化序列中的所有变量名。规范化方法是使用一组固定的变量名来连续替换公式元素序列中标记为“VAR”的每个公式元素。

3.数据库设计

数学公式检索数据库包含两种表:一种是文档信息表,另一种是公式信息表。其结构如表所示23.公式信息表的命名规则如下:哪里是根的公式元素,是根的左子级的公式元素,并且是根的右子级的公式元素。

具有相同信息的数学公式(包括结构代码、根的公式元素、左孩子的公式元素和右孩子的元素)存储在表中。

4.检索算法

对于检索到的数学公式,我们通过其LaTeX格式创建相应的二叉树表示,对二叉树的结构进行规范化后得到结构代码,然后在公式数据库中搜索以结构代码命名的公式信息表和二叉树前两层的公式元素。如果表存在,我们会在表中找到二叉树的预排序遍历序列。检索算法的详细描述如下。

步骤1。对于候选测试LaTeX文档,提取所有数学公式以获取检索到的公式集公式=然后转到步骤2.

第2步。如果公式非空,然后拿出一个公式公式,创建其二叉树表示,并对二叉树的结构进行规范化以获得二叉树.导线按预先排序并规范化变量名以获得遍历序列并转至步骤3; 否则,转到步骤8.

步骤3。根据(2). 让T_name; 转到步骤4.

步骤4。在公式数据库中搜索名为T_name的数据表。如果表存在,请转至步骤5; 否则,转到步骤7.

步骤5。。对于每个非左侧节点,如果其元素类别为OPS,并且左侧子节点和右侧子节点的高度相同,则交换其左侧和右侧子树。按预定顺序遍历树并规范化变量名以获得相应的遍历序列。如果序列不存在于,然后将序列添加到.最后,得到公式元素序列集并转至步骤6.

步骤6。搜索与相同的公式元素序列()在表中。如果存在,输出包含公式的文档信息; 否则,转到步骤7.

第7步。如果根的元素类别是OPS,并且其左子元素和右子元素的高度相同,则交换在T_name中并转至步骤3; 否则,转到步骤2.

步骤8。结束。

5.实验结果

为了验证所提方法对不同类型数学公式的有效性,我们从500篇用英文和中文撰写的研究论文中收集了1138个不同的数学公式。我们根据LaTeX描述用二叉树表示每个数学公式,并对二叉树的结构进行规范化,得到结构码。我们将规范化变量名的前序遍历序列保存到由二叉树前两级的结构代码和公式元素命名的公式信息表中。我们同时将这些文档信息保存到文档信息表中。

计算实验是在Pentium 2.0上进行的G带2.0MB内存、Windows XP SP3和ACCESS 2007。精确度、召回率和值用于评估算法的检索性能:哪里是在检索结果中正确检索到的数学公式数,是应检索但未出现在检索结果中的数学公式的数量,以及不应检索但出现在检索结果中的数学公式数。

为了验证该方法的性能,根据表修改了一些数学公式4.

在实验中,检索次数为2016次;平均准确率为96.35%,平均召回率为95.38%,平均值为96.86%,检索时间为378毫秒。

实验结果表明,该方法具有较高的检索精度。关键原因是该方法实现了语义检索。如果检索到的数学公式的语义与目的数学公式相同,则对二叉树的结构进行归一化后,二叉树的相应结构是一致的。即使目标数学公式存在于多个二叉树表示中,在规范化变量名后,二叉树的至少一个预序遍历序列与检索到的数学公式相同。该方法检索速度快。关键原因是该方法搜索由二叉树前两级的结构代码和公式元素命名的表。如果该表存在于数学公式数据库中,则搜索表中检索到的数学公式的预排序遍历序列。

6.结论

基于数学公式的二叉树表示,介绍了一种LaTeX文档的数学公式检索方法。实验结果表明,该算法不仅实现了数学公式的语义检索,而且具有较高的检索精度和较快的检索速度。离线检索的结果表明,所提出的方法同样适用于在线情况。现有检索系统的缺点是在求解LaTeX文档中的数学公式时无法检索到。如何在PDF文档和WORD文档中检索数学公式将是我们今后的研究工作。

利益冲突

作者声明,本论文的出版不存在利益冲突。

致谢

本研究部分得到了国家自然科学基金(编号:61304149)、波兰-挪威研究计划(项目编号:Pol-Nor/200957/47/2013)、中国辽宁省自然科学基金会(编号:201202003)和大学新世纪优秀人才计划(编号:NCET-11-1005)的支持。