文本解析系统及方法

文档序号:6472246阅读:228来源:国知局

专利名称::文本解析系统及方法
技术领域
:本发明涉及一种文本处理系统及方法,特别是关于一种文本解析系统及方法。
背景技术
:信息系统经常通过文本传递信息,通过文本传递信息具有平台无关、移植性好、兼容性强的特点,并且可读性也一般符合人的视觉理解方式。文本解析的目的是对文本进行分解,提取出其中的数据,以便于进行二次加工,或者进行诸如检索、文本挖掘等深层次的加工和服务。如图l所示的电子报表,该电子报表包含多个表单(图1中只列出表单1与表单2),每个表单是一个独立部分,由标题、出处、制表日期、厂商编号、厂商名称及数据表构成,数据表包含多条记录,每条记录包括收货单号、收货日期、料号、采购单号、收货量、收货单价,对诸如此类的电子报表进行分析统计,必须把报表中的数据(如图l中的标题、出处、制表日期、厂商编号、厂商名称以及每条记录的收货单号、收货日期、料号、采购单号、收货量、收货单价)提取出来并按其意义重新组织成信息系统所能识别的数据结构。现有的文本分解过程难以规范化,必须由程序员定制化实现,容易出现错误,尤其当文本格式复杂、数据量大的时候难以对文本进行解析。
发明内容鉴于以上内容,有必要提出一种通用的文本解析系统及方法。一种文本解析系统,该系统包括载入模块,用于载入文本描述定义文件及所需解析的文本,所述的文本描述定义文件定义文本的各个区块及各个数据的匹配规则,各个区块形成多层的树状结构,顶层是根区块,底层是最小单位区块;解析模块,用于从根区块开始,根据各个区块的匹配规则匹配文本的各个区块,若匹配出的区块包含子区块,则根据子区块的匹配规则在所述匹配出的区块中匹配所述子区块,直到匹配出所有区块,并且根据相应的数据的匹配规则从各个最小单位区块中提取出各个数据;及输出模块,用于将所提取的数据以用户所需的文件格式输出。一种文本解析方法,该方法包括步骤建立文本描述定义文件,所述的文本描述定义文件定义各个区块及各个数据的匹配规则,各个区块形成多层的树状结构,顶层是根区块,底层是最小单位区块;载入文本描述定义文件及所需解析的文本;从根区块开始,根据各个区块的匹配规则匹配文本的各个区块,若匹配出的区块包含子区块,则根据子区块的匹配规则4在所述匹配出的区块中匹配所述子区块,直到匹配出所有区块,并且根据相应的数据的匹配规则从各个最小单位区块中提取出各个数据;及将所提取的数据以用户所需的文件格式输出相较于现有技术,本发明结合可扩展标记语言与正则表达式对文本的结构及匹配规则进行描述,根据所描述的文本结构及匹配规则分解文本,从文本中提取数据,从而实现对各种类型文本的解析。图l为电子报表的示意图。图2为本发明文本解析系统较佳实施例的功能模块图。图3为本发明文本解析方法较佳实施例的流程图。具体实施例方式参阅图2所示,是本发明文本解析系统较佳实施例的功能模块图。该系统包括载入模块11、解析模块12及输出模块13。所述文本解析系统运行在计算机上,该系统根据文本描述定义文件对文本进行分解,从文本中提取出数据,并输出所提取的数据。所述数据是需要从文本中提取出来的具体信息,以图l中的电子报表为例,需要把每个表单的标题(如***有限公司进货单)、出处(如H5S00001)、制表日期(如2007060117:32:03)、厂商编号(如9876543210)、厂商名称(如***电子公司)以及每条记录的收货单号(如HaA-012345)、收货日期(如20070512)、料号(如987654J00-001-BB)、采购单号(如0rd-111111)、收货量(如2,400.00)、收货单价(如12.45000)等数据提取出来。文本描述定义文件描述文本的结构及匹配规则。在本实施例中,所述文本描述定义文件是——禾中可扩展标记语言(ExtensibleMarkupLanguage,XML)文件,艮卩氺.xml。所述文本描述定义文件定义多层的树状结构的区块来描述文本的结构。顶层的区块是根区块,根区块包含若干区块,每一区块又包含若干区块,从而最终形成一种多层的树状结构。对于任一非根区块,只有一个区块直接包含该非根区块(称为子区块)。若一个区块包含多个同样结构的子区块,定义该子区块是列表类型。底层的区块不包含子区块,底层的区块称为最小单位区块,最小单位区块仅包含数据。例如,对于图l中电子报表,用root表示根区块,对应于整个电子报表,用table表示根区块的子区块,table定义为列表类型,对应于电子报表中的各个表单,table包括子区块title、from、date、supplierld、supplierName、form,分另U表示每个表单的标题、出处、制表日期、厂商编号、厂商名称、数据表;form包括item子区块,item定义为列表类型,对应于数据表中的各条记录;item包括子区块consignld、5consignDate、productld、Pold、inAmount、price,6、另ll表示每条i己录的收货单号、收货日期、料号、采购单号、收货量、收货单价。其中title、from、date、supplierld、supplierName、consignld、consignDate、productld、Pold、inAmount、price是最小单位区块,该等区块包含数据。例如图l中的表单l,title为"***有限公司进货单"、from为"H5S00001"、date为"2007060117:32:03"、supplierld为"9876543210"、s卿lierName为"彬电子公司",表单l中的第一条记录的consignld为"HaA-012345"、consigiiDate为"20070512"、productld为"987654,-001-BB"、Pold为"Ord-llllll"、inAmount为"2,400.00"、price为"12.45000"。对文本(如图l所示电子报表)进行解析的目的就是将文本中的数据提取出来。文本描述定义文件采用正则表达式(regularexpression,regexes)来描述各个区块及各个数据的匹配规则,根据该匹配规则能够从文本,例如图l所示的电子报表中将各个区块分解出来,并且能够从最小单位区块中将数据提取出来。载入模块ll用于载入文本描述定义文件及所需解析的文本。在本实施例中按行将文本载入到数组中,数组的一个元素对应文本的一行。假设图1中的电子报表共50行,将该电子报表载入到数组string,该数组的元素是string[O]、string[l]、string[2]、......、string[48]、string[49],分别对应电子报表的第l行、第2行、第3行、……、第49行、第50行。解析模块12用于根据文本描述定义文件中各个区块的匹配规则匹配文本的各个区块,并从最小单位区块中提取数据。在匹配文本的各个区块时,若区块是列表类型,匹配出区块列表,否则匹配出第一个符合匹配规则的区块。解析模块12匹配文本各个区块的具体实现方法如下从根区块开始匹配,若匹配出的区块包含子区块,则根据文本描述定义文件在该区块中匹配其各个子区块,直到匹配出所有区块,并且从最小单位区块中提取数据。文本描述定义文件定义了各个区块的匹配规则,根据一个区块的匹配规则在文本中査找符合该个匹配规则的子文本(即文本中的一部分),即得到文本的该个区块。例如根据根区块的匹配规则在文本中査找符合根区块匹配规则的子文本,即得到文本的根区块。需要说明的是,在本实施例中按行将文本载入到数组中,因而是在数组中进行匹配,匹配出的区块以数组元素为单位,例如匹配出根区块是string[l]string[49],即文本的第2行至第50行。以图l中的电子报表为例,对该电子报表进行匹配,首先得到根区块root为string[l]string[49];在string[1]string[49]中匹配根区块的子区块,得到子区块列表table(表示表单l)table[l](表示表单2),table[O]、table[1]分别是string[1]string[24]、string[26]string[49];继续匹配table、table[1]的子区块,例如从string[l]string[24]中得至Utable[O]的子区块title、from、date、s卿lierld、supplierName、form分另i提string[1]、string[2]、string[3]、string[5]、string[5]、string[9]string[24],并且得到title为"***有限公司进货单"、from为"H5S00001"、date为"2007060117:32:03"、supplierld为"9876543210"、supplierName为"***电子公司";form区块包含item子区块,item是列表类型,则继续在区块form(例如string[9]string[24])中匹配item子区块歹接item[O]、item[l]、item[2]、item[3]、item[4]、item[5],例如分另ll得至Ustring[10]、string[12]、string[14]、string[16]、string[18]、string[20],继续匹配item的子区块,如在string[10]中匹配item[O]的子区块,得至Uconsignld为"HaA-012345"、consignDate为"20070512"、productld为"987654,-001-BB"、Pold为"Ord-llllll"、inAmount为"2,概00"、price为"12.45000"。输出模块13用于将所提取的数据根据文本描述定义文件以用户所需的文件格式输出。在本实施例中用XML文件输出所提取的数据,例如对图l中的电子报表进行解析,提取的数据包括每个表单的title、from、date、s卿lierld、s卿lierName以及表数据中每条记录的consignld、consignDate、productld、Pold、inAmount、price,将提耳又的类ji;据按照文本的结构以output.xml文件输出。在除本实施例以外的实施例中,输出模块13还可以将提取的数据按字段存储到数据库中,例如存储到Excel表中。参阅图3所示,是本发明文本解析方法较佳实施例的流程图。步骤S301,建立文本描述定义文件,该文本描述定义文件描述文本的结构及匹配规则。在本实施例中,所述文本描述定义文件是XML文件,g一.xml。所述文本描述定义文件定义多层的树状结构的区块来描述文本的结构。顶层的区块是根区块,根区块包含若干区块,每一区块又包含若干区块,从而最终形成一种多层的树状结构。对于任一非根区块,只有一个区块直接包含该非根区块(称为子区块)。若一个区块包含多个同样结构的子区块,定义该子区块是列表类型。底层的区块不包含子区块,底层的区块称为最小单位区块,最小单位区块仅包含数据。例如,对于图l中电子报表,用root表示根区块,对应于整个电子报表,用table表示根区块的子区块,table定义为列表类型,对应于电子报表中的各个表单,table包括子区块title、from、date、supplierld、supplierName、form,分别表示每个表单的标题、出处、制表日期、厂商编号、厂商名称、数据表;form包括item子区块,item定义为列表类型,对应于数据表中的各条记录;item包J舌子区块consignld、consignDate、productld、Pold、inAmount、price,分另U表示每条i己录的收货单号、收货日期、料号、采购单号、收货量、收货单价。其中title、from、date、supplierld、supplierName、consignld、consignDate、productld、Pold、inAmount、price是最小单位区块,该等区块包含数据。例如图l中的表单l,title为"***有限公司进货单"、from为"H5S00001"、date为"2007060117:32:03"、supplierld为"9876543210"、supplierName为"***电子公司",表单l中的第一条记录的consignld为"HaA-012345"、consignDate为"20070512"、productld为"987654,-001-BB"、Pold为"0rd-111111"、inAmount为"2,概00"、price为"12.45000"。对文本(如图l所示电子报表)进行解析的目的就是将文本中的数据提取出来。文本描述定义文件采用正则表达式来描述各个区块及各个数据的匹配规则,根据该匹配规则能够从文本,例如图l所示的电子报表中将各个区块分解出来,并且能够从最小单位区块中将数据提取出来。步骤S302,载入模块ll载入文本描述定义文件,如本实施例中载入txml文件。步骤S303,载入模块ll载入文本。在本实施例中按行将文本载入到数组中,数组的一个元素对应文本的一行。假设图1中的电子报表共50行,将该电子报表载入到数组string,该数组的元素是string[O]、string[l]、string[2]、......、string[48]、string[49],分另U对应电子报表的第l行、第2行、第3行、……、第49行、第50行。步骤S304,解析模块12根据文本描述定义文件中各个区块的匹配规则匹配文本的各个区块,并从最小单位区块中提取数据。在匹配文本的各个区块时,若区块是列表类型,匹配出区块列表,否则匹配出第一个符合匹配规则的区块。该步骤具体实现方法如下从根区块开始匹配,若匹配出的区块包含子区块,则根据文本描述定义文件在该区块中匹配其各个子区块,直到匹配出所有区块,并且从最小单位区块中提取数据。文本描述定义文件定义了各个区块的匹配规则,根据一个区块的匹配规则在文本中査找符合该个匹配规则的子文本(即文本中的一部分),即得到文本的该个区块。例如根据根区块的匹配规则在文本中査找符合根区块匹配规则的子文本,即得到文本的根区块。需要说明的是,在本实施例中按行将文本载入到数组中,因而是在数组中进行匹配,匹配出的区块以数组元素为单位,例如匹配出根区块是string[l]string[49],即文本的第2行至第50行。以图l中的电子报表为例,对该电子报表进行匹配,首先得到根区块root为string[l]string[49];在string[l]string[49]中匹配根区块的子区块,得到子区块列表table[O](表示表单l)table[1](表示表单2),table[O]、table[l]分别是string[l]string[24]、string[26]string[49];继续匹配table、table[1]的子区块,例如从string[1]string[24]中得到table[O]的子区块title、from、date、supplierld、supplierName、form分另U是string[1]、string[2]、string[3]、string[5]、string[5]、string[9]string[24],并且f导至Utitle为"*<有限公司进货单"、from为"H5S00001"、date为"2007060117:32:03"、supplierld为"9876543210"、s卿lierName为"彬电子公司";form区块包含item子区块,item是歹接类型,则继续在区块form(例如string[9]string[24])中匹配item子区块列表item[O]、item[l]、item[2]、item[3]、item[4]、item[5],例如分别得到string[10]、string[12]、string[14]、string[16]、string[18]、string[20],继续匹配item的子区块,如在string[10]中匹配item[O]的子区块,得至Uconsignld为"HaA-012345"、consignDate为"20070512"、productld为"987654J00-001-BB"、Pold为"Ord-111111"、inAmount为"2,概00"、price为"12.45000"步骤S305,输出模块13将所提取的数据根据文本描述定义文件以一定格式输出。在本实施例中用XML文件输出所提取的数据,例如对图l中的电子报表进行解析,提取的数据包括每个表单的title、from、date、s卿lierld、s卿lierName以及表数据中每条记录的consignld、consignDate、productld、Pold、inAmount、price,将提耳又的类ji;据按照文本的结构以output.xml文件输出。在除本实施例以外的实施例中,输出模块13还可以将提取的数据按字段存储到数据库中,例如存储到Excel表中。依照上述方法,对于各种类型的文本,即使是格式复杂、数据量大的文本,能够用文本描述定义文件描述其结构,并且能够根据文本描述定义文件将文本中的数据提取出来。9权利要求权利要求1一种文本解析系统,其特征在于,该系统包括载入模块,用于载入文本描述定义文件及所需解析的文本,所述的文本描述定义文件定义文本的各个区块及各个数据的匹配规则,各个区块形成多层的树状结构,顶层是根区块,底层是最小单位区块;解析模块,用于从根区块开始,根据各个区块的匹配规则匹配文本的各个区块,若匹配出的区块包含子区块,则根据子区块的匹配规则在所述匹配出的区块中匹配所述子区块,直到匹配出所有区块,并且根据相应的数据的匹配规则从各个最小单位区块中提取出各个数据;及输出模块,用于将所提取的数据以用户所需的文件格式输出。2如权利要求l所述的文本解析系统,其特征在于,所述的文本描述定义文件是一种可扩展标记语言文件,该文本描述定义文件采用正则表达式描述各个区块及各个数据的匹配规则。3如权利要求l所述的文本解析系统,其特征在于,所述的载入模块将所需解析的文本载入到数组中,所述的解析模块在所述数组中匹配文本的各个区块。4如权利要求l所述的文本解析系统,其特征在于,所述的输出模块将所提取的数据以用户所需的文件格式输出是将所提取的数据根据文本描述定义文件组织为可扩展标记语言文件输出。5一种文本解析方法,其特征在于,该方法包括步骤建立文本描述定义文件,所述的文本描述定义文件定义各个区块及各个数据的匹配规则,各个区块形成多层的树状结构,顶层是根区块,底层是最小单位区块;载入文本描述定义文件及所需解析的文本;从根区块开始,根据各个区块的匹配规则匹配文本的各个区块,若匹配出的区块包含子区块,则根据子区块的匹配规则在所述匹配出的区块中匹配所述子区块,直到匹配出所有区块,并且根据相应的数据的匹配规则从各个最小单位区块中提取出各个数据;及将所提取的数据以用户所需的文件格式输出。6.如权利要求5所述的文本解析方法,其特征在于,所述的文本描述定义文件是一种可扩展标记语言文件,该文本描述定义文件采用正则表达式描述各个区块及各个数据的匹配规则。7.如权利要求5所述的文本解析方法,其特征在于,所述的载入文本描述定义文件及文本的步骤中是将文本载入到数组中,所述根据各个区块的匹配规则匹配文本的各个区块是在所述数组中匹配文本的各个区块。8.如权利要求5所述的文本解析方法,其特征在于,所述将所提取的数据以用户所需的文件格式输出是将所提取的数据根据文本描述定义文件组织为可扩展标记语言文件输出。全文摘要一种文本解析方法,该方法包括步骤建立文本描述定义文件;载入文本描述定义文件及文本;根据文本描述定义文件分解文本,从文本中提取数据;及输出所提取的数据。本发明还提供一种文本解析系统。本发明能够根据文本描述定义文件从文本中提取数据,从而实现对各种类型文本的解析。文档编号G06F17/21GK101488123SQ20081030012公开日2009年7月22日申请日期2008年1月16日优先权日2008年1月16日发明者卢秋桦,叶建发,张晓平,李忠一,樊晓迪申请人:鸿富锦精密工业(深圳)有限公司;鸿海精密工业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1