实施例一
本发明实施例提供了一种Word文档碎片化方法。图1为本发明实施例提供的一种Word文档碎片化方法的流程图,如图1所示,所述方法可以包括以下步骤:
步骤S110,获取Word文档的所有段落。
本领域人员公知,Word文档的内容由多个段落组成,每个段落在结尾处换行,并在下一行开始新的段落,并且,在Word文档中,标题独占一段。本实施例中,获取Word文档的所有段落,在用户检索时,以段落为被检索单位进行检索,有助于提高检索效率,同时,以段落作为操作单元,有助于从段落中获取标题。
图2为本发明实施例提供的一种Word文档碎片化方法步骤S110的流程图,如图2所示,在一种实施例中,步骤S110包括:
步骤S111,获取Word文档。
本实施例中,Word文档的获取方式可以来自于用户的上传,也可以直接从本地现有的Word文档库中获取,还可以是从互联网资源中有目标地抓取特定主题的Word文档,在本步骤的具体实施中,Word文档的获取方式包括但不限于上述已示出的方式,对于Word文档的获取方式,本实施例中不做具体限定。
步骤S112,对Word文档进行格式转换,生成XWPFDocument文档。
本实施例中,使用Apache POI源码程序库中的XWPFDocument类对Word文档进行格式转换,生成XWPFDocument文档。
本实施例中的XWPFDocument是Apache POI开源程序库中的一个程序类,ApachePOI是Apache软件基金会的开放源码程序库,Apache POI提供API(应用程序接口)给Java程序对Microsoft Office格式文档读写和解析的功能。Apache POI能够从Word文档中获取到段落的POI属性,段落的POI属性,是指Apache POI源码程序库在对Word文档进行解析时,能从Word文档中识别出的文档段落属性的组合,例如,POI属性中包含Word文档的以下段落属性:fontAlignment(字体对齐)、borderBetween(字符间距)、firstLineIndent(段首缩进)、、indentationFirstLine(首行缩进)、style(字体样式)、bookmarkStartList(书签开始列表)等,在Word文档中,各级标题和正文的POI属性均不相同。
XWPFDocument是Apache POI开源程序库中的一个程序类,Apache POI在读写和解析Microsoft Office格式文档时,可以使用XWPFDocument程序类将Word文档转换成XWPFDocument文档,Apache POI能够从XWPFDocument文档中获取Word文档的段落属性,然后再对XWPFDocument文档进行读写和解析,在XWPFDocument文档中,Word文档的段落称为XWPFParagraph。
需要补充说明的是,由于Apache POI和XWPFDocument等英文词汇,并没有统一的中文释义,本领域技术人员也公知以上英文词汇所表达的意义,因此,为了避免不统一的翻译结果造成本领域技术人员的误解,本发明实施例中对以上英文词汇不做翻译。
步骤S113,从所述XWPFDocument文档中获取Word文档的所有所述段落。
由于,在XWPFDocument文档中,文档的段落以XWPFParagraph格式呈现,因此,本步骤中,通过获取XWPFParagraph段落信息,就可以获取Word文档的段落,在获取了Word文档的段落以后,Word文档不再已整篇形式存在,而是被分化成了以段落为单元存在多个文档片段。
步骤S120,根据所述段落在Word文档中的先后顺序,依次获取所述段落的段落属性,并提取所有在Word文档中首次出现的段落属性,生成Word文档的段落属性集合。
在Word文档中,每个级别的标题都具有不同的段落属性,而正文具有相同的段落属性,因此,在一篇Word文档中,如果标题级别的数量N,那么,这篇文档共有N+1个不同的段落属性。
需要说明的是,本发明实施例中使用Apache POI获取文档的段落属性,即Word文档的POI属性,一篇标题级别数量为N的Word文档,共有N+1个不同的POI属性。在本发明实施例中,除特殊说明以外,Word文档的段落属性均为POI属性。
本实施例中,根据段落在Word文档中的先后顺序,使用Apache POI开源程序库提供的API,依次分析Word文档的每个段落,获取段落的段落属性,并根据获取的段落属性的先后顺序,提取所有在Word文档中首次出现的段落属性,如果获取到的某个段落的段落属性不是首次出现,则这个段落属性不会被提取。当Apache POI完成对Word文档所有段落的分析之后,本步骤能提取到Word文档所有不同的段落属性,并对提取到的所有段落属性,生成Word文档的段落属性集合。
示例地,本实施例在步骤S110中获取的Word文档的段落如下:
段落1
段落2
段落3
段落4
段落5
段落6
段落7
段落8
段落9
对以上段落执行步骤S120的过程为:
首先获取“段落1”的段落属性,本示例中称段落属性1,由于段落属性1首次出现,因此提取该段落属性,此时,步骤S120已提取的段落属性有:
段落属性1
然后,获取“段落2”的段落属性,本示例中称段落属性2,由于段落属性2首次出现,因此提取该段落属性,此时,步骤S120已提取的段落属性有:
段落属性1,段落属性2
然后,获取“段落3”的段落属性,本示例中称段落属性3,由于段落属性3首次出现,因此提取该段落属性,此时,步骤S120已提取的段落属性有:
段落属性1,段落属性2,段落属性3
然后,获取“段落4”的段落属性,本示例中“段落4”的段落属性与“段落2”的段落属性相同,均为段落属性2,因此不提取该段落属性,此时,步骤S120已提取的段落属性有:
段落属性1,段落属性2,段落属性3
然后,获取“段落5”的段落属性,本示例中称段落属性4,由于段落属性4首次出现,因此提取该段落属性,此时,步骤S120已提取的段落属性有:
段落属性1,段落属性2,段落属性3,段落属性4
然后,获取“段落6”的段落属性,本示例中称段落属性5,由于段落属性5首次出现,因此提取该段落属性,此时,步骤S120已提取的段落属性有:
段落属性1,段落属性2,段落属性3,段落属性4,段落属性5
然后,获取“段落7”的段落属性,本示例中“段落7”的段落属性与“段落3”的段落属性相同,均为段落属性3,因此不提取该段落属性,此时,步骤S120已提取的段落属性有:
段落属性1,段落属性2,段落属性3,段落属性4,段落属性5
然后,获取“段落8”的段落属性,本示例中“段落8”的段落属性与“段落6”的段落属性相同,均为段落属性5,因此不提取该段落属性,此时,步骤S120已提取的段落属性有:
段落属性1,段落属性2,段落属性3,段落属性4,段落属性5
最后,获取“段落9”的段落属性,本示例中“段落9”的段落属性与“段落3”的段落属性相同,均为段落属性3,因此不提取该段落属性,此时,步骤S120已提取的段落属性有:
段落属性1,段落属性2,段落属性3,段落属性4,段落属性5
从上述示例可以看出,针对示例的Word文档的段落,步骤S120共获取5个段落属性,因此步骤S120生成的段落属性集合为:
{段落属性1,段落属性2,段落属性3,段落属性4,段落属性5}
步骤S130,使用段落属性识别模型,从所述段落属性集合中提取所有的标题段落属性,生成标题段落属性集合;所述识别模型根据人工标注过标题段/正文段的段落属性生成。
本实施例中使用的段落属性识别模型是一个能够通过段落属性,识别段落是标题还是正文的SVM模型,根据人工标注过标题段/正文段的段落属性生成。在步骤S130中,首先,将段落属性集合中的所有段落属性输入进段落属性识别模型,段落属性识别模型能够识别出每个被输入的段落属性是标题段落属性还是正文段落属性;然后,根据识别结果,对段落属性集合中的所有段落属性进行分类,一类是标题段落属性,另一类是正文段落属性;最后,根据段落属性分类的结果,提取所有的标题段落属性,生成标题段落属性集合。与步骤S120生成的段落属性集合中的段落属性排列顺序相同,本步骤生成的标题段落属性集合中,标题段落属性按照其在Word文档中首次出现的顺序排列。
示例地,将步骤S120的示例中生成的段落属性集合输入进段落属性识别模型中,段落属性识别模型得到以下识别结果:
标题段落属性:段落属性1,段落属性2,段落属性4,段落属性5
正文段落属性:段落属性3
因此,步骤S130中,提取标题段落属性,生成的标题段落属性集合为:
{段落属性1,段落属性2,段落属性4,段落属性5}
步骤S140,根据标题段落属性集合,识别Word文档的所有标题,并生成Word文档标题树。
生成标题树,即生成word文档对应的知识条目,达到了提取word文档中主要知识条目的目的,便于存储于知识库及后续的检索,实现了Word文档知识的碎片化处理。
图3为本发明实施例提供的一种Word文档碎片化方法步骤S140的流程图,如图3所示,在一种实施例中,步骤S140包括:
步骤S141,根据所述标题段落属性在Word文档中首次出现的顺序,确定所述标题段落属性集合中,每个所述标题段落属性对应的标题级别。
本领域人员公知,在Word文档中,标题在Word文档中首次出现的顺序,是从级别高的标题向级别低的标题逐级出现,本实例中,将级别最高的标题称为一级标题,级别第二高的标题称为二级标题,以此类推。
示例地,由于,在标题段落属性集合中,标题段落属性按照其在Word文档中首次出现的顺序排列,因此,在步骤S141中,确定步骤S130的示例中生成的标题段落属性集合中,每个poi标题属性对应的标题级别的结果为:
标题段落属性 |
标题级别 |
段落属性1 |
一级标题 |
段落属性2 |
二级标题 |
段落属性4 |
三级标题 |
段落属性5 |
四级标题 |
步骤S142,根据所述标题段落属性集合和所述标题段落属性对应的标题级别,获取Word文档的所有标题,并确定每个标题的标题级别。
图4为本发明实施例提供的一种Word文档碎片化方法步骤S142的流程图,如图4所示,在一种实施例中,步骤S142包括以下步骤:
步骤S1421,判断Word文档每个所述段落的段落属性是否为所述标题段落属性集合中的所述标题段落属性。
本步骤中,使用Apache POI开源程序库提供的API,重新依次分析Word文档的每个段落获取段落属性,并逐一判断每个段落的段落属性是否是段落属性集合中的标题段落属性。
步骤S1422,如果是,则确定所述段落为标题。
根据步骤S1421的判断结果,确定段落是否为标题,如果是,则当前被判断的段落为标题,如果不是,则当前被判断的段落为正文。
步骤S1423,根据所述标题段落属性对应的标题级别,确定每个标题的标题级别。
示例地,对步骤S120提供的示例Word文档,执行步骤S1423的结果为:
段落 |
段落属性 |
是否为标题段落属性 |
标题级别 |
段落1 |
段落属性1 |
是 |
一级标题 |
段落2 |
段落属性2 |
是 |
二级标题 |
段落3 |
段落属性3 |
否 |
正文 |
段落4 |
段落属性2 |
是 |
二级标题 |
段落5 |
段落属性4 |
是 |
三级标题 |
段落6 |
段落属性5 |
是 |
四级标题 |
段落7 |
段落属性3 |
否 |
正文 |
段落8 |
段落属性5 |
是 |
四级标题 |
段落9 |
段落属性3 |
否 |
正文 |
步骤S143,根据Word文档的所有标题和每个标题的标题级别,生成Word文档标题树。
本实施例中的Word文档标题树,能够展现Word文档中所有标题的从属关系,包括:并列关系和父子关系;同时,由于标题通常是位于正文段落之前,作为正文段落的概括,因此,Word文档标题树能够体现出Word文档的知识结构。在步骤S143中,根据Word文档的所有标题和每个标题标题级别,按照下述规则,生成Word文档标题树:
1、相同级别的标题为并列关系,按照在文档中的位置先后排列;
2、出现在当前标题之前,与当前标题位置最接近的上一级标题,是当前标题的父级标题。
示例地,步骤S143根据步骤S142的示例中确定的每个标题的标题级别,对步骤S120示例的Word文档生成的Word文档标题树的示意图如图5所示。其中,标题树中具体包含了每个标题的文字内容,以便用户进行检索。
需要说明的是,本实施例中,通过获取Word文档的所有段落,将Word文档的内容细分成多个段落的形式,以段落为单位处理Word文档;通过建立Word文档的标题树,清晰地展现了Word文档的内容结构,便于用户根据检索的关键词,直接从标题树中得到目标内容;并且,由于Word文档中的正文段落内容的主题通常与临近的上一个标题的内容相对应,通过在Word文档标题树中检索标题,就能够迅速找到与该标题的主题对应的正文段落,或者,通过在Word文档中检索关键词,也能够迅速找到包含该关键词的正文段落;本申请实施例提供的技术方案,将Word文档的内容细分成多个段落的形式,以段落为单位处理Word文档,实现了将Word文档的碎片化,能够提高用户从Word文档中检索目标内容的效率。
在一种实施例中,步骤S110之前,还包括:
步骤S010,建立段落属性识别模型。
图6为本发明实施例提供的一种Word文档碎片化方法步骤S010的流程图,如图6所示,在一种实施例中,步骤S010包括以下步骤:
步骤S011,获取样例文档,所述样例文档为大量文档内容已知的Word文档。
本步骤中获取的样例文档,由于文档内容已知,因此,文档中每个段落是标题还是正文也已知,这些样例文档可以作为SVM模型训练的训练实例,通过使用SVM模型对这些样例文档进行训练,可以获得段落属性识别模型。
步骤S012,获取所述样例文档中所有所述段落的样例段落属性。
本实施例中,样例文档所有段落的样例段落属性可以通过Apache POI分析样例文档获得。
示例地,本步骤从样例文档的段落中获得了以下样例段落属性:
步骤S013,根据所述样例文档的文档内容,对所述样例文档中,所有所述段落的样例段落属性添加标签,建立初级模型;所述标签包括标题标签和正文标签,所述初级模型包含所述样例文档的所有段落,以及与每个段落对应的所述标签。
由于,样例文档的段落内容已知,本步骤可根据每个段落的具体内容对段落的样例段落属性添加标题标签或正文标签,以建立初级模型。
示例地,对步骤S012中获取的样例段落属性添加标签后建立的初级模型的结构示意为:
样例段落属性 |
标签 |
样例段落属性1 |
标题 |
样例段落属性2 |
正文 |
样例段落属性3 |
标题 |
样例段落属性4 |
标题 |
样例段落属性5 |
正文 |
样例段落属性6 |
标题 |
样例段落属性7 |
正文 |
样例段落属性8 |
标题 |
…… |
…… |
从上述初级模型的结构示意中可以看出,初级模型包含样例文档的所有段落,以及与每个段落对应的标签。
步骤S014,将所述初级模型根据SVM模型规则,生成所述识别模型,所述识别模型为SVM模型。
本实施例中,使用SVM模型建立段落属性识别模型,将添加有标签的样例段落属性输入进SVM模型中,SVM模型利用SVM算法对样例段落属性进行训练,最终建立起基于SVM模型的段落属性识别模型。
本发明实施例提供的技术方案,为了解决现有技术在Word文档中检索目标内容的工作量大,检索效率低的问题,首先,获取Word文档的所有段落;然后,根据所述段落在Word文档中的先后顺序,依次获取所述段落的段落属性,并提取所有在Word文档中首次出现的段落属性,生成Word文档的段落属性集合;接下来,使用段落属性识别模型,从所述段落属性集合中提取所有的标题段落属性,生成标题段落属性集合;最后,根据标题段落属性集合,识别Word文档的所有标题,并生成Word文档标题树,实现了Word文档的碎片化;从而,用户能直接从碎片化Word文档中检索到包含目标内容的文档段落或从Word文档的标题树中检索目标内容,提高用户检索Word文档标题时的检索效率。
实施例二
本发明实施例提供了一种Word文档碎片化装置。图7为本发明实施例提供的一种Word文档碎片化装置的框图,如图7所示,所述装置包括:
获取模块210,用于获取Word文档的所有段落;
第一生成模块220,用于根据所述段落在Word文档中的先后顺序,依次获取所述段落的段落属性,并提取所有在Word文档中首次出现的段落属性,生成Word文档的段落属性集合;
第二生成模块230,用于使用段落属性识别模型,从所述段落属性集合中提取所有的标题段落属性,生成标题段落属性集合;所述识别模型根据人工标注过标题段/正文段的段落属性生成;
第三生成模块240,用于根据标题段落属性集合,识别Word文档的所有标题,并生成Word文档标题树;
进一步地,本实施例中,所述装置还包括:
建模模块250,用于建立段落属性识别模型。
图8为本发明实施例提供的一种Word文档碎片化装置第三生成模块240的框图,如图8所示,在一种实施例中,第三生成模块240包括:
第一确定子模块241,用于根据所述标题段落属性在Word文档中首次出现的顺序,确定所述标题段落属性集合中,每个所述标题段落属性对应的标题级别;
第二确定子模块242,用于根据所述标题段落属性集合和所述标题段落属性对应的标题级别,获取Word文档的所有标题,并确定每个标题的标题级别;
第一生成子模块243,根据Word文档的所有标题和每个标题的标题级别,生成Word文档标题树。
图9为本发明实施例提供的一种Word文档碎片化装置第二确定子模块242的框图,如图9所示,在一种实施例中,第二确定子模块242包括:
判断子单元2421,用于判断Word文档每个所述段落的段落属性是否为所述标题段落属性集合中的所述标题段落属性;
第一确定子单元2422,用于在所述判断子模块判断结果为是时,确定所述段落为标题;
第二确定子单元2423,根据所述标题段落属性对应的标题级别,确定每个标题的标题级别。
本发明实施例提供的技术方案,为了解决现有技术在Word文档中检索目标内容的工作量大,检索效率低的问题,首先,获取Word文档的所有段落;然后,根据所述段落在Word文档中的先后顺序,依次获取所述段落的段落属性,并提取所有在Word文档中首次出现的段落属性,生成Word文档的段落属性集合;接下来,使用段落属性识别模型,从所述段落属性集合中提取所有的标题段落属性,生成标题段落属性集合;最后,根据标题段落属性集合,识别Word文档的所有标题,并生成Word文档标题树,实现了Word文档的碎片化;从而,用户能直接从碎片化Word文档中检索到包含目标内容的文档段落或从Word文档的标题树中检索目标内容,提高用户检索Word文档标题时的检索效率。
本发明可用于众多通用或专用的计算系统环境或配置中,例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。