一种文档解析方法与装置
技术领域
本发明涉及一种文档解析方法与装置。
背景技术
现有的商业活动中常会出现文档解析的需求,例如,招聘网站在录入应聘者上传的简历时,由于简历内容格式无统一规律,传统方式需要人工把简历内容逐项录入,严重影响工作效率。而现有文档解析技术的精确度又不高,一旦文档内容格式存在微小差异就可能导致整个解析结果都有问题。因此,有必要提出一种解析精度和解析效率兼备的文档解析方法。
发明内容
本发明目的在于提出一种文档解析方法与装置,以解决上述现有技术存在的文档解析精度低的技术问题。
为此,本发明提出一种文档解析方法,包括以下步骤:
S1、从原始文档中提取文本内容;
S2、根据预设的分段识别符对所述文本内容进行分段,将分段后的所述文本内容放入原始内容堆栈;
S3、依次取出所述原始内容堆栈的栈点内容,作为当前栈点内容;若所述当前栈点内容满足某个匹配项对应关键词的匹配条件,称当前栈点为当前匹配栈点,当前栈点作为所述某个匹配项的匹配起点,所述当前栈点内容除去所述某个匹配项对应关键词后的内容以及往下遍历的栈点内容作为所述某个匹配项的匹配内容,直到遇到下一匹配栈点时,所述下一匹配栈点的上一栈点作为所述某个匹配项的匹配终点。
优选地,步骤S2中所述分段识别符为根据所述文本内容中特定的分隔符转换得到;其中,所述分隔符包括回车符、空格、html标签中的一种或几种。
优选地,步骤S3中对所述原始内容堆栈的栈点内容进行如下处理,包括以下步骤:
S31、从当前栈底开始,依次取出所述原始内容堆栈的栈点内容,作为当前栈点内容;
S32、判断所述当前栈点内容是否满足关键词的匹配条件,若满足,执行步骤S33,且执行步骤S33后返回步骤S31,继续提取下一栈点内容;若不满足,执行步骤S34,且执行步骤S34后返回步骤S31,继续提取下一栈点内容;
S33、判断临时堆栈是否为空,若是,则在所述临时堆栈栈顶新建第一临时栈点,将所述当前栈点内容移入所述第一临时栈点;若否,则先在结果堆栈栈顶新建第一结果栈点,将临时堆栈的栈顶内容移出并移入所述第一结果栈点,再在临时堆栈栈顶新建第二临时栈点,将所述当前栈点内容移入所述第二临时栈点;
S34、判断临时堆栈是否为空,若否,则将所述当前栈点内容移入临时堆栈的栈顶栈点;
重复上述步骤S31~S34,直至原始内容堆栈中所有栈点内容处理完成。
优选地,步骤S3中,通过将所述当前栈点内容与预设的关键词库进行比较来判断所述当前栈点内容是否满足关键词的匹配条件;所述关键词库包括与所述原始文档匹配项相关的关键词。
优选地,所述关键词库中每一类关键词具有对应的关键词类型,所述关键词类型包括单栈匹配类、二栈匹配类、多栈匹配类、内容匹配类和排除匹配类;
相应地,步骤S3中对所述原始内容堆栈的栈点内容进行的处理,包括以下步骤:
S31、从当前栈底开始,依次取出所述原始内容堆栈的栈点内容,作为当前栈点内容;
S32、将所述当前栈点内容与关键词库进行比较,判断所述当前栈点内容是否满足关键词的匹配条件,若满足,则返回所述当前栈点内容以及所述当前栈点内容包括的关键词类型,执行步骤S33,且执行步骤S33后返回步骤S31,继续提取下一栈点内容;若不满足,返回所述当前栈点内容,执行步骤S34,且执行步骤S34后返回步骤S31,继续提取下一栈点内容;
S33、包括以下步骤:
S331、如果返回的关键词类型包括排除匹配类,则返回步骤S31,继续提取下一栈点内容;
S332、如果返回的关键词类型包括内容匹配类,则在结果堆栈栈顶新建第二结果栈点,将所述当前栈点内容和所述内容匹配类关键词对应的匹配项一起移入所述第二结果栈点;
S333、判断临时堆栈是否为空,若为空,执行步骤S334,若不为空,执行步骤S335;
S334、根据返回的关键词类型进行如下处理:
1)如果返回的关键词类型包含单栈匹配类,则在结果堆栈栈顶新建第三结果栈点,将所述当前栈点内容和所述单栈匹配类关键词对应的匹配项一起移入所述第三结果栈点;
2)如果返回的关键词类型包含二栈匹配类或多栈匹配类,则在临时堆栈栈顶新建第三临时栈点,将所述当前栈点内容移入所述第三临时栈点;
S335、如果临时堆栈栈顶内容包括的关键词类型是多栈匹配类且返回的关键词类型包含单栈匹配类、二栈匹配类或内容匹配类中的一种或几种,执行步骤S335-1;否则,执行步骤S335-2;
S335-1、首先,将所述当前栈点内容移入临时堆栈的栈顶栈点;然后,
如果返回的关键词类型包含单栈匹配类,则在结果堆栈栈顶新建第四结果栈点,将所述当前栈点内容和所述单栈匹配类关键词对应的匹配项一起移入所述第四结果栈点;
如果返回的关键词类型包含二栈匹配类或内容匹配类中的一种或两种,则在临时堆栈栈顶新建第四临时栈点,将所述当前栈点内容移入所述第四临时栈点;
S335-2、在结果堆栈栈顶新建第五结果栈点,临时堆栈的栈顶内容移出后和临时堆栈的栈顶内容关键词对应的匹配项一起移入所述第五结果栈点,在临时堆栈栈顶新建第五临时栈点,将所述当前栈点内容移入所述第五临时栈点;
S34、判断临时堆栈是否为空,若否,根据临时堆栈栈顶内容包括的关键词类型进行处理,包括以下情形:
1)若临时堆栈栈顶内容包括的关键词类型是单栈匹配类或者包括的关键词类型是二栈匹配类且临时堆栈栈顶的元素个数不小于2时,判断临时堆栈栈顶下一个栈点内容包括的关键词类型是否为多栈匹配类,
若是,则将所述当前栈点内容移入临时堆栈栈顶的下一个栈点;
2)若临时堆栈栈顶内容包括的关键词类型是二栈匹配类且临时堆栈栈顶的元素个数小于2,则将所述当前栈点内容移入临时堆栈的栈顶栈点;
3)若临时堆栈栈顶内容包括的关键词类型是多栈匹配类,则将所述当前栈点内容移入临时堆栈的栈顶栈点;
循环上述步骤S31~S34,直至原始内容堆栈中所有栈点内容处理完成。
优选地,在步骤S3之后还包括步骤S4,对所述结果堆栈的栈点内容进行处理得到解析结果,包括以下步骤:从当前栈底开始,依次取出所述结果堆栈的栈点内容,作为当前结果栈点内容,对所述当前结果栈点内容进行如下处理:
如果所述当前结果栈点内容包括的关键词类型是单栈匹配类或二栈匹配类,则将所述当前结果栈点内容覆盖对应匹配项已获取到的匹配内容;
如果所述当前结果栈点内容包括的关键词类型是多栈匹配类,则将所述当前结果栈点内容合并至对应匹配项已获取到的匹配内容。
优选地,在判断所述当前栈点内容是否包含关键词之前,还包括判断所述当前栈点内容是否为姓名,包含以下步骤:
Sa、判断所述当前栈点内容的字符个数是否不小于2且不大于4,若是,执行步骤Sb;
Sb、若所述当前栈点内容的第1个字符或第1~2个字符存在于预设的姓氏库中且不存在于预设的排除库中,则判断所述当前栈点内容为姓名。
优选地,在步骤S1和步骤S2之间还包括步骤:对所述文本内容进行整理,包括以下方式中的一种或几种:去除文本内容中无关信息内容;恢复文本内容中被转换过的字符;将文本内容中满足关键词匹配条件的文字中的分隔符去掉。
优选地,所述原始文档为简历文档。
本发明还提出一种文档解析装置,包括内容提取模块、内容入栈模块和内容解析模块;其中,
所述内容提取模块,用于从原始文档中提取文本内容;
所述内容入栈模块,用于根据分段识别符对所述文本内容进行分段,将分段后的所述文本内容放入原始内容堆栈;
所述内容解析模块,用于依次取出所述原始内容堆栈的栈点内容,作为当前栈点内容;若所述当前栈点内容满足某个匹配项对应关键词的匹配条件,称当前栈点为当前匹配栈点,当前栈点作为所述某个匹配项的匹配起点,所述当前栈点内容除去所述某个匹配项对应关键词后的内容以及往下遍历的栈点内容作为所述某个匹配项的匹配内容,直到遇到下一匹配栈点时,所述下一匹配栈点的上一栈点作为所述某个匹配项的匹配终点。
本发明提出的文档解析方法和装置从文本的阅读思维以及文字结构上寻找更加通用的内容结构规律,并且从适用于所有的文档解析为出发点,在一定程度上解决了文档解析的现有问题。以挖掘通用的内容规律(不仅仅只是简历内容规律,而是通用文档内容规律)为出发点,能适应多种格式文档的内容解析,并且减少人工维护工作量,保证较高的文档解析精确度。
附图说明
图1是本发明具体实施方式一的文档解析流程图。
具体实施方式
下面结合具体实施方式并对照附图对本发明作进一步详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
实施例一:
本发明提出一种文档解析方法,用于将包括若干匹配关系的原始文档进行解析,这里的匹配关系指原始文档中某部分内容为某个匹配项对应的匹配内容,参见图1是本发明具体实施方式一的文档解析流程图,包括以下步骤:
S1、从原始文档中提取文本内容;
本发明的实施例不对原始文档的格式进行限制,可以是doc、docx、wps、txt、mht、html、htm、pdf中任一种或是其他常见格式类型,也不对提取得到的文本内容格式进行不限制,可以是html格式内容、纯文本内容或base64位编码内容中任一种或是其他常见格式类型。
S2、根据预设的分段识别符对文本内容进行分段,将分段后的文本内容放入原始内容堆栈,原始内容堆栈的一个栈点存放一段内容;其中,分段识别符根据文本内容中特定的分隔符转换得到。并且,初始化临时堆栈和结果堆栈。
S3、依次取出原始内容堆栈的栈点内容,作为当前栈点内容;若当前栈点内容满足某个匹配项对应关键词的匹配条件,称当前栈点为当前匹配栈点,当前栈点作为某个匹配项的匹配起点,当前栈点内容除去该某个匹配项对应关键词后的内容以及往下遍历的栈点内容作为该某个匹配项的匹配内容,直到遇到下一匹配栈点时,下一匹配栈点的上一栈点作为该某个匹配项的匹配终点;即将当前栈点内容去除该某个匹配项对应关键词后的内容该与当前匹配栈点至下一匹配栈点之间的内容一起作为某个匹配项对应的匹配内容。其中,当前匹配栈点的下一匹配栈点指的是当前栈点之后第一个满足另一个匹配项对应关键词匹配条件的栈点内容。
具体地,包括以下步骤:
S31、从当前栈底开始,依次取出原始内容堆栈的栈点内容,作为当前栈点内容;
S32、判断当前栈点内容是否满足关键词的匹配条件,若满足,执行步骤S33,且执行步骤S33后返回步骤S31,继续提取下一栈点内容;若不满足,执行步骤S34,且执行步骤S34后返回步骤S31,继续提取下一栈点内容;
S33、判断临时堆栈是否为空,若是,则在临时堆栈栈顶新建第一临时栈点,将当前栈点内容移入该第一临时栈点的内容数组中;若否,则先在结果堆栈栈顶新建第一结果栈点,将临时堆栈的栈顶内容移出并移入该第一结果栈点的内容数组中,再在临时堆栈栈顶新建第二临时栈点,将当前栈点内容移入该第二临时栈点的内容数组中;
S34、判断临时堆栈是否为空,若是,则认为当前栈点内容为无效内容,将当前栈点内容移入回收堆栈;若否,则将当前栈点内容移入临时堆栈栈顶的内容数组中;
重复上述步骤S31~S34,直至原始内容堆栈中所有栈点内容处理完成。
本发明提出的文档解析方法与装置从文本的阅读思维以及文字结构上寻找到了更为通用的内容结构规律,以顺序遍历堆栈内容为原则,可以兼容多种无固定内容格式的文档,很精准地把内容匹配到对应的内容项里。且本文档解析方法是一个独立的程序,不需要其他额外程序的支撑,减少人工维护工作量。
实施例二:
本发明还提出一种简历文档解析方法,用于将包括若干匹配关系的原始文档进行解析,这里的匹配关系指原始文档中某部分内容为某匹配项对应的匹配内容,如简历文档中的“姓名”、“性别”、“居住地”等为匹配项,“张三”、“男”、“深圳”分别为上述匹配项对应的匹配内容,包括以下步骤:
S1、从原始文档中提取文本内容;
本发明的实施例不对原始文档的格式进行限制,可以是doc、docx、wps、txt、mht、html、htm、pdf中任一种或是其他常见格式类型,也不对提取得到的文本内容格式进行不限制,可以是html格式内容、纯文本内容或base64位编码内容中任一种或是其他常见格式类型。
S2、对文本内容进行整理,得到有效内容;包括以下方式中的一种或几种:
1)去除无关信息内容,如html的style样式代码、js脚本代码或其他编程语言代码等;
2)恢复被转换过的字符,如将“ ;”转换为空格符,“";”转换为“\”,“<;”转换为“<”,“>;”转换为“>”等;
3)将满足关键词匹配条件的文字中的分隔符去掉,如将“姓名”、“姓-名”中间的空格或者其他字符去掉转换为“姓名”。
S3、给文本内容添加分段识别符。在本发明的一个实施例中,将文本内容中的回车符、空格、html标签等转换为分段识别符。比如,文本内容中有一行内容为:“公司名称:深圳市XX公司职位:开发工程师”,由于空格前后的内容分别是一对完整的匹配关系,在本步骤中,将空格用自定义的分段标识符如“##”代替,因此,该行内容更改为:“公司名称:深圳市XX公司##职位:开发工程师”。由于本方案的目的在于分割匹配关系,通过上述内容分段方式,可以提高文档解析效率。
根据分段识别符对整理后的文本内容进行分段,将分段后的文本内容放入原始内容堆栈,原始内容堆栈的一个栈点存放一段内容。并且,初始化临时堆栈、结果堆栈和回收堆栈。
S4、通过将当前栈点内容与预设的关键词库进行比较,判断当前栈点内容是否满足关键词的匹配条件。
上述关键词库列举了与原始文档匹配项相关的关键词,如关键词包括:性别、男、大学、年龄、工作经历、工作经验、年工作经验等。一个匹配项可以对应多个关键词,如匹配项“工作经验”对应关键词工作经历、工作经验,而匹配项“名字”对应的关键词:名字、姓名,这样可以提高匹配效率。进一步地,关键词库中的关键词可以分为不同类型,每一类关键词具有对应的关键词类型,本发明的实施例中,定义如下关键词类型:单栈匹配类、二栈匹配类、多栈匹配类、内容匹配类和排除匹配类。
其中,若当前栈点内容包含某个单栈匹配类的关键词时,该当前栈点内容去除关键词后的内容即包含某个匹配项的匹配内容。单栈匹配类又可分为:纯文字单栈匹配类、正则单栈匹配类和数组型单栈匹配类等。当当前栈点内容包含纯文字单栈匹配类时,该当前栈点内容的至少部分内容与某个匹配项对应的关键词是一致的,如,定义匹配项“工作年限”对应的关键词“年工作经验”为纯文字单栈匹配类,若当前栈点内容包括“5年工作经验”,即可得到匹配项“工作年限”的匹配内容“5”;若当前栈点内容满足正则单栈匹配类关键词的匹配条件时,该当前栈点内容与该正则单栈匹配类关键词匹配的部分为某个匹配项对应的匹配内容,如,定义匹配项“手机号”的关键词“/1[0-9]{10}|1[0-9]{2}\s[0-9]{4}\s[0-9]{4}/is”为正则单栈匹配类,如当前栈点内容包括“13732966916”,即可得到匹配项“手机号”的匹配内容“13732966916”;数组型单栈匹配类表示匹配内容是可完全罗列的,如,定义匹配项“性别”的关键词“男”和“女”为数组型单栈匹配类,若当前栈点内容包括“女”,即可得到匹配项“性别”的匹配内容“女”。
若当前栈点内容包含某个二栈匹配类关键词时,若当前栈点下一栈点内容包含某个匹配项对应的关键词时,将当前栈点内容除去关键词后的内容作为该匹配项对应的匹配内容,若当前栈点下一栈点内容不包含任一个匹配项对应的关键词时,当前栈点内容除去关键词后的内容加上当前栈点下一栈点的内容为该匹配项对应的匹配内容,如定义“姓名”、“性别”、“籍贯”、“身高”、“政治面貌”、“婚姻状况”等为二栈匹配类关键词。
若当前栈点内容包含某个多栈匹配类的关键词时,则在当前栈点以下的栈点继续寻找,直到某个栈点内容包含另一个多栈匹配类的关键词,则将该某个栈点上面的栈点至当前栈点的内容除去当前栈点的关键词后的内容,作为该某个多栈匹配类关键词对应匹配项的匹配内容,该匹配内容中含有至少一个分段识别符,匹配内容可以包含若干个其他的匹配项对应的关键词,如定义“工作经验”、“学习经历”为多栈匹配类关键词。
内容匹配类表示当前栈点内容去除关键词后的内容即包含某个匹配项的匹配内容,与单栈匹配类不同的是,单栈匹配类可做为临时堆栈栈顶栈点的结束条件,而内容匹配类不作为临时堆栈栈顶栈点结束的条件。如定义“/(.*?)(大学|学院)/is”为内容匹配类关键词。
排除匹配类的关键词包含其他某个匹配项对应的某个关键词,当前栈点内容包含某个排除匹配类的关键词,需将当前栈点内容视为无效内容,在解析时不予处理,因为当前栈点内容可能会和其他某些匹配项冲突,如定义“不显示职位月薪范围”为排除匹配类关键词,匹配项“月薪”对应的关键词为“月薪”,由于“不显示职位月薪范围”中带有关键词“月薪”,在处理时可能引起误解析。
具体地,S4包括以下步骤:
S41、从当前栈底开始,依次取出原始内容堆栈的栈点内容,作为当前栈点内容;
S42、将当前栈点内容与关键词库进行比较,判断当前栈点内容是否满足关键词的匹配条件,若满足,则返回当前栈点内容以及当前栈点内容包括的关键词类型,执行步骤S43,且执行步骤S43后返回步骤S41,继续提取下一栈点内容;若不满足,返回所述当前栈点内容,执行步骤S44,且执行步骤S44后返回步骤S41,继续提取下一栈点内容;
S43、包括以下步骤:
S431、如果返回的关键词类型包括排除匹配类,则返回步骤S41,继续提取下一栈点内容;
S432、如果返回的关键词类型包括内容匹配类,则在结果堆栈栈顶新建第二结果栈点,将当前栈点内容和该内容匹配类关键词对应的匹配项一起移入该第二结果栈点的内容数组;
S433、判断临时堆栈是否为空,若为空,执行步骤S434,若不为空,执行步骤S435;
S434、根据返回的关键词类型进行如下处理:
1)如果返回的关键词类型包含单栈匹配类,则在结果堆栈栈顶新建第三结果栈点,将当前栈点内容和该单栈匹配类关键词对应的匹配项一起移入该第三结果栈点的内容数组;如当前栈点内容为“5年工作经验”,则将当前栈点内容和关键词“年工作经验”对应的匹配项“工作年限”一起移入该第三结果栈点的内容数组;
2)如果返回的关键词类型包含二栈匹配类或多栈匹配类,则在临时堆栈栈顶新建第三临时栈点,将当前栈点内容移入该第三临时栈点的内容数组;
S435、如果临时堆栈栈顶内容包括的关键词类型是多栈匹配类且返回的关键词类型包含单栈匹配类、二栈匹配类或内容匹配类中的一种或几种,执行步骤S435-1;否则,执行步骤S435-2;
S435-1、首先,将当前栈点内容移入临时堆栈栈顶的内容数组;然后,
如果返回的关键词类型包含单栈匹配类,则在结果堆栈栈顶新建第四结果栈点,将当前栈点内容和该单栈匹配类关键词对应的匹配项一起移入该第四结果栈点的内容数组;
如果返回的关键词类型包含二栈匹配类或内容匹配类中的一种或两种,则在临时堆栈栈顶新建第四临时栈点,将当前栈点内容移入该第四临时栈点的内容数组;
S435-2、在结果堆栈栈顶新建第五结果栈点,临时堆栈的栈顶内容移出后和临时堆栈的栈顶内容关键词对应的匹配项一起移入该第五结果栈点的内容数组,在临时堆栈栈顶新建第五临时栈点,将当前栈点内容移入该第五临时栈点的内容数组;
S44、判断临时堆栈是否为空,若是,表明无法识别当前栈点内容所属,则将当前栈点内容移入回收堆栈;若否,根据临时堆栈栈顶内容包括的关键词类型进行处理,包括以下情形:
1)若临时堆栈栈顶内容包括的关键词类型是单栈匹配类或者二栈匹配类,且二栈匹配类对应的内容数组不小于2时,判断临时堆栈栈顶下一个栈点内容包括的关键词类型是否为多栈匹配类,
若是,则将当前栈点内容移入临时堆栈栈顶的下一个栈点的内容数组中,即将与临时堆栈栈顶内容无法匹配的当前栈点内容回溯到上一个多栈匹配类匹配项的匹配内容中;
若否,则当前栈点内容为无效内容,移入回收堆栈;
2)若临时堆栈栈顶内容包括的关键词类型是二栈匹配类且对应的内容数组小于2,则将当前栈点内容移入临时堆栈栈顶的内容数组中,作为该二栈匹配类关键词对应匹配项的匹配内容;
3)若临时堆栈栈顶内容包括的关键词类型是多栈匹配类,则将当前栈点内容移入临时堆栈栈顶的内容数组中,作为该多栈匹配类关键词对应匹配项的新增匹配内容;
循环上述步骤S41~S44,直至原始内容堆栈中所有栈点内容处理完成。
S5、对结果堆栈的栈点内容进行处理得到解析结果,包括以下步骤:从当前栈底开始,依次取出结果堆栈的栈点内容,作为当前结果栈点内容,对当前结果栈点内容进行如下处理:
如果当前结果栈点内容包括的关键词类型是单栈匹配类或二栈匹配类,则将当前结果栈点内容覆盖对应匹配项已获取到的匹配内容;
如果当前结果栈点内容包括的关键词类型是多栈匹配类,则将当前结果栈点内容合并至对应匹配项已获取到的匹配内容。
举例来说,原始堆栈中某栈点内容为:“性别:男”,经过解析,得到结果堆栈中包含有性别内容的栈a)和栈b)分别为:
栈a):【sex】—>性别:男
栈b):【sex】—>男
对于栈a,结果堆栈会把“性别:”这个关键词替换掉,最终变成:
栈a):【sex】—>男
这样,栈a)和栈b)内容相同,由于栈b)内容比栈a)内容后到,匹配项性别最终对应的匹配内容以栈b)为准。
进一步地,在步骤S42中将当前栈点内容与关键词库进行比较前,还包括判断当前栈点内容是否为姓名,包括以下步骤:
Sa、若当前栈点内容的字符个数是否不小于2且不大于4,若是,执行步骤Sb;
Sb、判断当前栈点内容的第1个字符或第1~2个字符是否存在于预设的姓氏库中,若在预设的姓氏库中,再判断当前栈点内容是否存在于预设的排除库中,若不存在于排除库中,则判断当前栈点内容为姓名,在结果堆栈栈顶新建第六结果栈点,将当前栈点内容和对应的匹配项“姓名”一起移入该第六结果栈点的内容数组。比如有人姓“简”,但是简历就不是名字,“简历”就会在排除库里面。
本发明提出的文档解析方法大大提高了解析结果的精确率,多次实验表明,本文档解析方法的细分解析率可以达到90%以上,内容解析准确率85%以上,内容丢失率为0%,几乎不会出现因内容解析不出来而导致内容丢失的情况。且只需简单设置和维护关键词库即可,无需专业的开发人才进行维护,大大减低维护成本。将本文档解析方法应用在简历解析领域时,用户只需上传简历文档,系统即可智能地把简历文档(word、htm、mht、pdf等非固定内容格式的文档)中姓名、居住地、工作经验、教育经历、技能等细分内容分析出来,分析后的结果可录入到人力资源的相关平台或者系统,以替代人工录入,大大提升了工作效率和用户体验。
更进一步地,还可以做批量文档解析和系统导入,只需把大量的文档打包成压缩包,压缩包内也可以存在压缩包。本文档解析方法可自动对该压缩包进行解压、文档遍历、文档解析、导入系统等一系列处理,大大提高了处理效率,降低了人工成本。
实施例三:
本发明提出一种文档解析装置,用于将具有特定格式的原始文档进行解析,这里的特定格式指包括匹配项和与匹配项对应的匹配内容,包括内容提取模块、内容入栈模块和内容解析模块;其中,
内容提取模块,用于从原始文档中提取文本内容;
内容入栈模块,用于根据分段识别符对文本内容进行分段,将分段后的文本内容放入原始内容堆栈,一个栈点存放一段内容;
内容解析模块,用于依次取出原始内容堆栈的栈点内容,作为当前栈点内容;若当前栈点内容满足某个匹配项对应关键词的匹配条件,称当前栈点为当前匹配栈点,当前栈点作为某个匹配项的匹配起点,当前栈点内容除去该某个匹配项对应关键词后的内容以及往下遍历的栈点内容作为该某个匹配项的匹配内容,直到遇到下一匹配栈点时,下一匹配栈点的上一栈点作为该某个匹配项的匹配终点。其中,当前匹配栈点的下一匹配栈点指的是当前栈点之后第一个满足另一个匹配项对应关键词匹配条件的栈点内容。
需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域技术人员将认识到,对以上描述做出众多变通是可能的,所以实施例仅是用来描述一个或多个特定实施方式。
尽管已经描述和叙述了被看作本发明的示范实施例,本领域技术人员将会明白,可以对其作出各种改变和替换,而不会脱离本发明的精神。另外,可以做出许多修改以将特定情况适配到本发明的教义,而不会脱离在此描述的本发明中心概念。所以,本发明不受限于在此披露的特定实施例,但本发明可能还包括属于本发明范围的所有实施例及其等同物。