中医药信息搜索引擎的研究与初探
发布时间:2024-04-30 15:52  

  摘要:基于中医药科研教学中对大数据的需求,本文针对如何在互联网中快速获得大量相关信息在技术层面进行了研究和探讨。提出了以垂直爬虫为基础的中医药信息搜索系统的体系结构,在理论层面研究了爬虫系统依赖的技术,包括语义分析、爬行算法以及正则表达。奠定了整个系统的理论以及架构基础,为下一步的具体实现进行了有价值的先期铺垫。


  关键词:爬虫;语义分析;理论研究;正则表达;中医药


  中医药是华夏先祖智慧的结晶,他们历经千年,不断传承,延绵至今;如今,随着大数据时代的脚步不断临近,传统中医中药信息的承载和传播,也逐渐从纸质古籍的代代相传,演变为互联网的分布式存储以及几何量级的搜索与复制。


  为了应对这种发展的趋势,如何能快速,准确,完整的从互联网中采集所需要的中医药数据,进而对其挖掘分析,日益成为了广大科研人员所面临的一大问题。


  因此,使用技术手段,使信息采集、数据挖掘的过程自动而高效,不仅能有效地减轻图书馆员的重复工作量,也能使信息采集数据挖掘的结果更加客观。


  在这种情况下,爬虫技术开始走入了我们的视线。


  1爬虫技术概述


  所谓网络爬虫,是一个从Web上下载网页、并且自动从网页中提取所需内容的程序。一般我们将爬虫划分为如下三个类型:


  1.1批量型爬虫批量型爬虫有比较明确的抓取范围和目标,当爬虫达到这个设定的目标后,即停止抓取过程。常见的目标包括抓取网页的数量或者消耗的时间等。


  1.2增量型爬虫增量型爬虫特点是定期更新,由于在线网页处于不断变化中,而增量型爬虫需要及时反映这种变化,因而必须持续不断的抓取,既要抓取新网页,又要更新已有网页。通用的商业搜索引擎爬虫基本都属此类。


  1.3垂直型爬虫垂直型爬虫关注特定主题内容或者行业的网页。垂直型爬虫一个最大的特点就是:如何识别网页内容是否属于指定主题。它需要在抓取阶段就能够动态识别某个网址是否与主题相关,并尽量忽略无关页面。


  2中医药信息搜索系统中的爬虫技术


  显而易见,中医中药,作为一个特定行业,只有垂直爬虫的定义最为符合其信息采集的特性。因此,如何设计并构建一个适用于中医中药的,以垂直搜索为目的的网络爬虫系统,逐渐成为值得我们深入研究的课题。


  2.1垂直爬虫的技术原理垂直搜索里,目标网站往往在某一领域具有其专业性,其整体网站的结构相当规范,并且垂直搜索只需要其中一部分具有垂直性的资源,所以垂直爬虫相比通用爬虫更加精确。


  通常把爬虫爬取资源分成三个步骤:url抓取、内容抓取、数据标准化及索引,以下是一般垂直爬虫的工作流程:①首先确定需要抓取的目标网站,录入站源表sitelist,然后爬虫会读取对应站点的正则解析规则。②根据事先制定的正则规则,筛选出资源url存入urllist表。③爬虫从urllist表读出url,存入一个同步的队列中(同时将url做md5处理,用于去重),多线程下的每个爬虫程序将从此队列读取url,然后爬取每个资源页,并将提取的内容存入原始数据表。④数据标准化及索引模块从原始数据表提取数据,进行进一步的规整、聚合,最终存入最终内容表中。


  更新策略:①根据每个站点设定的url失效时间,定期的从数据库抽取需要更新的资源url,加入步骤3的队列中,进行资源爬取。②爬取的资源更新到数据库中。


  2.2爬虫系统的先决技术和算法由上一节可知,要实现中医药数据搜索系统,一个基于垂直爬虫的数据采集服务系统是关键,而以下几点无疑是要实现这个爬虫系统的先决技术。


  2.2.1中医药语义分析所谓语义分析,就是对web页面所包含的部分或者全部文字内容的含义进行分析,一般包括三个步骤:①分词。提取一个完整的中文句子或者段落,根据一定的算法对其进行分词;在这里我们可以自定义算法,或者调用现有的开源分词组件,如,Lucene的分词组件、ktdictseg等;分词后将所有实词(除去连接词、语气词、介词等虚词)存入数组。②构建中医药语料库。语料库通常由书面语或口语的电子语言材料构成。经过科学选材和标注、具有适当规模的语料库能够反映和记录语言的实际使用情况。因此,根据收集的情报监测网站以及日常中医药情报服务中涉及的内容,可以收录中医药、传统医学、补充替代医学领域的专用词汇,规模可以维持在1000个词汇左右。③将分出的词汇和语料库匹配。匹配率若能高于基于某种算法某一阀值,则判定为具有基于语料库的相关性。


  2.2.2爬行算法经典的爬取策略可以分为深度优先、广度优先等几种。


  深度优先策略的目的是要达到被搜索结构的叶结点(无超链接页面)。深度优先搜索沿着页面上的超链走到不能再深入为止,然后返回到这个页面,再继续选择该页面中的其他链接。当不再有其他链接可选择时,抓取结束。


  广度优先策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。该算法的设计和实现相对简单。


  由于深度优先在很多情况下会导致爬虫的陷入(traPped)问题,目前在爬虫开发中常见的是广度优先算法。


  在本系统的研究中,基于中医药的主题性,我们可以使用一种改进的基于语义分析的广度优先算法来爬取页面,具体思想如下:


  首先,在爬取之前,需要对即将入列的url链接名称进行分析,只有经过初步筛选的、符合中医药语义的url才会被加入待爬取队列(urllist)中。


  其次,在爬虫保存页面之前,对内容进行分词分析,若分词符合中医药语义达某一阀值,则认为该页面内容符合中医药语义,判定为有效并保存。如此可有效降低无关网页的数量。


  2.2.3基于正则表达式的url分析在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。在本文的研究中,我们需要编写正则来匹配在页面中提取的url,来判断是否为系统所需的资源url,以便做下一步的分析。


  3体系结构的设计及程序的逻辑分析


  综合以上章节,在体系结构方面,我们可以将整个中医药数据搜索系统划分为两个部分,一是对外展示以及提供搜索服务的客户系统。二是对内提供工作管理以及后台数据采集的数据服务系统。


  3.1中医药数据采集服务系统对于服务系统,其本质,就是本文第2章所述的,一种基于垂直爬虫的信息采集系统。我们将它定位为整个中医药信息采集系统的核心,他承载着整个系统最核心的功能,例如基于广度优先算法的爬虫程序主体、基于正则的中医药行业资源url的筛选、中医药行业语义分析、以及对资源页面的采集、整理、存储和索引。


  系统以CS模式进行构建,也就是说,任何需要对本系统进行管理的计算机必须安装软件包后才能具有管理、采集、更新的权限,这就杜绝了将管理端暴露在互联网中的安全风险,从另一方面来说,虽然CS模式牺牲了一部分在管理上的便捷性,但是以此换来了系统管理的安全性和隐秘性。其系统架构见图1。


  图1系统模块图


  由图1可知,数据挖掘模块,是中医药信息采集服务系统核心模块,在系统运作时,对于该模块,我们可以做如下设定:


  第一步,从种子库(sitelist)中选取一站点读取首页,通过爬虫做三件事:①爬取页面中的所有超链接,根据正则规则筛选出本站资源页面的超链接存入待爬取列表(urllist),并记录其父页面以及深度;②保存页面数据以及url至数据库的原始数据表中(DataList);③非本站链接根据其语义分析结果,凡是符合中医中药类语义的链接存入待爬取站点列表(sitelist)。


  第二步,爬取urllist列表中的每一个url,重复第一步。


  第三步,根据事先设定,达到某一深度后停止爬取urllist。


  第四步,在sitelist中选取下一站点,重复第一到第三步。


  第五步,根据事先设定,在满足某一条件后停止爬行。


  其程序流程图见图2。


  图2数据采集模块程序流程图


  由图2可知,在整个数据采集模块中,爬虫处理程序,又是其中的一个核心功能,在系统运作时,其不断地重复以上第一步中所有的步骤,其程序流程图见图3。


  图3爬虫运行时程序流程图


  在整个数据采集完成工作后,我们需要调用数据标准化及索引模块对在数据库中存放页面内容的原始数据表(DataList)进行整理、归档以及索引,生成最终的内容表(FinalList),以供客户系统调用。


  3.2中医药数据采集客户系统对于客户系统,不同于管理系统,其便捷性和通用性是我们首要考虑的因素,因此我们可以采用BS模式构建一个web服务系统,从而使得用户可以在任何地点通过任何设备访问中医药数据采集的页面。


  系统可以.Net为基本架构,以SQL-SERVER为页面采集的存储数据库,在客户发起访问时,返回类似百度的搜索界面,客户于搜索框内发起搜索,系统将搜索请求提交回服务端,并在内容表(FinalList)搜索,最后将结果以列表方式返回用户浏览器界面。这就完成了一次用户请求。


  4结论


  在当今信息化高速发展的今天,我们进行了在互联网平台中进行中医药信息数据挖掘研究工作的初步探索。


  经过一系列的理论研究和局部试验,我们发现,通过对该问题进行一系列的分解后,大致可以分为算法研究、体系结构分析、以及程序实现几个方面,而程序实现由包括主函数构建、程序协同、以及平台建设等步骤。


  在本文中着重对算法研究以及体系结构分析进行了探讨,在程序实现方面给出了大致流程和方向,奠定了整个系统的架构基础,为下一步的具体实现进行了有价值的先期铺垫。本文来自《中国中医药信息》杂志

打印此文 关闭窗口
很牛学术网 联系我们 文献下载器
返回顶部
扫一扫