CN1991837A - 结构化文档处理装置和方法 - Google Patents

结构化文档处理装置和方法 Download PDF

Info

Publication number
CN1991837A
CN1991837A CNA2006101647029A CN200610164702A CN1991837A CN 1991837 A CN1991837 A CN 1991837A CN A2006101647029 A CNA2006101647029 A CN A2006101647029A CN 200610164702 A CN200610164702 A CN 200610164702A CN 1991837 A CN1991837 A CN 1991837A
Authority
CN
China
Prior art keywords
state
structured document
transition
document
automat
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.)
Granted
Application number
CNA2006101647029A
Other languages
English (en)
Other versions
CN100495401C (zh
Inventor
铃村丰太郎
立堀道昭
浦本直彦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Present service company
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1991837A publication Critical patent/CN1991837A/zh
Application granted granted Critical
Publication of CN100495401C publication Critical patent/CN100495401C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/221Parsing markup language streams
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明的目标是提供一种能够使用诸如XML解析器之类的解析器来快速解析数字化的结构化文档的句法解析装置和方法。与实例文档和概要信息有关的统计信息被用于合并允许对结构化文档分段的多个状态转变,由此生成优化的自动机。在合并状态转变中,以ID列表的形式保存连续匹配状态转变,所述ID列表然后用于对连续状态转变数进行计数。此外,统计地获得包括嵌套元素的重复元素出现次数的模式。通过使用统计方法来解决XML中空白的变化。概要信息用于预先建立自动机,由此降低所述句法解析装置的初始开销。

Description

结构化文档处理装置和方法
技术领域
本发明涉及一种结构化文档处理装置、方法以及程序,更具体地说,涉及一种能够提高电子数据形式的结构化文档的句法解析速度的结构化文档处理装置、方法以及程序。
背景技术
随着面向对象技术的发展,如今电子数据形式的结构化文档已经用在各个领域中。特别地,互联网的广泛使用和Web服务技术的进步导致了是结构化文档中的一种文档的XML(可扩展标记语言)的激增。XML还广泛地用于诸如SOA(面向服务的体系结构)之类的软件体系结构和网格计算,并且许多供应商提供XML解析器(也称为XML处理器)。XML解析器是XML的基本技术,其解析XML文档并处理XML文档以允许应用程序容易地使用该XML文档。它对进一步提高XML的性能十分重要。
因此,在对已解析的结构化文档与要解析的结构化文档之间的差异进行分析的基础上,做出了许多尝试以提高XML解析器的处理速度,如专利文献1中所描述的。专利文献1中所提出的提高XML解析器的处理速度的技术利用了消息之间的类似性。将自动机用作检测类似性的机构,并且在运行时期间从XML文档动态地生成状态转变序列(自动机)。此外,通过在字节序列级别执行比较来有效和高速地比较消息,并且仅处理它们之间的差异,由此提高了处理速度。
[专利文献1]已公开未审查专利申请No.2004-314713
发明内容
本发明要解决的问题
本发明的目标是解决下述问题,以便进一步改进专利文献1中提出的XML解析器(下文中称为Deltarser)。
将根据Deltarser提出的自动机生成为使用SAX(XML的简单应用程序接口)粒度来定义的状态转变序列(状态转变图信息)状态。此处SAX事件是这样的接口,所述接口在分析XML文档的同时通知事件的应用程序每次发现了要素的开始或结束。
然而,与字节序列比较相比,上述状态转变处理成本高(并且耗时),并且传统方法由于增加了状态或转变数而降低了性能。状态转变定义中的状态的粒度越小,字节序列比较的成功率就越高,但是整个文档中字节序列比较所需的时间量就越多。因此,存在寻找最佳粒度以定义创建自动机的状态以便构建快速XML解析器的问题。
另一个问题是生成差异分析所需的自动机的新状态序列的成本。状态的生成包括存储部分处理所需的上下文和复制字节序列。这些操作的成本引起了开销。因此,存在如何避免在运行时期间生成新状态转变的问题。
下面进一步详细描述上述要由本发明所解决的问题。
<由于状态转变数增加引起的性能恶化>
根据专利文献1中描述的发明,SAX事件被表示为构成自动机的一个状态。图1示出了实验中测量的处理时间对状态转变数的图。图1所示的是在测量的同一文档(文件大小为64KB)中进行字节序列匹配,同时改变其组成状态数(X轴)所花费的平均处理时间(ms)。如可以从图中看到的,处理时间随状态转变数的增加而单调增加。例如,当每个空白表示成一个状态时,状态数约为12,000,当空白并入其它状态时,其减少了4,000,达到约8,000,并且单独的字节序列匹配的成本从3.25(ms)降低为2.4(ms)。性能差异为30%。实验表明状态转变数越小,差异处理所引起的开销就越小。
然而,具有越少状态的自动机不一定越好。随着状态数减少,失配的概率增加,因此,新生成状态的成本增加了开销。以这样的方式来优化自动机是很重要的:最小化状态转变数,但是最大化匹配概率。
<状态转变的生成成本高>
专利文献1中的发明公开了Deltarser的基本处理,Deltarser是一个XML解析器,通过对结构化文档间的差异执行分析而提高了其处理速度。Deltarser在运行时期间动态地从文档中生成自动机,以便有效地检测差异。此处,自动机的一次状态转变是SAX事件的一个单元。生成状态的成本高于XML解析器的其他任务的成本。防止频繁的状态生成将会提高总体性能。
图2示出了在Deltarser与现有XML解析器(Xerces和Piccolo)之间的比较。图中的横轴表示所解析的XML文档数,纵轴表示解析所花费的时间。例如,Deltarser和Xerces之间的比较显示在输入文档数超出25的点之上Xerces更快。如果可以通过使用概要信息来预先创建自动机,则可以降低此部分的成本,并实现在现有解析器之上的Deltarser的优越性。
发明概述
为了解决上述问题,本发明提出了一种用于通过使用与实例文档有关的统计信息和概要信息来优化自动机的方法。所述概要信息可降低预先生成状态转变序列的成本并且可进一步优化自动机的状态数和转变数。所述优化可提高诸如XML解析器之类的解析器进行句法解析的速度。
除XML文档之外,结构化文档的例子包括XHTML(可扩展超文本标记语言)和SGML(标准通用标记语言)文档。
具体地说,本发明提供了一种具有用于解决上述问题的手段的结构化文档处理装置、方法和程序。所述装置、方法和程序仅在其实施方式上彼此不同;它们实质上基于相同的技术。因此,将作为代表描述用于解决结构化文档处理装置中所提供的问题的手段。
(1)执行电子数据形式的结构化文档的句法解析的结构化文档处理装置通过使用自动机生成单元来生成多个状态的状态转变序列,所述多个状态能够进行结构化文档的分段。所述装置包括实例文档分析单元,其在生成状态转变序列(自动机)中,通过使用与实例文档(其是结构化文档的实体)有关的统计信息来将状态转变合并到状态转变序列中,并且通过使用所述统计信息来统计地获得状态转变中重复元素的出现数的模式。所述装置还包括概要信息分析单元,其在从结构化文档生成状态转变序列中,通过使用定义了与该结构化文档有关的信息的结构和格式的概要信息来将状态转变合并到状态转变序列中。所述装置还包括自动机优化单元,其相互地优化由所述实例文档分析单元和所述概要信息分析单元所合并的自动机。所述实例文档分析单元和所述概要信息分析单元都优化自动机。此外,所述实例文档分析单元和所述概要信息分析单元之一可进一步优化由另一个单元所优化的自动机。
(2)提供了一种根据项目(1)的结构化文档处理装置,其中所述结构化文档是XML文档,并且所述多个能够进行分段的状态由SAX事件定义。然而,虽然根据项目(1)的结构化文档处理装置所解析的结构化文档不限于XML文档,但是在以下描述中假定结构化文档是XML文档并且状态由SAX事件定义。
(3)提供了一种根据项目(1)的结构化文档处理装置,还包括连续状态转变计数单元,其为实例文档分析单元中状态转变合并内的每个状态转变指定ID,以ID列表的形式存储连续匹配状态转变,以及通过使用ID列表来对连续匹配状态转变的出现计数。此配置表示用于合并状态转变的特定手段。
(4)提供了一种根据项目(1)的结构化文档处理装置,其中即使重复元素是嵌套的,所述自动机优化单元仍对由实例文档分析单元检测的重复元素进行优化。
(5)提供了一种根据项目(1)的结构化文档处理装置,其中所述实例文档分析单元通过使用所述统计信息使结构化文档中的元素间出现的任意数目的空白字符的模式固定。
以上给出的项目(3)到(5)显示了用于合并状态转变的特定手段,下面将对其进行详细描述。
包括上述手段的结构化文档处理装置使用实例文档和概要信息来合并作为分析结构化文档状态的结果而生成的状态转变序列。如先前所述,使用实例文档的自动机的优化和使用概要信息的优化不是相互排斥而是相互补充的。使用所述优化方法之一优化的自动机能够通过使用另一个方法来进一步优化。所述处理具有减少要连续解析的状态数的效果,并且相应地降低了状态转变的成本。
发明优点
根据本发明,在诸如XML之类的结构化文档处理中,将用于从输入实例文档动态地获得统计信息以执行快速分析的技术与使用静态的概要信息的技术相结合,由此解决了上述问题。因此,拓宽了诸如Deltarser之类的结构化文档处理装置的应用范围。
附图说明
图1示出了随着状态数增加的平均处理时间的增加;
图2示出了在状态转变生成开销中Deltarser与现有XML解析器之间的比较;
图3是本发明的一个实施例的结构化文档处理装置的功能方块图;
图4示出了用于为状态转变指定ID的方法以及用于对重复元素计数的方法;
图5示出了优化后的自动机;
图6示出了循环自动机;
图7示出了扩展自动机;
图8示出了第一XML实例文档;
图9示出了优化之前第一XML实例文档的自动机的结构;
图10示出了处理嵌套的重复元素的流程;
图11示出了第一XML实例文档1的优化后的自动机的结构;
图12示出了第二XML实例文档;
图13示出了第二XML实例文档的优化后的自动机的结构;
图14示出了优化的分类;
图15示出了优化之前的简单类型元素的自动机;
图16示出了简单类型元素的优化后的自动机;
图17示出了第一示例性XML概要;
图18示出了合成器;
图19示出了第二示例性XML概要;
图20示出了由于空白而引起的状态转变的例子;
图21示出了在第一实施例中的实验内使用的XML概要;
图22示出了在第一实施例中的实验内使用的XML实例文档;
图23示出了在第一实施例中的实验的结果;以及
图24示出了在第一实施例中的实验结果的图。
[符号说明]
1…输入单元
2…输出单元
3…通信单元
4…存储器
4a…实例文档统计信息
4b…解析的源结构化文档
5…实例文档分析单元
6…概要信息分析单元
7…自动机优化单元
8…句法解析单元
9…API单元
10…结构化文档处理装置
20…结构化文档
21…实例文档
22…概要信息
30…应用程序
具体实施方式
将参考附图根据本发明的实施例描述本发明。
图3示意性地示出了根据本发明的一个实施例的结构化文档处理装置10的功能块。在以下描述中提供的配置只是说明性的,并且本发明不限于所述配置。
结构化文档处理装置10包括从操作员接收输入的输入单元1,输出处理结果的输出单元2,以及存储输入/输出数据和中间数据的存储器4。结构化文档处理装置10还包括分析输出实例文档的实例文档分析单元5,以及分析以预定概要语言定义的概要信息的概要信息分析单元6,生成状态转变序列(自动机)的自动机生成单元7a,相互优化由实例文档分析单元5和概要信息分析单元6合并的状态转变序列的自动机优化单元7,解析结构化文档的各种句法的文档解析单元8,以及通知必要的应用程序解析哪些结构化文档的结果并且充当与应用程序的接口的API单元9。
输入单元1包括诸如键盘和鼠标之类的典型输入设备以及将数据接受为文件的输入装置。输出单元2包括诸如CRT或液晶显示之类的显示设备以及将数据输出为文件的输出装置。可以可选地提供通信单元3以便经由通信将数据输出到外部系统或从外部系统输入数据。
结构化文档20(其是到处理装置的数据输入)包括实例文档21和概要信息22。概要信息可忽略。如果忽略了概要信息,则使用预定的默认值。实例文档21是结构化文档20的实体,通过输入单元由实例文档分析单元5来分析其状态。状态分析后的数据(状态转变序列)作为实例文档统计信息4a存储在存储器4中。所述状态分析后的文档在要解析的下一个结构化文档的差异分析中用作解析的源结构化文档4b。
实例文档分析单元5包括连续状态转变计数器(未示出),其具有将ID指定给每个状态转变、以ID列表的形式存储连续匹配状态转变,以及使用ID列表对连续匹配状态转变读数以便合并多个状态转变的功能。
概要信息分析单元6对以诸如DTD(文档类型定义)或W3C(万维网协会)XML概要之类的概要语言编写的XML文档的结构和格式进行分析。
稍后将详细描述使用与实例文档和概要信息有关的统计信息的处理。
文档解析单元8实际上对结构化文档20的句法进行解析。例如,它对XML文档的元素和内容进行解析并将XML文档变换成诸如SAX事件或应用程序可容易地访问的DOM树之类的形式。在执行此操作中,将发现新解析的结构化文档20的状态转变序列与存储器4中存储的一组已解析的源文档4b的状态转变序列之间的差异,并且仅分析所述差异以便提高解析效率。此处作为状态转变序列的表示提供了状态转变图,如以下将描述的。
专利文献1中描述了用于分析所述差异的特定方法,因此在此省略所述描述。
应用程序30通过API来访问结构化文档处理装置。API(应用程序接口)单元9提供了诸如DOM或SAX之类用于XML文档的典型接口。在广义上,API单元9还充当输入/输出单元,这没有描述。
从上述描述中将理解,结构化文档处理装置10可以是诸如个人计算机或服务器之类的计算机,并且通过安装具有所需功能的计算机程序来实现。下面将描述结构化文档处理装置10所执行的处理。
如根据所述问题而描述的,自动机的状态转变对性能具有显著影响。为了解决这个问题,本发明提供了一种通过优化自动机来减少状态转变数的方法。例如,如果存在较少的状态转变分支并且自动机几乎仅遵循特定状态转变路径,则将所述路径表示成多个状态是无用的。在这种情况下,可以将多个状态合并为一个状态以减少状态转变数。
根据本发明,使用与XML实例文档有关的信息的以下两项来优化自动机:
(A)关于实例文档的统计信息
(B)概要信息
这些技术不是相互排斥而是相互补充的。即,在对获得足够量的统计信息所需的一组文档进行处理之前,使用统计信息(A)优化的自动机可以更早地使用概要信息(B)来优化以获得优化后的自动机。同样,使用概要信息(B)优化的自动机可以使用统计信息(A)来优化,由此可以在自动机中反映出在运行时期间出现但在概要中没有描述的模式。以下将描述使用信息(A)和(B)中的每个项的优化。
(A)使用关于实例文档的统计信息的优化
此方法使用关于实例文档的统计信息来优化自动机,由此提高XML解析器的处理速度。具体地说,提供了以下两种方法。
(A-1)合并多个状态转变
(A-2)生成适合于重复元素出现数的模式的自动机
(A-1)合并多个状态转变
如上所述,为了进一步提高专利文献1中公开的Deltarser的处理速度,必须考虑由状态转变引起的成本。因此,当在字节序列匹配期间发现连续匹配状态转变具有很高的概率时,优选将那些状态表示为单个状态转变,而不是分别地表示它们。例如,如果要处理XML的字符串<name>IBM</name>,则通常生成状态转变“<name>”、“IBM”和“</name>”。如果每次都匹配这些状态,则优选将它们合并为一种表示“<name>IBM</name>”。使用统计信息来执行这种合并。
首先,必须找到连续匹配状态转变序列。为每个状态转变指定ID(标识符)以便标识该状态转变。每次状态转变匹配现有状态转变时,记录状态转变的ID并将其添加到ID的列表(下文称为ID列表)。在匹配结束(表示为Sn,其中“n”是自然数)位置的状态处结束记录ID。
当状态转变连续匹配和ID列表的长度达到2或更多时,ID列表中包含的一组状态转变变成要合并在一个状态转变中(将多个状态转变合并到单个状态转变中)的候选者。为ID列表提供计数器。该计数器用于统计地分析要处理的一组实例文档中状态转变序列的出现频率。ID列表和计数器存储在状态S1中并被管理。可使用各种方法来对相同的ID列表进行计数。例如,可以创建适当的散列函数,将ID列表的散列值用作关键字,并且将计数器保存为值。
例如,考虑其中有这样的文档的情况,在所述文档中,文本节点<B>的值变为<A><B>1</B></A>、<A><B>2</B></A>等等。此时,生成图4所示自动机并且将ID指定给每个状态转变。
在这个例子中,如果当处理100个文档时,80个文档出现ID为1和2的状态转变连续地匹配以及ID为4和5连续地匹配,则在状态3和6中存储用于对ID列表计数的散列表。
在收集了足够量的统计信息之后,此机制显示了连续状态转变序列出现的统计频率。可以建立频率的阈值并且频率超出该阈值的状态转变序列可被合并在一个状态转变中。基本地,保留在合并之前的该组状态转变,以便避免重新生成表示<A>的状态转变,例如,在遇到需要未合并的状态转变的文档(例如,<A><C>$C</C></A>)的情况中。
例如,设置了80%的阈值,以便如果相同的ID列表出现了80%或更高的概率,则执行状态合并。合并之前的状态被删除。在这种情况下,图4所示的自动机被优化为图5所示的自动机。
(A-2)生成适合于重复元素出现数的模式的自动机
考虑其中某个元素重复出现的情况(虽然此处使用了两个术语“重复”和“反复”,但是它们是同义词)。Deltarser能够生成以下两种类型的自动机作为表示这种情况的自动机。
(1)循环自动机
如果出现重复元素并已生成表示该元素的状态,则自动机返回该状态并且执行与第一次反复相同的状态转变。图6显示了其中重复最终变成循环状态转变的自动机。
(2)扩展自动机
当重复元素出现时,即使已生成表示该元素的状态,仍单独地生成状态转变。图7显示了其中重复出现为呈直线的状态转变的自动机。
循环自动机的一个优点在于不会生成冗余状态转变并且因此自动机很紧凑,与关于扩展自动机的顾虑相比,关于与状态/转变数关联的存储器消耗的顾虑很小。然而,在从状态S3转变到状态S2之后,存在两个自动机可做出到其的转变的候选者S1和S3,并且自动机做出应转变到哪个状态的成本(字节序列匹配以及上下文计算(如元素堆栈和命名空间)的成本)高于扩展自动机的成本。
另一方面,扩展自动机的状态比循环自动机多,但是状态转变的成本比前者低,因为它只有一个可做出向其转变的候选状态。然而,扩展自动机不适于元素的重复数总是随机的情况,因为元素出现的次数会与重复一样多。在这种情况中,最好是采用循环自动机。
下面将描述以统计方式从两类自动机中选择一个自动机的方法。基本原则是使用首先构造自动机的前者的方法。然后,对要处理的一组实例文档中的重复进行检测和计数。如果确定重复数是统计上的固定值并且不超出阈值,则将自动机优化为扩展自动机。另一方面,如果重复数在统计上分散且随机,则使用循环自动机。
(1)检测重复的方法
在图6的示例性循环自动机中,首先必须检测它通过同一路径返回状态S2。这可以通过记录所经过的状态转变的ID来检测。即,在图6的例子中,具有ID{2,3,4}的路径被添加到状态S2。ID列表不同于以上描述的连续状态转变序列。被记录以便检测重复的状态转变序列将称为重复状态转变序列。重复状态转变序列与连续状态转变序列的不同之处在于:将记录经过的状态转变,与它们是否匹配无关。
例如,考虑到文档:<X><A>1</A><A>2</A><A>3</A></X>。因为在<X>之后出现了组<A>$A</A>的三次重复,因此在状态S2中记录具有状态转变ID 2、3、4的序列的三次重复。为了找到重复数的模式,以相同的方式来记录要处理的文档组中的ID,并且可以统计地获得与重复数是否在某种程度上随机或某个固定重复数是否频繁出现有关的信息。基于所述信息,如果重复数是固定的,则如上所述将它优化为扩展自动机。如果判定重复数是随机的,则依旧使用循环自动机。
(2)处理嵌套的重复元素
重复可能以嵌套形式出现。例如,在图8所示的SML实例文档中,出现了最内侧元素<C>的任意次重复并且出现了稍外侧的元素<B>的两次重复。所述文档可表示为图9所示的循环自动机。此处,将由标记<A>与ID号一起所引起的状态转变表示成Tid-1[<A>]。即使重复元素以这种方式嵌套,仍有必要如(1)中所描述的计数重复数。
根据此方法,如下面所描述的对在另一个循环中嵌套的循环内的元素的重复和嵌套循环的重复进行计数。
将参考图10的流程图来说明所述处理。
首先,检测最内侧循环并将其设置为初始“内侧循环”(步骤S1).
然后,通过使用方法(1)来记录内侧循环的反复数(步骤S2).
如果发现了包围所述内侧循环的最近的外侧循环(步骤S3:是),则将它记录为仅经过循环的一次重复的ID列表,即使内侧循环的反复数不止一次(步骤S4)。使用ID列表的计数器对外侧循环的反复数进行计数(步骤S5)。如果在步骤S3没有检测到外侧循环(步骤S3:否),则处理结束。
接下来,将外侧循环设置为内侧循环(步骤S6),并执行步骤S3、S4和S5。
例如,将图8的例子考虑为XML实例文档。在这种情况下,在S3中记录ID列表{3,4,5}上的状态转变序列。因为元素C重复地出现,所以ID列表{3,4,5}的状态转变形成了循环。在元素C的重复结束并且元素B的结束标记出现之后,文档移动到状态S2。仅使用(1)中所描述的检测重复的方法,可生成ID列表{1,2,3,4,5,3,4,5,3,4,5,3,4,5,6,7}。ID列表中ID 3、4、5的序列的任意重复数都能够出现。使用方法(2),将具有循环结构的{3,4,5}看作在其外侧循环处的循环的一次反复,并且表示为ID列表{1,2,3,4,5,6,7}。因而可适当地对重复进行计数。
图9示出了在优化之前图8所示实例文档的自动机。在使用方法(2)对它进行优化之后,内部是循环自动机,外部是扩展自动机,如图11所示。
图12示出了另一个示例性实例文档以证明可在另一种情况中完成相同操作。在这种情况下,元素C的最内侧循环的反复次数是固定的,但是元素B的循环的反复次数是任意的。可通过使用以上所描述的方法来对重复进行适当地计数。结果,生成了图13所示的自动机。
(B)使用概要信息来优化和预建立自动机
此处可用于优化自动机的概要信息是W3C中规定的XML概要。也可以采用诸如DTD、RELAX(XML的规则语言描述)或NG之类的其他概要语言。
图14示出了优化流程。首先,根据它们是否具有属性(图14左侧部分所示)来对要处理的元素进行分类,并且将它们进一步分类成简单类型或复杂类型(如图14右侧部分所示)。术语“简单类型元素”指是简单内容模型并且没有属性的元素。简单内容模型只接受文本节点作为其子元素。其他元素(是具有属性的简单内容模型或其他内容模型)被定义为复杂类型。存在其中混合了文本节点和子元素的混合内容,本文将不对其进行考虑。
下面描述用于对这些类型中的每个类型进行优化的方法。
(B-1)优化简单类型元素
(1)具有固定值的简单内容元素
如果在“xsd:element”中指定了“固定”属性,则通过使用此属性来确定简单内容元素。
例子)
XML概要:<xsd:element name=″name″type=″xsd:string″fixed″IBM/>
XML实例:<name>IBM</name>
如果没有概要信息,则将每个″<name>″、″IBM″、″</name>″定义为一个状态,并且将生成图15所示的三个状态序列。通过使用以上所述的概要信息,可以将这三个状态合并成图16所示的一个状态。以这种方式,可通过使用概要信息来合并状态,从而提高了处理速度。
(2)为其指定候选值的元素
如果指定了概要的候选值或元素之间的候选值,则可预先将该信息用于创建它们的状态转变(自动机预建立)。
(B-2)复杂类型元素的优化
(1)后跟固定元素的元素
如果指定了XML概要中的″xsd:sequence″,假定minOccurs不为零,则元素后始终跟有固定元素。″Xsd:sequence″是定义了元素的有序组的合成器。使用此信息,可以将两个不同的状态合并成单个状态。
例如,考虑使用图17中所示的XML概要的下列XML实例。
XML实例
<X><A>1</A><B>2</B><C>3</C></X>
上面给出的XML实例通常具有下列11种状态转变:(″<X>″,″<A>″,1,″</A>″,″<B>″,2,″</B>″,″<C>″,3,″</C>″,″</X>″)。使用概要信息,状态转变数可减少到7个,为:″<X><A>″,1,″</A><B>″,2,″</B><C>″,3″</C></X>″。
(2)后跟固定候选元素之一的元素
如果在″Xsd:choice″中指定了候选元素,则会预先知道跟随该元素的候选元素。此信息可用于创建状态转变,因而可降低创建状态转变的成本。″Xsd:choice″是定义一组排他元素(只可以选择某一元素)的一个合成器或多个合成器。″Xsd:choice″可以指定有maxOccurs=unbound或maxOccurs的有限发生次数。
(3)不以特定顺序描述元素组的合成器″Xsd:all″用于描述出现零次或以任何顺序出现一次的一组元素。图18显示了这样的例子。
此概要表示A、B和C中的每一个均不以特定顺序出现了一次(缺省是minOccur=1)。在这种情况下,从减少状态数的角度,可以预先建立<A>、<B>和<C>的所有可能组合(例如,由一个状态来表示<A/><B/><C/>)。如果考虑到自动机的大小,则可去除在执行后的给定时间段或更长时间后未使用的节点。
(4)重复元素
如果为maxOccurs指定了″unbound″,则知道元素出现了各种次数,因此(有把握地)创建重复转变。
(B-3)具有属性的元素
(1)具有固定属性的元素
如果在概要中指定了固定属性值或元素之间的固定值,则该信息可用于将状态与在前或在后的状态进行合并。如果在xsd:attribute中指定了“固定”属性,则属性值是固定的并且必须使用指定的相同值。下面显示了示例性概要和XML实例。
XML概要:<xsd:attribute name=″year″type=″xsd:date″fixed=″2004″/>
XML实例<item year=″2004″>
(2)具有指定候选属性的元素
候选值可用于预先建立状态转变。在以下XML概要中,定义了仅将“red”、“blue”和“green”作为id属性值出现。此信息可用于预先创建状态转变。图19显示了一个示例性XML概要。
(C)处理空白
XML允许使用任意数目的空白。迄今为止的优化方法的描述中使用不包括空白的例子。然而,XML对出现空白字符的限制很宽松。元素之间可出现任意数目的空白,并且在元素名中可出现空白。本发明使用关于实例文档(A)的统计信息来解决空白的变化。
图20示出了由于空白引起的状态转变的例子。由于空白所引起的状态转变与由于其他元素所引起的状态转变相同:创建在ID=2和ID=2’的状态转变中时的循环状态转变。ID=2的状态转变是其中在<A>和<B>中间出现三个空白(<A>□□□<B>)的情况;ID=2’的状态转变是其中在<A>和<B>中间出现五个空白(<A>□□□□□<B>)的情况。通过使用统计信息(A)可以发现哪个转变在统计上更经常发生。因而,可以标识空白次数的模式并且所述空白可以如上所述与其他状态转变进行合并。
[第一实施例]
图21和22示出了本发明的实施例的结果。图21和22示出了对实例执行的实验结果,在所述实例中,根据来自IBM的现有XML解析器产品A来实现本发明的方法。XML解析器产品A具有这样的体系结构:其中将概要转换成中间表示,并且在虚拟机上执行该中间表示以验证概要。在此实验中,通过使用下一个要出现的元素由ReadOne指令唯一确定的事实来执行此处提出的自动机优化,所述指令是处理″xsd:sequence″的指令。使用以下实验环境及XML概要文件和XML实例文件。
<实现环境>
-ThinkPadT43 2668-72J(PentiumM760,2.0GHz,1GB RAM)
-WindowsXP Professional
-JavaVM:Sun JVM 1.42
-比较解析器
1)Deltarser:其中实现专利文献1中描述的发明的XML解析器
2)概要-感知(Schema-aware)Deltarser:其中应用了本发明的方法的Deltarser
-比较方法
1)在10,000次预热之后,执行10,000次处理并计算平均时间。
2)执行所有文本元素(包括相同文本)的部分处理。
-测试文档
1)图21所示的XML概要文件
2)图22所示的实例文档
<实验结果>
使用各种大小的XML实例来测量本发明(概要-感知Deltarser)的效果。图23和24显示了实验结果。在图23和24中,XML实例的文件名(xxx.xml)指示文档大小(字节)。测量的处理时间以毫秒表示。
如可从图23和24中看到的,所有文档的处理时间都提高了13-30%。虽然仅对实验中的xsd序列的优化执行了测量,但是从实验中显而易见的是,通过使用概要信息来减少状态转变数,在其他优化情况中可以提高处理速度。因为该实验还显示可通过合并状态转变来提高处理速度,所以使用具有关于实例文档的统计信息的优化的方法具有提高处理速度的有利效果。
[第二实施例]
本发明可应用于要进行XML分析的为其提供了关于实例文档的统计信息和概要信息的任何应用程序。例如,本发明可用于特定的XML标记语言处理系统或处理Web服务的中间件。
此处未显示使用统计信息的自动机的优化效果。然而,可获得与使用概要信息的方法的效果相等或比它更好的效果。这是因为通过在运行时期间在自动机中反映文档的模式,在概要信息中所反映的信息以及在概要信息中没有反映的信息都可以用于优化自动机。通过实例文档的统计处理,可获得未包括在概要信息中的用于合并状态的大量信息。然而,应当指出,使用统计信息的方法需要多次尝试以获得适当的统计信息,这需要额外的时间量。
虽然根据实施例和实例描述了本发明,但是本发明的技术范围不限于根据所述实施例描述的范围。可对所述实施例做出各种修改和改进。从权利要求显而易见的是,对其做出修改和改进的实施例也包括在本发明的技术范围内。
描述为本发明实施例的结构化文档处理装置和结构化文档处理方法可以由使计算机或计算机上的系统执行所述装置和方法的功能的程序来实现。其上存储所述程序的计算机可读记录介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或是信号承载介质。计算机可读记录介质的例子包括半导体或固态存储设备及磁带。可移动计算机可读记录介质的例子包括半导体或固态存储设备、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘以及光盘。当前可用的光盘的例子包括光盘只读存储器(CD-ROM)、光盘读/写(CD-R/W)以及DVD。

Claims (12)

1.一种执行电子数据形式的结构化文档的句法解析的结构化文档处理装置,所述装置包括:
自动机生成单元,其生成多个状态的状态转变序列,所述多个状态允许将结构化文档分段成多个节点;
实例文档分析单元,其通过使用与是所述结构化文档的实体的实例文档有关的统计信息,将状态转变合并到由所述自动机生成单元生成的所述状态转变序列中,并且通过使用所述统计信息来统计地获得所述状态转变中重复元素出现次数的模式;
概要信息分析单元,其通过使用定义了与所述结构化文档有关的信息的结构和格式的概要信息,将所述状态转变合并到由所述自动机生成单元生成的所述状态转变序列中;以及
自动机优化单元,其相互地优化由所述实例文档分析单元和所述概要信息分析单元所合并的自动机。
2.根据权利要求1的结构化文档处理装置,其中所述结构化文档是XML文档。
3.根据权利要求1的结构化文档处理装置,其中所述允许分段的多个状态由SAX事件来定义。
4.根据权利要求1的结构化文档处理装置,还包括连续状态转变计数单元,其为所述实例文档分析单元中所述状态转变合并内的每个状态转变指定ID,以ID列表的形式存储连续匹配状态转变,以及通过使用所述ID列表来对所述连续匹配状态转变的出现计数。
5.根据权利要求1的结构化文档处理装置,其中即使由所述实例文档分析单元检测的重复元素是嵌套的,所述自动机优化单元仍对所述重复元素进行优化。
6.根据权利要求1的结构化文档处理装置,其中所述实例文档分析单元通过使用所述统计信息来确定所述结构化文档中的元素间出现的任意数目空白字符的模式。
7.一种用于执行电子数据形式的结构化文档的句法解析的结构化文档处理方法,所述方法包括:
生成允许将结构化文档分段成多个节点的多个状态的状态转变序列;
通过使用与是所述结构化文档的实体的实例文档有关的统计信息,将状态转变合并到在所述自动机生成处生成的所述状态转变序列中,并且通过使用所述统计信息来统计地获得所述状态转变中重复元素出现次数的模式;
通过使用定义了与所述结构化文档有关的信息的结构和格式的概要信息,将所述状态转变合并到在所述自动机生成处生成的所述状态转变序列中;以及
相互地优化在所述实例文档分析和所述概要信息分析处合并的自动机。
8.根据权利要求7的结构化文档处理方法,其中所述结构化文档是XML文档。
9.根据权利要求7的结构化文档处理方法,其中所述允许分段的多个状态由SAX事件来定义。
10.根据权利要求7的结构化文档处理方法,还包括:在所述统计地获得处为所述多个状态转变的合并内的每个状态转变指定ID,以ID列表的形式存储连续匹配状态转变,以及通过使用所述ID列表来对所述连续匹配状态转变的出现计数。
11.根据权利要求7的结构化文档处理方法,其中即使重复元素是嵌套的,所述自动机优化仍对所述重复元素进行优化。
12.根据权利要求7的结构化文档处理方法,其中通过在所述统计地获得处使用所述统计信息来确定所述结构化文档中的元素间出现的任意数目空白字符的模式。
CNB2006101647029A 2005-12-27 2006-11-14 结构化文档处理装置和方法 Active CN100495401C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP374990/2005 2005-12-27
JP2005374990A JP4236055B2 (ja) 2005-12-27 2005-12-27 構造化文書処理装置、方法、プログラム

Publications (2)

Publication Number Publication Date
CN1991837A true CN1991837A (zh) 2007-07-04
CN100495401C CN100495401C (zh) 2009-06-03

Family

ID=38214094

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101647029A Active CN100495401C (zh) 2005-12-27 2006-11-14 结构化文档处理装置和方法

Country Status (3)

Country Link
US (2) US7707491B2 (zh)
JP (1) JP4236055B2 (zh)
CN (1) CN100495401C (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102184239A (zh) * 2011-05-16 2011-09-14 复旦大学 Xml无线数据广播模式下基于访问概率的文档分片方法
CN102306191A (zh) * 2011-08-31 2012-01-04 飞天诚信科技股份有限公司 基于嵌入式平台的xml报文解析方法
CN102708155A (zh) * 2012-04-20 2012-10-03 西安电子科技大学 基于回溯自动机语法分析的jsax解析器和解析方法
CN103226558A (zh) * 2012-01-27 2013-07-31 国际商业机器公司 基于文档模式的知识的文档合并的方法和系统

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7920180B2 (en) * 2004-04-06 2011-04-05 Hewlett-Packard Development Company, L.P. Imaging device with burst zoom mode
FR2914759B1 (fr) * 2007-04-03 2009-06-05 Canon Kk Procede et dispositif de codage d'un document hierarchise
US8140582B2 (en) * 2008-10-07 2012-03-20 International Business Machines Corporation Service oriented architecture aggregation
FR2939535B1 (fr) * 2008-12-10 2013-08-16 Canon Kk Procede et systeme de traitement pour la configuration d'un processseur exi
IL198017A (en) * 2009-04-05 2015-02-26 Rafael Advanced Defense Sys Means and method of protecting a fighter cell in a wheeled vehicle against explosives
CN102207936B (zh) * 2010-03-30 2013-10-23 国际商业机器公司 用于提示电子文档内容变更的方法和系统
JP5618797B2 (ja) * 2010-12-02 2014-11-05 三菱電機株式会社 データ処理装置及びプログラム
CN103885972B (zh) * 2012-12-20 2017-02-08 北大方正集团有限公司 一种文档内容结构化的方法及装置
US10114804B2 (en) * 2013-01-18 2018-10-30 International Business Machines Corporation Representation of an element in a page via an identifier
CN104391836B (zh) * 2014-11-07 2017-07-21 百度在线网络技术(北京)有限公司 处理用于句法分析的特征模板的方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4241402A (en) * 1978-10-12 1980-12-23 Operating Systems, Inc. Finite state automaton with multiple state types
JP3566457B2 (ja) 1996-05-31 2004-09-15 株式会社日立製作所 構造化文書の版管理方法および装置
US6470362B1 (en) * 1997-05-16 2002-10-22 Compaq Computer Corporation Extracting ordered list of words from documents comprising text and code fragments, without interpreting the code fragments
JP2003084987A (ja) * 2001-09-11 2003-03-20 Internatl Business Mach Corp <Ibm> Xml文書の妥当性を検証するためのオートマトンの生成方法、xml文書の妥当性検証方法、xml文書の妥当性を検証するためのオートマトンの生成システム、xml文書の妥当性検証システムおよびプログラム
JP3888621B2 (ja) * 2002-02-21 2007-03-07 インターナショナル・ビジネス・マシーンズ・コーポレーション 文書処理システム、文書処理方法及びプログラム
JP3907187B2 (ja) 2002-07-31 2007-04-18 インターナショナル・ビジネス・マシーンズ・コーポレーション Saxパーサー、saxパーサー用方法、及びプログラム
US7493603B2 (en) * 2002-10-15 2009-02-17 International Business Machines Corporation Annotated automaton encoding of XML schema for high performance schema validation
JP2004314713A (ja) 2003-04-14 2004-11-11 Suzuki Motor Corp シフトレバーブーツの取付構造
JP4716709B2 (ja) * 2004-06-10 2011-07-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 構造化文書処理装置、構造化文書処理方法、及びプログラム
US7630997B2 (en) * 2005-03-23 2009-12-08 Microsoft Corporation Systems and methods for efficiently compressing and decompressing markup language
US7596745B2 (en) * 2005-11-14 2009-09-29 Sun Microsystems, Inc. Programmable hardware finite state machine for facilitating tokenization of an XML document
US7665015B2 (en) * 2005-11-14 2010-02-16 Sun Microsystems, Inc. Hardware unit for parsing an XML document
EP2219117A1 (en) * 2009-02-13 2010-08-18 Siemens Aktiengesellschaft A processing module, a device, and a method for processing of XML data

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102184239A (zh) * 2011-05-16 2011-09-14 复旦大学 Xml无线数据广播模式下基于访问概率的文档分片方法
CN102306191A (zh) * 2011-08-31 2012-01-04 飞天诚信科技股份有限公司 基于嵌入式平台的xml报文解析方法
CN103226558A (zh) * 2012-01-27 2013-07-31 国际商业机器公司 基于文档模式的知识的文档合并的方法和系统
CN102708155A (zh) * 2012-04-20 2012-10-03 西安电子科技大学 基于回溯自动机语法分析的jsax解析器和解析方法
CN102708155B (zh) * 2012-04-20 2015-02-18 西安电子科技大学 基于回溯自动机语法分析的jsax解析器和解析方法

Also Published As

Publication number Publication date
US8181105B2 (en) 2012-05-15
JP4236055B2 (ja) 2009-03-11
US20070150493A1 (en) 2007-06-28
CN100495401C (zh) 2009-06-03
US7707491B2 (en) 2010-04-27
US20080288858A1 (en) 2008-11-20
JP2007179170A (ja) 2007-07-12

Similar Documents

Publication Publication Date Title
CN1991837A (zh) 结构化文档处理装置和方法
CN1577328A (zh) 基于视觉的文档分割
CN1591406A (zh) 集成多应用数据处理系统
CN1647076A (zh) 查询关系数据库的方法和设备
CN1609859A (zh) 搜索结果聚类的方法
CN1487444A (zh) 文本语句比较装置
CN1584884A (zh) 检索结构化文档的数据的设备和方法
CN1846207A (zh) 类型路径索引
CN1786947A (zh) 基于网页页面布局提取网页核心内容的系统、方法和程序
CN1666196A (zh) 存储和访问数据,以及提高数据库查询语言语句性能的方法和机制
CN1650327A (zh) 可训练可扩充的自动数据-知识转换器
JP4207438B2 (ja) Xml文書格納/検索装置及びそれに用いるxml文書格納/検索方法並びにそのプログラム
US20080235193A1 (en) Apparatus, method, and computer program product for processing query
CN1723463A (zh) 用于将可扩展标记语言映射到n维数据结构的方法和系统
Bača et al. Structural XML query processing
CN1941743A (zh) Xml流数据的复杂小枝模式查询匹配方法
CN1932819A (zh) 一种互联网音频文件的聚类方法、搜索方法及系统
CN1228728C (zh) 在web应用中产生定制商业报表的系统和方法
CN1690969A (zh) 用于批处理来自多种资源的半结构化结果流的系统和方法
CN111078705A (zh) 基于Spark平台建立数据索引方法及数据查询方法
US20110270862A1 (en) Information processing apparatus and information processing method
CN1717681A (zh) 用于将连锁式联接表格转换为树形结构的方法以及程序
CN1949225A (zh) Xml文件预处理方法、装置、文件结构、读取方法和装置
JP2006301959A (ja) 文書処理装置、文書処理方法、文書処理プログラムおよびコンピュータに読み取り可能な記録媒体
US20080208843A1 (en) Document searching system and document searching method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160701

Address after: American California

Patentee after: Present service company

Address before: American New York

Patentee before: International Business Machines Corp.