CN110795526B - 一种用于检索系统的数学公式索引创建方法与系统 - Google Patents
一种用于检索系统的数学公式索引创建方法与系统 Download PDFInfo
- Publication number
- CN110795526B CN110795526B CN201911034594.7A CN201911034594A CN110795526B CN 110795526 B CN110795526 B CN 110795526B CN 201911034594 A CN201911034594 A CN 201911034594A CN 110795526 B CN110795526 B CN 110795526B
- Authority
- CN
- China
- Prior art keywords
- formula
- tree
- operator
- root
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种用于检索系统的数学公式索引创建方法与系统,其能够通过公式解析、公式树节点合并、公式树节点重排、叶子节点符号替换、公式树字符串索引创建等几个步骤,实现对Latex数学公式的快速索引创建,解决了由于公式书写习惯差异、基本运算规律使用而导致的索引创建不唯一问题,能够为数学公式的精确检索提供准确、有效的倒排索引。该发明在计算机检索系统中对于数学知识检索、自动推理等方面具有重要的应用价值,提高了检索系统的检索效率。
Description
技术领域
本发明涉及信息检索、数学公式解析处理等相关技术领域,特别涉及数学公式的解析、标准化、索引创建和检索方法和系统。
背景技术
随着互联网的发展,网络信息资源的日益丰富,搜索引擎在网络信息资源获取中的作用也日益重要。搜索引擎通过网页信息爬取、文本处理、索引创建等方式,建立关键词与目标文本的索引目录。这样,人们就可通过关键词检索,快速、准确的获得所需的相关信息文本资源。
然而,网络上除了大量由自然语言描述的各种文本外,还有许多专业性的结构化文本信息,如数学知识、物理规律等。这些信息对学生、研究人员和专业人士都十分重要。但通用搜索引擎通过分词构建倒排索引的方法对这种结构化文本信息的处理并不完全适用。这是因为数学知识、物理规律除了包含与普通文本相同的自然语言描述之外,还包含大量结构化的公式。在实际描述中,由于书写习惯、教育背景的差异,这些结构化公式的对比无法通过直接的字符串比对实现,变量符号选择的差异就会导致同一公式具有完全不同的字符串表示。因此,数学公式的索引创建往往需要更为复杂的结构化分析,如何有效地创建数学公式的索引也成为高效公式检索的重要保证。
目前,数学公式检索和索引创建的常用方法大致可分为以下几类:
基于线性字符串索引的公式检索方法。该类方法在索引建立步骤,首先将数学公式做线性化处理,将所有非字母的数学符号对应到英文字母表中一个或一些字符,然后按照一定的规范序列化目标数学公式。该方法避免了公式的结构化嵌套对比,这类方法的查询检索效率高,适合公式的查找精确。但其无法区分由于表述风格差异而导致索引结果不一致,也不支持在交换律、结合律等常见转换规律下等价公式的有效查找。
基于语法结构的公式检索方法。该类方法将数学公式完整解析,然后通过划分子域或建立等价置换树来索引公式;在查找时,检索函数通过递归比较各个子域或分支树的相似度来实现对具体公式的检索。这类方法能够实现公式的精确检索,但由于需要递归匹配目标公式与查询公式,其无法利用通用搜索引擎提供的倒排索引实现快速查找,实际公式检索性能较低。
基于子公式比对的公式检索方法。这类方法认为,复杂的公式都是通过简单公式归纳、变形得到的。因此,只要找到最够多相同的子公式就可以判别整体公式的相似性。这类方法将待处理公式解析分拆成具有基本结构的多个表达式(有时还会存储这些表达式在原公式中的深度信息),然后以这些表达式为索引建立原公式的倒排索引。在检索时,公式检索系统也会对目标公式分拆,再以各表达式分别检索查询,最后通过合并获得最终结果。这类方法并不去匹配严格的结构信息,而是通过局部的相似性来做整体的检测。由于这类方法是基于相似度的近似检索,其并不能保证结果的准确性。
发明内容
本发明技术解决问题:针对现有数学公式检索、索引创建技术上的不足,提供一种基于公式解析的数学公式索引创建方法与系统,其能够通过公式解析、公式树节点合并、公式树节点重排、叶子节点符号替换、公式树字符串索引创建等几个步骤,实现对Latex数学公式的快速索引创建,解决了由于公式书写习惯差异、基本运算规律使用(如交换律、结合律)而导致的索引创建不一致问题,能够为数学公式的精确检索提供准确、有效的倒排索引。该发明在计算机检索系统中对于数学知识检索、自动推理等方面具有重要的应用价值,提高了检索系统的检索效率。
本发明中提出的一种用于检索系统的数学公式索引创建的方法,所述方法包括如下步骤:
步骤1:在数学公式的文本解析步骤,对输入的Latex数学公式字符串解析,如果解析成功,则将其转化为数学公式树,转步骤2;否则,返回解析错误,结束。
步骤2:在基于结合律的公式树节点合并步骤,遍历公式树中的所有父子节点,对具有相同的操作符且操作符满足结合律的父子节点合并,生成新的公式树,转步骤3。
步骤3:在基于交换律的公式树节点重排步骤,为Latex符号定义序,遍历公式树的所有节点,对操作符满足交换律的节点,重排其子树顺序,使得重排后该节点各子树按照序从小到大的顺序排列,转步骤4。
步骤4:在叶子节点的符号替换步骤,根据检索需求,将公式树的所有叶子节点中的常量符号、变量符号都替换为统一的通识符,转步骤5。
步骤5:在公式树的字符串索引创建步骤,按照定义的规则,将标准化公式树转化为标准公式字符串,创建数学公式的各类字符串索引,结束。
本发明还提出一种用于检索系统的数学公式索引创建的系统,包括:
数学公式的文本解析模块,用于对输入的Latex数学公式字符串解析,如果解析成功,则将其转化为数学公式树,转到基于结合律的公式树节点合并模块;否则,返回解析错误;
基于结合律的公式树节点合并模块,用于遍历公式树中的所有父子节点,对具有相同的操作符且操作符满足结合律的父子节点合并,生成新的公式树;
基于交换律的公式树节点重排模块,用于为Latex符号定义序,遍历公式树的所有节点,对操作符满足交换律的节点,重排其子树顺序,使得重排后该节点各子树按照序从小到大的顺序排列;
叶子节点的符号替换模块,用于根据检索需求,将公式树的所有叶子节点中的常量符号、变量符号都替换为统一的通识符;
公式树的字符串索引创建模块,用于按照定义的规则,将标准化公式树转化为标准公式字符串,创建数学公式的各类字符串索引。
本发明与现有技术相比的优点:
由本发明构建的索引检索,无需再做过多的后续处理,其能够有效消除常见运算规律、检索用户变量使用习惯、表达习惯带来的索引差异,能够准确快速地检索到精确匹配的公式或文本。该方法能够适应于针对数学知识的检索系统,作为数学公式推理的辅助索引创建模块,其避免了由于检索规则设置不合理而导致的检索结果不精确等问题。本发明具有实现简单、执行高效等特点。
附图说明
图1为本发明的实现流程图;
图2为本发明的数学公式文本解析流程图;
图3为本发明的公式解析函数FormulaAnalysis流程图;
图4为本发明的基于结合律的公式树节点合并流程图;
图5为本发明的基于交换律的公式树节点重排函数TreeReset流程图;
图6为本发明的公式树索引创建函数PrintTree流程图;
图7为本发明的公式树字符串索引创建流程图;
图8为本发明的系统第一子系统示意图;
图9为本发明的系统第二子系统示意图。
具体实施方式
下面结合附图对本发明的技术方案进行详细说明。
参见图8,一般的信息检索系统包括两个相对独立的子系统:一个是将检索文本收集处理从而获得检索的索引创建系统,其包括文本获取、文本转换、索引创建等主要模块;
参见图9,另一个是用户输入检索信息,通过用户交互、查找排序获得相关文件数据的查询系统,该系统还包括根据用户日志信息对检索结果的评估。
本发明基于这类计算机信息检索系统,针对带有Latex公式的数学文本检索。本发明所解决的技术问题是:在文本转换步骤获得Latex数学公式后,在索引创建步骤针对各个Latex公式文本而开展的数学公式字符串索引创建,即为所有包含Latex数学公式的文本/文档创建Latex数学公式的标准字符串索引。其解决了现有数学公式检索系统中检索结果不精确或是检索效率低等问题。此外,本发明的技术还可以应用于数学文本查询系统用户交互模块,具体用于处理用户输入Latex公式的公式文本解析。整体而言,本发明对于提升数学公式文本的检索效率和检索准确性具有良好的效果,可以满足数学公式的实时检索需求。
本发明中提出的一种用于检索系统的数学公式索引创建的方法与系统,所述方法包括如下五个步骤:
步骤一、数学公式的文本解析;
步骤二、基于结合律的公式树节点合并;
步骤三、基于交换律的公式树节点重排;
步骤四、叶子节点的符号替换;
步骤五、公式树的字符串索引创建。
参见图1,本发明的总体流程步骤如下:
步骤1:在数学公式的文本解析步骤,对输入的Latex数学公式字符串解析,如果解析成功,则将其转化为数学公式树,转步骤2;否则,返回解析错误,结束。
步骤2:在基于结合律的公式树节点合并步骤,遍历公式树中的所有父子节点,对具有相同的操作符且操作符满足结合律的父子节点合并,生成新的公式树,转步骤3。
步骤3:在基于交换律的公式树节点重排步骤,为Latex符号定义序,遍历公式树的所有节点,对操作符满足交换律的节点,重排其子树顺序,使得重排后该节点各子树按照序从小到大的顺序排列,转步骤4。
步骤4:在叶子节点的符号替换步骤,根据检索需求,将公式树的所有叶子节点中的常量符号、变量符号都替换为统一的通识符,转步骤5。
步骤5:在公式树的字符串索引创建步骤,按照定义的规则,将标准化公式树转化为标准公式字符串,创建数学公式的各类字符串索引,结束。
具体的,所述步骤1数学公式的文本解析步骤为:Latex数学公式的符号包括:前缀操作符、中缀操作符、常量符号、变量符号、括号等五类。例如,加法符号“+”、乘法符号“*”、等号“=”、异或符号“\oplus”等符号都属于中缀操作符;分号“\frac”、根号“\sqrt”等符号属于前缀操作符;自然数、“\pi”等符号属于常量符号;“a”、“b”、“x”、“y”等符号属于变量符号;括号包括左括号(“(”、“{”、“[”)和右括号(“)”、“}”、“]”)。
在本步骤,首先根据Latex操作符的性质设置操作符参数数量和操作符优先级;然后,根据Latex的公式构建规则,将Latex数学公式字符串解析成具有层次结构的公式树。具体方法步骤如下(流程图见图2):
步骤1.1:根据Latex各操作符的性质,确定各操作符参数数量,并用OptParaNum(opt)记录操作符opt的固定参数数量,其中opt是操作符变量;如果opt是中缀操作符,那么OptParaNum(opt)=2;
步骤1.2:根据中缀操作符的实际优先级,按从小到大的顺序为操作符设置优先级数值:优先级最低的中缀操作符的优先级数值设定为1;随后,按照优先级由小到大的顺序,中缀操作符的优先级数值逐渐增加1;由于Latex的中缀操作符有限,必然存在优先级最大的中缀操作符,不妨假设该中缀操作符的优先级数值为MaxMidPriority;接着,令所有前缀操作符具有相同的优先级数值,即MaxMidPriority+1;本发明用OptPriority(opt)记录操作符opt的优先级数值,其中opt是操作符变量;
步骤1.3:使用递归函数将带有前缀操作符、中缀操作符、常量、变量、括号的Latex数学公式字符串,转换为以root为根节点的公式树。其中,公式树的非叶子节点存储着操作符、操作符的参数数量,以及指向该操作符各操作对象的指针;公式树的叶子节点存储着变量符号或常量符号。为了描述和表示方便,递归函数FormulaAnalysis被用于公式树的构建。它以Latex符号串SymbolString为输入,判别SymbolString的规范性:如果在SymbolString符合Latex公式规范,FormulaAnalysis(SymbolString)将返回与SymbolString对应的公式树;否则,返回解析失败。
在步骤1.3中,递归函数FormulaAnalysis的具体方法如下(流程图见图3):
步骤F1:如果SymbolString只含有一个变量或常量符号,将root节点设置为该变量或常量,其参数数量设为0,函数成功返回root节点;否则,转步骤F2。
步骤F2:构建序列DepthString,记录SymbolString中各符号的括号深度。具体方法如下:
步骤F2.1:令leftBracketCount=0,从SymbolString最左边位置开始,转步骤F2.2;其中,leftBracketCount被用于记录遍历过程中左括号比右括号多的个数;
步骤F2.2:如果遇到操作符、常量符号或变量符号,将leftBracketCount记入DepthString的相应位置,转步骤F2.5;否则,转步骤F2.3;
步骤F2.3:如果遇到左括号,leftBracketCount++,将leftBracketCount记入DepthString的相应位置,转步骤F2.5;否则,转步骤F2.4;
步骤F2.4:如果遇到右括号,将leftBracketCount记入DepthString的相应位置,leftBracketCount=leftBracketCount-1,转步骤F2.5;否则,SymbolString有未知符号,函数返回识别错误;
步骤F2.5:如果leftBracketCount<0,SymbolString中括号不配对,函数返回识别错误;否则,转步骤F2.6;
步骤F2.6:如果当前位置是最后一位,结束步骤F2,转步骤F3;否则,后移一位,转步骤F2.2。
步骤F3:根据DepthString中记录的深度信息判别SymbolString的潜在公式类别。
具体方法如下:
步骤F3.1:根据DepthString中记录,寻找SymbolString中括号深度为0的位置:如果所有位置都不为0,转步骤F4;否则,转步骤F3.2;
步骤F3.2:如果SymbolString在深度为0的位置中有中缀操作符,则在这些位置中选择优先级最低那些操作符并从中选择最左边的操作符,用midOpt记录该操作符、用midPos记录该操作符在SymbolString中的位置,转步骤F5;否则,转步骤F3.3;
步骤F3.3:此时,SymbolString在深度为0的位置中只有前缀操作符,如果SymbolString的第一个位置是前缀操作符,用preOpt记录该操作符,转步骤F6;否则,SymbolString不符合Latex公式规范,函数返回识别错误。
步骤F4:此步骤处理SymbolString第一个符号是左括号、最后一个符号是右括号的公式识别,具体的:如果SymbolString第一个符号是“(”且最后一个符号是“)”,令subString表示SymbolString去除第一个和最后一个符号的符号串,调用FormulaAnalysis(subString),并将调用结果作为本次SymbolString解析的结果返回;否则,SymbolString不符合Latex公式规范,函数返回识别错误。
步骤F5:此步骤处理SymbolString是由一个中缀操作符连接两个子公式的公式识别,具体的:以位置midPos为分割,将SymbolString截取为midPos之前的符号串leftString和midPos之后的符号串rightString;调用FormulaAnalysis(leftString)和FormulaAnalysis(rightString):如果都成功返回,将midOpt设置为此公式解析根节点root的符号,设其参数数量为2,将FormulaAnalysis(leftString)和FormulaAnalysis(rightString)返回的两颗公式树作为root根节点的左右两子树,返回以root为根节点的公式树;否则,子公式解析失败,函数返回识别错误;
步骤F6:此步骤处理SymbolString第一个位置为前缀操作符、后续为该操作符参数的公式识别,具体方法如下:
步骤F6.1:将preOpt设置为此公式解析根节点root的符号;令subString是SymbolString去除第一个符号后的符号串;根据preOpt的特性,判定其是否可具有可选参数(在Latex公式中,一些操作符可以有一个可选参数,如“\sqrt”,可选参数由中括号“[”和“]”括起):如果preOpt有可选参数,即subString第一个符号是“[”,转步骤F6.2;否则,将OptParaNum(preOpt)设为此公式解析根节点root的参数数量,令paraString=subString,转步骤F6.3;
步骤F6.2:分析subString中括号(“[”和“]”)的配对情况,解析潜在的可选参数:如果配对解析成功,将解析的公式树作为root的第一棵子树,将OptParaNum(preOpt)+1设为此公式解析根节点root的参数数量,转步骤F6.3;否则,返回识别错误;该步骤具体方法如下:
步骤F6.2.1:此时,subString的第一符号是“[”,这说明有可能存在一个可选参数,令leftBracketCount=0,从subString最左边位置开始遍历,转步骤F6.2.2;
步骤F6.2.2:如果该位置上是左括号,leftBracketCount++,转步骤F6.2.7;否则,转步骤F6.2.3;
步骤F6.2.3:如果该位置上是右括号,leftBracketCount=leftBracketCount-1,转步骤F6.2.4;否则,转步骤F6.2.7;
步骤F6.2.4:如果leftBrackeCount=0,转步骤F6.2.5;否则,转步骤F6.2.7;
步骤F6.2.5:如果当前位置上的符号是“]”,记录位置bracketPos,执行步骤F6.2.6;否则,subString中括号无法配对,函数返回识别错误;
步骤F6.2.6:将subString截取为两个符号串oneString和paraString,其中oneString是subString第一个字符之后、第bracketPos位置之前的符号串,paraString是subString第bracketPos个位置之后的符号串;调用FormulaAnalysis(oneString):如果成功返回,将返回的公式树作为root节点的第一个子树,将OptParaNum(preOpt)+1设置为此公式解析根节点root的参数数量,转步骤F6.3;否则,可选参数识别错误,返回识别错误;
步骤F6.2.7:如果当前位置是subString的最后一位,参数匹配失败,返回识别错误;否则,后移一位,转步骤F6.2.2。
步骤F6.3:分析paraString中花括号(“{”和“}”)的配对情况,解析preOpt的固定参数:如果解析成功,依次将解析获得的公式树作为root节点的下一子树,并最终返回以root为根节点的公式树;否则,返回识别错误;该步骤具体方法如下:
步骤F6.3.1:令leftBracketCount=0、paraCount=OptParaNum(preOpt),转步骤F6.3.2;
步骤F6.3.2:如果paraString的第一符号是“{”,从paraString最左边位置开始遍历,转步骤F6.3.3;否则,实际参数解析失败,返回识别错误;
步骤F6.3.3:如果该位置上是左括号,leftBracketCount++,转步骤F6.3.10;否则,转步骤F6.3.4;
步骤F6.3.4:如果该位置上是右括号,leftBracketCount=leftBrackketCount-1,转步骤F6.3.5;否则,转步骤F6.3.10;
步骤F6.3.5:如果leftBrackeCount=0,转步骤F6.3.6;否则,转步骤F6.3.10;
步骤F6.3.6:如果当前位置上的符号是“}”,记录位置bracketPos,执行步骤F6.3.7;否则,paraString中括号无法配对,函数返回识别错误;
步骤F6.3.7:将paraString截取为两个符号串oneParaString和otherParaString,其中oneParaString是paraString第一个位置之后、第bracketPos位置之前的符号串,otherParaString是paraString第bracketPos个位置之后的符号串;调用FormulaAnalysis(oneParaString):如果成功返回,将返回的公式树作为root节点的下一个子树,转步骤F6.3.8;否则,可选参数识别错误,返回识别错误;
步骤F6.3.8:若paraCount>1,令paraString=otherParaString、paraCount=paraCount-1,转步骤F6.3.2;否则,转步骤F6.3.9;
步骤F6.3.9:如果bracketPos是paraString的最后一位,返回以root为根节点的公式树;否则,返回识别错误;
步骤F6.3.10:如果当前位置是paraString的最后一位,参数匹配失败,返回识别错误;否则,后移一位,转步骤F6.3.3。
在函数FormulaAnalysis的操作步骤中,步骤F1完成最为简单的单节点构造,其表明SymbolString只含有单个变量或常量。步骤F2和步骤F3为更复杂Latex公式的解析提供基础信息。一般来讲,这时Latex公式可能是“(F)”、“F1*F2”、“@[F0]{F1}...{Fn}”三种类型中的一种,其中F、F0、F1、...、Fn都是公式,*代表任意的Latex中缀操作符、@代表任意的Latex前缀操作符、[F0]表明可选参数。步骤F4、F5和F6分别完成了这三种类型公式的递归识别及相应公式树的构建。如果SymbolString符合Latex公式规范,那么FormulaAnalysis(SymbolString)将返回解析SymbolString得到的公式树。该公式树是本发明后续步骤的直接操作对象。
步骤二、基于结合律的公式树节点合并步骤为:数学公式中的加法、乘法等操作满足结合律,这使得语义等价的公式可能有不同树状的形式,如“(a+b)+c”与“a+(b+c)”。该步骤的目的是:通过树结构调整,使得在结合律下语义等价的公式具有相同的公式树。其实现思路是:如果一个公式树的父子节点具有相同的操作符,且该操作符满足结合律,那么合并这对父子节点。在上述例子中,两个公式树合并后都有树状表达:根节点操作符为“+”、操作参数数量为3、三个参数分支分别为叶子节点“a”、“b”、“c”。
本步骤将遍历给定公式树的所有节点,如果某一节点的操作符具有结合律且其某一子树根节点也具有相同的操作符,则从该节点删除这颗子树,将这颗子树的各个分支以子树的形式加入当前节点,随后调整将当前节点操作符参数数量(增加子树分支数量再减一)。该步骤可借助动态变化的list来实现,具体方法如下(流程图见图4):
步骤2.1:创建一个空的节点序列list,将待处理公式树的根节点root加到list尾部,转步骤2.2;
步骤2.2:如果list不为空,则从list头部取出一个节点,记为note,转步骤2.3;否则,转步骤2.7;
步骤2.3:如果note节点存储的操作符具有结合律,转步骤2.4;否则,将note从list中删除,将note节点的所有分支树的根节点依次加到list尾部,转步骤2.2;
步骤2.4:将note节点的每一个分支树的根节点编号,不妨设其编号为1,...,m,设note的根节点依次为root1,...,rootm,令k=1,转步骤2.5;
步骤2.5:记note节点当前的分支数量为M,如果k<=M,转步骤2.6;否则,将note从list中删除,转步骤2.2;
步骤2.6:如果rootk与note具有相同的操作符,设rootk有Bk个分支子树,将rootk从公式树note节点的分支中删除,再将rootk节点的所有分支树插入到原公式树note节点的第k到第k+Bk-1个分支位置上,同时将note尚未处理的分支依次后移,接着将note的操作符参数数量增加Bk-1,转步骤2.5;否则,k++,转步骤2.5;
步骤2.7:结束,返回调整后以root为根节点的新公式树。
在上述步骤中,list中元素的数量有可能会临时增长,但却不会无限制增加。这是由于list的新增元素一定是原公式树中某一节点分支的根节点,这样list最多包含原公式树的所有节点;另一方面,每次操作都会从list的头部删除一个节点,因此该循环操作一定在原公式树节点数量的线性时间复杂度内完成。
步骤三、基于交换律的公式树节点重排步骤为:在数学公式中,加法、乘法、等号等二元符号具备交换律,这使得语义等价的公式可能具有不同树状的形式,如“a+b”与“b+a”具有不同的树形表示。本步骤首先将定义Latex符号的序,再建立公式树上的偏序关系,然后对具有交换律操作符的节点,重排其各子树的顺序,使得重排后该节点各子树是按照从小到大的顺序排列的。这能消除由于交换律而导致的公式树结构不唯一的问题。该步骤具体方法步骤如下:
步骤3.1:为数学公式使用的操作符、变量符号、常量符号定义唯一的序。该序需满足:1)所有变量符号的序都要大于任意操作符的序;2)所有常量符号的序要大于任意变量符号的序。由于操作符、变量符号、常量符号都可由ACSII字符串唯一表示,可基于符号字符串的字典序分别确定各类符号的内部序;然后再在变量符号、常量符号内部序的基础上增加适当的数值以满足上述要求。这样就可确定任意两个Latex符号序的大小关系。在本发明中,order(symbol)被用于表示符号symbol的序,其中symbol为Latex符号变量,可以表示操作符、变量符号、常量符号。
步骤3.2:使用递归方法重新排列给定公式树中操作符满足交换律节点各分支子树的顺序,使得重排后公式树中操作符满足交换律节点的各分支子树排列顺序与各分支子树的字典序一致。为了描述和表示方便,我们构建递归函数TreeReset,它以公式树为输入,递归重排该树并同步计算该树的字典序。具体来说,如果一个节点的操作符不满足交换律,那么其各分支按照公式树的原始顺序排列;如果一节点操作符号满足交换律,则递归计算各分支子公式树的字典序后,根据字典序的大小关系重新排列各分支,再计算以该节点为根节点公示树的字典序。对于给定的公式树FormulaTree,TreeReset(FormulaTree)计算该树的字典序并实现对FormulaTree的重排。递归函数TreeReset的具体步骤方法如下(见图5):
步骤T1:构建一个空序列orderList,如果公式树FormulaTree的根节点root存储的是变量或常量,公式树FormulaTree保持不变,转步骤T4;否则,转步骤T2;
步骤T2:将公式树FormulaTree的根节点root的每一分支子树编号,不妨设编号为1,...,m,令root各分支子树依次为subTree1,...,subTreem,计算TreeReset(subTree1)、...、TreeReset(subTreem);如果root存储的操作符满足交换律,转步骤T3;否则,将重构后的各分支子树按原先的顺序加到root节点的各分支中,实现对FormulaTree的重排,转步骤T4;
步骤T3:在FormulaTree各分支子树重排后,按其字典序从小到大的顺序重排FormulaTree中root节点的各分支树,其中第一个分支为TreeReset(subTree1)、...、TreeReset(subTreem)中字典序最小的重排子树,然后按字典序依次重新排列root节点的其余各分支,进而实现对FormulaTree的重排,转步骤T4;
步骤T4:按照广度优先遍历方法,遍历重排后的FormulaTree,并在遍历过程中依次将每个节点存储的操作符、变量符号或常量符号(不妨设为symbol)所对应的序order(symbol)以及该节点操作符的参数数量(变量符号和常量符号的参数数量为0)加到orderList尾部;遍历结束后获得的序列orderList是重排后的公式树的字典序,TreeReset(FormulaTree)返回重排后的公式树及其字典序orderList。
基于结合律的公式树节点合并和基于交换律的公式树节点重排两个步骤完成了对给定公式树结构的标准化处理,其使得在交换律和结合律下等价的公式可以转换为具有相同结构的公式树,避免了由于公式形式差异而导致的索引差异。
步骤四、叶子节点的符号替换步骤为:在数学公式的书写表达中,人们有时会将自己的符号使用习惯带入其中,对同一结构公式使用不同的变量符号来阐述。例如,勾股定理即可以表示为a2+b2=c2,也可以写成x2+y2=z2。二者的结构相同,但变量符号选择的差异却会产生不同的公式树。为了消除变量符号选择所带来的差异,还需对公式树的叶子节点做进一步修正。为此,本发明提供两种方法消除叶子节点的符号表示问题:
方法一:完全消除掉变量符号和常量符号的影响,只保留公式的结构信息。其具体方法如下:对于给定的公式树,将该公式树的所有叶子节点(无论是常量符号还是变量符号)都替换为一确定通识符(如符号“X”)。该通识符在叶子节点起到占位的作用。
方法二:忽略变量符号影响,但保留常量信息。其具体方法如下:对于给定的公式树,将该公式树的叶子节点中的所有变量符号替换为通识符X,而保留原有的常量符号。
步骤五、公式树的字符串索引创建步骤。在经过基于结合律的公式树节点合并、基于交换律的公式树节点重排和叶子节点的符号替换等三个步骤操作之后,需要将标准化的公式树转换为字符串以便于检索系统建立倒排索引。为了描述和表示方便,我们构建递归函数PrintTree,它以公式树tree为输入,PrintTree(tree)输出tree的索引字符串。具体方法步骤如下:
步骤P1:设置字符串index为空;如果tree的根节点root存储着操作符,则将该操作符字符串、“(”、根节点操作符参数数量、“)”打印到index尾部,转步骤P2;否则,root节点存储着变量符号或常数符号,则将该节点存储的符号打印到index尾部,转步骤P3;
步骤P2:对于root的所有分支公式树,不妨设依次为subTree1,...,subTreem,对于i=1,...,m,依次将“{”、PrintTree(subTreei)返回的字符串、“}”打印到index尾部;转步骤P3;
步骤P3:返回输出结果index。
字符串PrintTree(FormulaTree)实际上是公式树FormulaTree的一种前缀表达式。由于公式的前缀表达式唯一且不受优先级的限制,字符串PrintTree(FormulaTree)能够唯一的索引标准化后公式FormulaTree。
在公式索引的创建过程中,为了增加检索的功能,本发明系统还对解析的公式树提供子树的索引创建功能,即如果一个查询公式是现有某一公式一部分,那么其也应该提供相应检索。为此,公式树的字符串索引创建步骤不单单对标准化的公式树本身创建索引,还对其各子树构建标准公式字符串索引。具体方法如下:
步骤5.1:对于给定公式树,通过广度优先或深度优先算法,遍历该公式树的所有节点;对于每一节点(不妨设该节点为note,以其为根节点的公式树为noteTree)如果该节点操作符满足交换律和结合律,转步骤5.2;否则,以PrintTree(noteTree)创建索引。
步骤5.2:对于note节点下两个或两个以上的所有分支组合,构建新的公式树:新公式树的根节点的操作符与note节点的操作符相同,参数数量为选定的分支数,根节点分支为选定的各个分支。本发明称这些树为noteTree的兄弟公式树(包括其自身)。例如,与t1+t2+t3对应的兄弟公式树包括t1+t2、t2+t3、t1+t3、t1+t2+t3。用PrintTree为noteTree的各兄弟树创建索引。
本发明的技术方案可以采用计算机实现,所述计算机包括台式机、笔记本电脑、服务器等各种硬件设备。还包括连接到计算机设备的网络设备以及数据库等存储装置。本发明的计算机上具有存储器、处理器等硬件设备,用于执行本发明的各个步骤。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,且应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (7)
1.一种用于检索系统的数学公式索引创建方法,其特征在于,包括如下步骤:
步骤1:进行数学公式的文本解析,对输入的Latex数学公式字符串进行解析,如果解析成功,则将其转化为数学公式树,转步骤2;否则,返回解析错误,结束;
步骤2:进行基于结合律的公式树节点合并,遍历公式树中的所有父子节点,对具有相同的操作符且操作符满足结合律的父子节点合并,生成新的公式树,转步骤3;
所述步骤2具体包括:
步骤2.1:创建一个空的节点序列list,将待处理公式树的根节点root加到list尾部,转步骤2.2;
步骤2.2:如果list不为空,则从list头部取出一个节点,记为note,转步骤2.3;否则,转步骤2.7;
步骤2.3:如果note节点存储的操作符具有结合律,转步骤2.4;否则,将note从list中删除,将note节点的所有分支树的根节点依次加到list尾部,转步骤2.2;
步骤2.4:将note节点的每一个分支树的根节点编号,设其编号为1,...,m,m为自然数,设note的根节点依次为root1,...,rootm,令k=1,转步骤2.5;
步骤2.5:记note节点当前的分支数量为M,如果k<=M,转步骤2.6;否则,将note从list中删除,转步骤2.2;
步骤2.6:如果rootk与note具有相同的操作符,设rootk有Bk个分支子树,将rootk从公式树note节点的分支中删除,再将rootk节点的所有分支树插入到原公式树note节点的第k到第k+Bk-1个分支位置上,同时将note尚未处理的分支依次后移,接着将note的操作符参数数量增加Bk-1,转步骤2.5;否则,k++,转步骤2.5;
步骤2.7:结束,返回调整后以root为根节点的新公式树;
步骤3:进行基于交换律的公式树节点重排,为Latex符号定义序,遍历公式树的所有节点,对操作符满足交换律的节点,重排其子树顺序,使得重排后该节点各子树按照序从小到大的顺序排列,转步骤4;
步骤4:进行叶子节点的符号替换,根据检索需求,将公式树的所有叶子节点中的常量符号、变量符号都替换为统一的通识符,转步骤5;
步骤5:进行公式树的字符串索引创建,按照定义的规则,将标准化公式树转化为标准公式字符串,创建数学公式的各类字符串索引,结束。
2.根据权利要求1所述的一种用于检索系统的数学公式索引创建方法,其特征在于:
所述步骤1首先根据Latex操作符的性质设置操作符参数数量和操作符优先级;然后,根据Latex的公式构建规则,将Latex数学公式字符串解析成具有层次结构的公式树;具体方法步骤如下:
步骤1.1:根据Latex各操作符的性质,确定各操作符参数数量,并用OptParaNum(opt)记录操作符opt的固定参数数量,其中opt是操作符变量;如果opt是中缀操作符,那么OptParaNum(opt)=2;
步骤1.2:根据中缀操作符的实际优先级,按从小到大的顺序为操作符设置优先级数值:优先级最低的中缀操作符的优先级数值设定为1;随后,按照优先级由小到大的顺序,中缀操作符的优先级数值逐渐增加1;假设该中缀操作符的优先级数值为MaxMidPriority;接着,令所有前缀操作符具有相同的优先级数值,即MaxMidPriority+1;用OptPriority(opt)记录操作符opt的优先级数值,其中opt是操作符变量;
步骤1.3:使用递归函数将带有前缀操作符、中缀操作符、常量、变量、括号的Latex数学公式字符串,转换为以root为根节点的公式树;其中,公式树的非叶子节点存储着操作符、操作符的参数数量,以及指向该操作符各操作对象的指针;公式树的叶子节点存储着变量符号或常量符号;递归函数FormulaAnalysis被用于公式树的构建,以Latex符号串SymbolString为输入,判别SymbolString的规范性:如果在SymbolString符合Latex公式规范,FormulaAnalysis(SymbolString)将返回与SymbolString对应的公式树;否则,返回解析失败。
3.根据权利要求1所述的一种用于检索系统的数学公式索引创建方法,其特征在于:
所述步骤2将遍历给定公式树的所有节点,如果某一节点的操作符具有结合律且其某一子树根节点也具有相同的操作符,则从该节点删除这颗子树,将这颗子树的各个分支以子树的形式加入当前节点,随后调整当前节点操作符参数数量。
4.根据权利要求1所述的一种用于检索系统的数学公式索引创建方法,其特征在于:所述步骤3具体为:
步骤3.1:为数学公式使用的操作符、变量符号、常量符号定义唯一的序,该序需满足:1)所有变量符号的序都要大于任意操作符的序;2)所有常量符号的序要大于任意变量符号的序;操作符、变量符号、常量符号都由ACSII字符串唯一表示,基于符号字符串的字典序分别确定各类符号的内部序;然后再在变量符号、常量符号内部序的基础上增加适当的数值以满足上述要求,从而确定任意两个Latex符号序的大小关系;
步骤3.2:使用递归方法重新排列给定公式树中操作符满足交换律节点各分支子树的顺序,使得重排后公式树中操作符满足交换律节点的各分支子树排列顺序与各分支子树的字典序一致;构建递归函数TreeReset,以公式树为输入,递归重排该树并同步计算该树的字典序。
5.根据权利要求4所述的一种用于检索系统的数学公式索引创建方法,其特征在于:
所述步骤3.2中具体包括:构建递归函数TreeReset,以公式树为输入,递归重排该公式树并同步计算该公式树的字典序,具体方法步骤如下:
步骤T1:构建一个空序列orderList,如果公式树FormulaTree的根节点root存储的是变量或常量,公式树FormulaTree保持不变,转步骤T4;否则,转步骤T2;
步骤T2:将公式树FormulaTree的根节点root的每一分支子树编号,设编号为1,...,m,m为自然数,设root各分支子树依次为subTree1,...,subTreem,计算TreeReset(subTree1)、...、TreeReset(subTreem);如果root存储的操作符满足交换律,转步骤T3;否则,将重构后的各分支子树按原先的顺序加到root节点的各分支中,实现TreeReset对FormulaTree的重排,转步骤T4;
步骤T3:在FormulaTree各分支子树重排后,按其字典序从小到大的顺序重排FormulaTree中root节点的各分支树,其中第一个分支为TreeReset(subTree1)、...、TreeReset(subTreem)中字典序最小的重排子树,然后按字典序依次重新排列root节点的其余各分支,进而实现TreeReset对FormulaTree的重排,转步骤T4;
步骤T4:按照广度优先遍历方法,遍历重排后的FormulaTree,并在遍历过程中依次将每个节点存储的操作符、变量符号或常量符号symbol所对应的序order(symbol)以及该节点操作符的参数数量加到orderList尾部,其中,变量符号和常量符号的参数数量为0;遍历结束后获得的序列orderList是重排后的公式树的字典序,TreeReset(FormulaTree)返回重排后的公式树及其字典序orderList。
6.根据权利要求1所述的一种用于检索系统的数学公式索引创建方法,其特征在于:步骤4进行叶子节点的符号替换使用下面任一一种方法:
方法一:完全消除掉变量符号和常量符号的影响,只保留公式的结构信息,其具体方法如下:对于给定的公式树,将该公式树的所有叶子节点都替换为一确定通识符,该通识符在叶子节点起到占位的作用;
方法二:忽略变量符号影响,但保留常量信息,其具体方法如下:对于给定的公式树,将该公式树的叶子节点中的所有变量符号替换为通识符X,而保留原有的常量符号。
7.根据权利要求1所述的一种用于检索系统的数学公式索引创建方法,其特征在于:所述步骤5具体为:构建递归函数PrintTree,它以公式树tree为输入,PrintTree(tree)输出tree的索引字符串,具体方法步骤如下:
步骤P1:设置字符串index为空;如果tree的根节点root存储着操作符,则将该操作符字符串、“(”、根节点操作符参数数量、“)”打印到index尾部,转步骤P2;否则,root节点存储着变量符号或常数符号,则将该节点存储的符号打印到index尾部,转步骤P3;
步骤P2:对于root的所有分支公式树,设依次为subTree1,...,subTreem,对于i=1,...,m,依次将“{”、PrintTree(subTreei)返回的字符串、“}”打印到index尾部;转步骤P3;
步骤P3:返回输出结果index。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911034594.7A CN110795526B (zh) | 2019-10-29 | 2019-10-29 | 一种用于检索系统的数学公式索引创建方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911034594.7A CN110795526B (zh) | 2019-10-29 | 2019-10-29 | 一种用于检索系统的数学公式索引创建方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110795526A CN110795526A (zh) | 2020-02-14 |
CN110795526B true CN110795526B (zh) | 2022-08-12 |
Family
ID=69441864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911034594.7A Active CN110795526B (zh) | 2019-10-29 | 2019-10-29 | 一种用于检索系统的数学公式索引创建方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110795526B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597393A (zh) * | 2020-04-14 | 2020-08-28 | 北京金山云网络技术有限公司 | 定理检索方法、装置、设备及存储介质 |
CN113033152B (zh) * | 2021-04-01 | 2024-05-28 | 北京有竹居网络技术有限公司 | 一种LaTeX公式显示方法及装置 |
CN116108326A (zh) * | 2023-04-12 | 2023-05-12 | 山东工程职业技术大学 | 一种数学工具软件控制方法、装置、设备及存储介质 |
CN116737763B (zh) * | 2023-08-16 | 2023-11-21 | 腾讯科技(深圳)有限公司 | 结构化查询语句执行方法、装置、计算机设备、存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004613A (zh) * | 2010-12-07 | 2011-04-06 | 无锡永中软件有限公司 | 表达式的树状显示方法及求值方法 |
CN102033863A (zh) * | 2009-09-30 | 2011-04-27 | 北大方正集团有限公司 | 一种公式处理方法与系统 |
CN102663138A (zh) * | 2012-05-03 | 2012-09-12 | 北京大学 | 一种公式查询条件的输入方法与装置 |
CN103299292A (zh) * | 2010-12-02 | 2013-09-11 | Sk电信有限公司 | 用于处理自然语言和数学公式的方法及其设备 |
CN104484311A (zh) * | 2014-12-15 | 2015-04-01 | 北京国双科技有限公司 | 用于公式的数据处理方法和装置 |
CN104899207A (zh) * | 2014-03-05 | 2015-09-09 | 中国移动通信集团福建有限公司 | 一种可视化结构化查询语言条件树构建方法及装置 |
CN104991905A (zh) * | 2015-06-17 | 2015-10-21 | 河北大学 | 一种基于层次索引的数学表达式检索方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5220483B2 (ja) * | 2008-06-06 | 2013-06-26 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 木構造のデータに対する集約計算を行うコンピュータ・システム、並びにその方法及びコンピュータ・プログラム |
-
2019
- 2019-10-29 CN CN201911034594.7A patent/CN110795526B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033863A (zh) * | 2009-09-30 | 2011-04-27 | 北大方正集团有限公司 | 一种公式处理方法与系统 |
CN103299292A (zh) * | 2010-12-02 | 2013-09-11 | Sk电信有限公司 | 用于处理自然语言和数学公式的方法及其设备 |
CN102004613A (zh) * | 2010-12-07 | 2011-04-06 | 无锡永中软件有限公司 | 表达式的树状显示方法及求值方法 |
CN102663138A (zh) * | 2012-05-03 | 2012-09-12 | 北京大学 | 一种公式查询条件的输入方法与装置 |
CN104899207A (zh) * | 2014-03-05 | 2015-09-09 | 中国移动通信集团福建有限公司 | 一种可视化结构化查询语言条件树构建方法及装置 |
CN104484311A (zh) * | 2014-12-15 | 2015-04-01 | 北京国双科技有限公司 | 用于公式的数据处理方法和装置 |
CN104991905A (zh) * | 2015-06-17 | 2015-10-21 | 河北大学 | 一种基于层次索引的数学表达式检索方法 |
Non-Patent Citations (2)
Title |
---|
A Mathematical Formula Retrieval Method Using Structure Sub-tree;MJ Guan 等;《Proceedings of the 2012 2nd International Conference on Computer and Information Application (ICCIA 2012)》;20140530;第583-586页 * |
一种基于二叉树的数学公式抄袭检测算法;秦玉平 等;《计算机工程与应用》;20150503;第257-260页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110795526A (zh) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795526B (zh) | 一种用于检索系统的数学公式索引创建方法与系统 | |
CN109492077B (zh) | 基于知识图谱的石化领域问答方法及系统 | |
US20220327137A1 (en) | Modifying field definitions to include post-processing instructions | |
Malyshev et al. | Getting the most out of Wikidata: semantic technology usage in Wikipedia’s knowledge graph | |
US9454599B2 (en) | Automatic definition of entity collections | |
KR100372582B1 (ko) | 데이터처리방법 및 시스템 및 그 처리프로그램을 기록한계산기판독이 가능한 기록매체 | |
JP3914662B2 (ja) | データベース処理方法及び実施装置並びにその処理プログラムを記憶した媒体 | |
CN111353030A (zh) | 基于旅游领域知识图谱的知识问答检索方法及装置 | |
US20040221229A1 (en) | Data structures related to documents, and querying such data structures | |
Alexander et al. | Natural language web interface for database (NLWIDB) | |
WO2015010509A1 (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
CN115576984A (zh) | 中文自然语言生成sql语句及跨数据库查询方法 | |
CN113190687B (zh) | 知识图谱的确定方法、装置、计算机设备及存储介质 | |
US20150100605A1 (en) | Determining collection membership in a data graph | |
Navarro | Document listing on repetitive collections with guaranteed performance | |
JP2020067971A (ja) | 情報処理システムおよび情報処理方法 | |
CN113297251A (zh) | 多源数据检索方法、装置、设备及存储介质 | |
JP5169456B2 (ja) | 文書検索システム、文書検索方法および文書検索プログラム | |
CN113590650A (zh) | 基于特征表达式的结构化查询语句甄别方法及装置 | |
CN114880483A (zh) | 一种元数据知识图谱构建方法、存储介质及系统 | |
CN114691845A (zh) | 语义搜索方法、装置、电子设备、存储介质及产品 | |
CN112698831A (zh) | 一种代码自动生成质量评估方法 | |
CN110928998B (zh) | 一种基于等价类代表元索引和存储的拉丁方搜索引擎 | |
Ni | Attribute Name Evaluation and Its Implementation | |
Georgala | Time-efficient link discovery for data-driven applications. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |