肝病中医文献抽取解析及数据协同化管理软件设计
2022-07-08张云琪
张云琪
(南京中医药大学中医药文献研究所 江苏省南京市 210023)
肝病是指发生在肝脏的病变,是临床的常见病,中医在肝病治疗方面有明显的疗效。《中医临床病证大典肝病篇》(以下简称“病证大典”)拟整理归纳历代中医药经典文献中与肝病相关的论述,便于广大师生和中医医疗工作者总结学习肝病临证经验。但是中医药经典文献数据量大,从中寻找相关的肝病数据比较困难。本文利用J2EE设计和开发了一个肝病中医文献抽取解析及数据协同化管理软件,该软件利用模式匹配技术,对中医药经典文献中的文献资料进行抽取和解析,能把与肝病有关的病名、病因、病机、病证、治法、用方、用药、医话医案等相关数据自动提取出来,提高了“病证大典”的数据采集效率。同时,如果依次设置“病证大典”出版文字段落的样式,重复性工作很多,且容易出现错漏,不易检查。本软件通过Spire.Doc组件批量设置格式,然后把相关数据导出,直接得到排版好的Word文档,为编写工作提供了很大的便利。
1 关键技术
1.1 模式匹配
假设有子串P,字符串T,现在要从T中找到所有与P相同的子串索引,这就是模式匹配。考虑到模式匹配在实际使用时的复杂性,结合中医药文献的特点,必须选用合适的模式匹配算法,达成能够自动、精确地抽取解析数据的目标。
1.2 Spire.Doc
Spire.Doc for Java是对Word文档进行操作的Java组件。使用它可以将许多Word文档任务(如创建文档、编辑文档等)集成到Java应用中,以实现预设定格式并对文档批量化处理的功能。
2 软件设计
2.1 需求分析
该软件旨在能从《中华医典》收录为主的中医经典文献中,抽取和解析出肝病相关的数据,以获取规范化的病证记录。经系统认证过的编者可以共同参与文档的校正,实现协同化编辑。存储校正后的规范化数据,根据排版要求自动生成符合样式要求的Word文档。此外,系统的稳定性、安全性等需求也应得到保障,操作界面需简洁友好。
2.2 系统架构设计
本系统采用MVC(模型-视图-控制)的框架来构建,提高了软件的重用性和可维护性,有利于软件工程化管理。总体架构分为表现层、业务逻辑层、数据访问层,如图1所示。表现层利用JSP、JavaScript编写用户界面,收集用户对于功能方面的请求,同时反馈结果。业务逻辑层管理用户的基本信息和权限,处理数据抽取解析、协同管理、规范化导出等业务逻辑。数据访问层根据业务逻辑层处理后的结果,用MyBatis框架和MySQL对相应的病名、病因、病机、病证、治法、用方、用药、医话医案数据进行增、删、改、查等操作,实现业务数据持久化。
图1:软件系统架构
2.3 功能模块设计
肝病中医文献抽取解析及数据协同化管理软件将用户分为2种角色:系统管理员和编辑员,系统主要包括用户管理、数据解析、数据协同化管理、文字段落样式批量设置导出这4个功能模块,如图2所示。
图2:软件功能模块
2.3.1 用户管理功能
用户管理是系统管理员对其他非管理员用户(编辑员)相关信息进行维护的功能,包括管理他们的基本信息和编辑权限的授权。基本信息指用户名、密码、姓名、单位、联系方式等,编辑权限是指编辑员是否可以参与本次编辑。
2.3.2 数据抽取解析功能
数据抽取解析功能是指:根据前期收集和制定的《肝病关键词目录集》,以存储的第五版《中华医典》数据为主,从中抽取出与肝病有关的论述,包括病名、病因、病机、病证、治法、用方、用药、医话医案等记录,解析出每条论述的文献出处书名、文献出处卷名、有无引用文献和具体论述内容,同时根据出处书名找到对应的成书年代,以便于后续“病证大典”的编写。
2.3.3 数据协同化管理功能
病证数据协同化管理主要是指:多位有编辑权限的编辑员可同时对抽取和解析出的肝病文献数据进行二次校验,包括查询、修订、删除、增加等。编辑员在对抽取解析后的数据进行校勘时,可以选择查看解析后的全部数据,也可以通过查询关键词找到其中的某一条数据。如果编辑员发现某条解析结果中存在错误内容,可以修改该条数据后选择保存;若发现某条抽取解析出的数据与肝病无关,则可选择删除此数据;若发现抽取结果中存在遗漏某条数据的现象,则可选择自行增加数据并选择保存。经过编辑员校对后确认无误后的数据将被存储至数据库中。
2.3.4 文字段落样式批量设置导出功能
系统管理员预先设定好符合“病证大典”排版要求的文字和段落样式,待病证数据规范化工作全部完成后,管理员选择一键导出至Word,系统即可自动生成符合出版排版要求的文档。
2.4 病证数据库设计
根据从《中华医典》收录的经典文献中抽取解析出肝病相关的数据内容,设计病证数据库,包括病证分类表、文献详情表、病证草稿表和病证详情表。
2.4.1 病证分类表
根据前期收集制定的《肝病关键词目录集》,将关键词按照病名、病因、病机、病证、治法、用方、用药、医话医案进行第一级别的分类,之后再往下细分出第二级别:按发病部位命名、按发病特点命名、按脏腑经络命名等。依据此制定出病证分类表,包含以下属性:一级分类、二级分类、肝病关键词。
2.4.2 文献详情表
各文献的名称和成书年代等基本信息都是固定的,因此需要制定统一规范的文献详情表。这样在记录病证相关论述的文献出处时,可以直接引用文献详情表中的数据,能够避免数据错漏的问题,也可以减少存储时的数据冗余。结合功能需求和文献抽取情况,设计文献详情表属性如下:文献序号、文献名称、成书年代起点、成书年代终点。
2.4.3 病证草稿表和病证详情表
为了充分收录典籍中关于肝病的论述,结合病证分类表和文献详情表设计了病证草稿表和病证详情表。病证草稿表用于存储系统从中医经典文献中抽取出的数据,这些数据未被编辑员校对确认过,是软件初步解析的结果。病证详情表用于存储编辑员校勘后的病证数据,是准确的、规范化的数据。两个表都包含以下属性:一级标题、二级标题、三级标题、四级标题、文献出处书名、文献出处卷名、文献引用、论述内容、成书年代起点、成书年代终点等。病证详情表的设计和部分数据如表1所示。
表1:病证详情表设计和部分数据存储
3 软件实现
3.1 系统UI实现
利用BootStrap框架,结合JSP、CSS和JavaScript设计本系统的UI。界面设计简洁,操作简单易上手。首页即显示系统的四大功能,用户可通过点击首页上的相关功能分区,直接使用该功能,如图3所示。
图3:软件首页
3.2 数据解析和协同管理的实现
首先,利用文献学的研究方法,收集、筛选、修订肝病相关的关键词数据集。再针对肝病关键词集进行分类,制定成《肝病关键词目录集》。
数据解析开始时,有权限的编辑员进入数据解析功能模块,选择上传《肝病关键词目录集》作为字典集。系统会通过朴素算法、KMP匹配算法、BM匹配算法等模式匹配技术,从《中华医典》收录的部分中医经典文献数据中,初步提取和解析出一些相关的论述,这些数据是未被编辑员确认过的草稿数据,将暂存于初步解析的草稿数据库中,不会存入最终的病证数据库里。
进入数据协同化管理功能模块后,多名身份认证成功的编辑员可将提取结果与原始文档数据进行校对。在校勘时,编辑员可以查看到解析后的全部草稿数据,也可以通过查询关键词找到想要校对的具体某一条数据。点击某条待确认的草稿数据后,该条数据会进入可编辑状态。若当前整条论述不相关,编辑员可直接在页面点击“删除”按钮,会从病证草稿表中删掉整条数据,不会存入最终的病证详情表;若发现抽取结果中遗漏了某条数据,则可点击“新增”按钮,在页面填写数据,再选择保存,新增数据会直接存入病证详情表;若抽取的数据有部分错误,编辑员可在当前页面进行修改,修改完成之后点击“保存”按钮,该条数据会存储至最终的病证详情表中,如图4所示。
图4:数据协同化管理界面
同时根据病证数据库中存储的校对后的规范化数据,系统不断更新修订《肝病关键词目录集》,之后再对《中华医典》收录的部分数据进行模式匹配,编辑员再次协同化管理校对新抽取解析出的数据,如此过程循环下去,直至生成全部符合规范要求的结构化数据。整体流程如图5所示。
图5:数据抽取及规范化流程
3.3 批量设置文字段落格式实现
系统管理员根据出版文字段落的排版要求,在软件中为数据库的相应字段预先设定好格式。待全部数据规范化过程整体完成后,系统读取数据库中的数据,利用Spire.Doc组件,将读出的数据按照设定好的格式依次写入Word中,完成文字段落样式的批量设置导出。比如需要设定文字字号为20,则系统会调用Spire.Doc中getCharacterFormat()下的函数setFontSize()并赋上字号参数20,代码为:getCharacterFormat().setFontSize(20);如需要设定文字样式为加粗,则调用Spire.Doc中的setBold()样式加粗函数并附上参数true,代码为:getCharacterFormat().setBold(true)。
4 软件测试和使用效果
在软件投入使用前,选取部分肝病相关的经典文献作为测试数据,使用基本路径测试法、等价类划分法等软件测试方法,对系统的界面、功能、性能、兼容性和易用性等各个方面进行了多次测试,运行效果良好。投入使用后,根据用户对数据的校验情况和在具体使用过程中的反馈结果,不断完善和优化系统界面和功能,保证了软件的安全性、可靠性、稳定性、健壮性等,也提高了数据抽取和解析的准确性和效率,便于开展“病证大典”的编写工作。
4.1 提高编写工作效率
原本在开展编写工作的时候,需要在大量中医经典文献中手动检索关键词,人工一条条筛选,工作繁琐且效率低下。软件使用模式匹配技术获取数据,配合用户反馈结果不断修正抽取结果,使得数据提取速率和编写工作效率大大提高。
4.2 探索智慧编辑新模式
本系统可以自动抽取数据,多位编辑员也可同时在线、共同管理文献数据,这种自动化和协同化的工作模式,减轻了团队的工作量,加强了团队的合作性。设定好格式一键导出文本的模式,也使编辑不需要再做大量重复性工作。这种不同于传统编书方式的新模式,不仅适用于“病证大典”的编写,还可应用于其他编辑工作中,是对智慧编辑模式的一次很好的探索。
5 结语
本文利用J2EE设计和开发的肝病中医文献抽取解析及数据协同化管理软件,通过模式匹配技术抽取和解析了中医经典文献中关于肝病的论述,结合数据协同化管理,实现了肝病病证数据的规范化管理和存储。同时可以设定文字段落格式,一键导出到Word,方便书籍的编辑排版。软件运行后性能表现稳定,数据抽取解析与协同管理效果良好,能有效帮助《中医临床病证大典肝病篇》的编写。后续通过修改字典集和格式设定参数等,该软件还可以应用到其他书籍的编写过程中,具有很好的发展前景。