信息追凶DB2 PureXML 技术在刑侦破案的应用 |
|
级别: 中级
吴敏达 (wuminda@cn.ibm.com), 信息管理软件高级技术顾问, IBM
2008 年 6 月 04 日
" People lie, Numbers don't ",看过美国连续剧 NUMB3RS 后都会为运用信息技术来进行刑侦破案的方法印象深刻。随着信息时代的到来,信息化发展也为公安工作带来了新的挑战和机遇。如何对公安数据资源进行整合和复用,实现全局性数据的综合应用、各种信息自动关联以及各类线索的自动挖掘的功能,从而为信息办案提供综合应用的结果?本文结合实例介绍了利用 DB2 PureXML 技术进行信息破案的相关技术。
信息破案的重要部分就是数据线索的关联,美国 911 恐怖袭击后的嫌疑人分析就是利用信息线索关联实现快速破案。随着“金盾工程”的推进,逐步建成了八大信息资源库的综合资源数据库平台,这就有了信息线索关联分析的基础,同时也有迫切的需求。
公安的人口基本信息资源库、出入境人员资源库、机动车驾驶人信息资源库、警员基本信息资源库、在逃人员信息资源库、违法犯罪人员信息资源库、被盗抢汽车信息资源库、安全重点单位信息资源库包含了很多关联性分析,这些关联具有相应的扩展性。
我们先来看一个例子来了解信息关联的含义。如图我们看到三个孤立的信息数据,他们来自不同的数据源。第一个人的记录来源于信息源 A 的 2002 年的数据,主键编号 701;第二个人的记录来源于信息源 B 的 2003 年的数据,主键编号 9103;第三个人的记录来源于信息源 C 的 2004 年的数据,主键编号 6251。
图 1. 没有信息关联情况下的源数据
这种没有上下文的孤立信息在案件侦破中很难发挥重要作用。但是如果通过数据清洗和线索关联,就会发现这其实是一个有联系的上下文信息。比如通过电话关联,会发现 B-9103 的数据和 C-6251 是关联的;通过驾驶证号关联,又会发现 A-701 和 C-6251 是关联的。在整个信息关联的背后,一个完整的上下文信息就浮现出来,这给刑侦破案带来巨大的帮助。
表 1. 上下文信息的累计
元素 | 内容 | 来源 |
---|---|---|
姓名 | Marc R Smith | A-701 |
Randal Smith | B-9103 | |
Mark Randy Smith | C-6251 | |
地址 | 123 Main St. | A-701 |
456 First Street | C-6251 | |
电话 | (713) 730-5769 | A-701 |
(713) 731-5577 | B-9103 | |
(713) 730-5769 | C-6251 | |
社保号 | 537-27-6402 | A-701 |
驾驶证号 | 0001133107 | A-701 |
1133107 | C-6251 | |
出生日期 | 06/17/1974 | B-9103 |
通过这个例子我们发现这些信息尽管对事物的描述不同,但实际上是对同一事物相互补充的描述,这就是综合信息关联。通过综合信息关联,我们可以把看似孤立的信息联系起来,在本例中,三个不同信息源的信息 A-701、B-9103 和 C-6251 被认为是同一个人相关信息。
图 2. 综合信息关联场景举例
综合信息关联在公安的信息应用中有至关重要的作用,在实现上有以下特点:
- 新的数据能够与历史的数据和线索建立联系。
- 上下文的累积是实时实现的。
- 数据发现数据,不是通过已知的查询。
- 线索发布并展现给用户。
这些关联性的分析很难用 E-R 模型来描述,因为 E-R 模型本质上是一个二维的模型,通过一系列二维的关系组合来描述复杂实体对象,每个表所代表的所有实体在建模设计时没有差异性。由于在关联分析时,这种个体间的差异性不是仅仅表现在属性上,而且涉及到结构和关系,如果采用 E-R 模型,则需要为有差异的实体建立不同的表和对应关系。数据库的结构变得十分复杂,数据库中的信息变得难以理解。
XML 是一种崭新的数据模型,这种新型的数据组织方式在信息管理领域应对信息的复杂性、可理解性和灵活性的挑战开启了新的道路,迎合了技术发展的方向和潮流。
在综合信息关联的数据模型中只有采用 XML 模型才能真正实现公安业务的需求,这是基于以下几个原因:
- 数据模式易变,信息结构的不确定性和线索本身的扩展性。
- 数据在本质上就是层次的,包含着来自不同数据源的信息。
- 数据所代表的是业务对象,其中的部分信息如果脱离了业务对象的上下文环境就没有意义。
- 信息的属性非常分散。
- XML 是易于理解的数据,可以方便地被使用。
- 可以保留所有源系统的信息,同时保留源系统的主键。
清单 1. 把关联分析用 XML 模型来进行存储线索
<?xml version="1.0" encoding="UTF-8" ?> <clue id="101"> <信息源A id="701"> <姓名>Marc R Smith</姓名> <地址>123 Main St</地址> <电话>(713) 730 5769</电话> <社保卡号>537-27-6402</社保卡号> <驾驶证>0001133107</驾驶证> </信息源A> <信息源B id="9103"> <姓名>Randal Smith</姓名> <出生日期>06/17/1974</出生日期> <电话>(713) 731 5577</电话> </信息源B> <信息源C id="6251"> <姓名>Mark Randy Smith</姓名> <地址>456 First Street</地址> <电话>(713) 731 5577</电话> <驾驶证>1133107</驾驶证> </信息源C> </clue> |
众所周知,DB2 从 9 版本开始实现了 PureXML 技术,开辟了 XML 数据存储和管理的新天地,是第一个以 Native 方式同时支持关系型数据和 XML 数据的双引擎数据库。在存储方面,DB2 PureXML 可以将 XML 进行 Native 方式存储。在应用访问方面,支持 SQL 和 XQuery 两种访问方式。
管理着数百万的 XML 文档的 XML 应用程序并不罕见,因此要提供高查询性能就要为大量的 XML 数据编制索引。DB2 支持在 XML 列上建立路径特定的索引,因此元素和属性常用作谓词且可以编制跨文档连接的索引,利用索引可以快速直接访问文档中的节点,并避免文档遍历。
由于 DB2 PureXML 从根本上解决了 XML 模型的存储、管理和查询的技术问题,极大提高了 XML 模型的性能,这使得 XML 能够在公安综合信息关联应用中得到真正应用。
例如我们可以把清单 1的线索存放在 DB2 pureXML 数据库表 NUM3RS 的 TEST 字段中,然后可以使用 XQurey 轻松得到线索的相关信息,包括具体信息和与其他源系统的关联信息。查询场景和代码参见图 3和清单 2。
图 3. 利用 DB2 PureXML 中的 XQuery 对线索库进行查询
清单 2. 利用 DB2 PureXML 中的 XQuery 对线索库进行查询
xquery for $i in db2-fn:xmlcolumn("NUM3RS.TEST") let $tel := $i//电话/text() where $tel = "(713) 730 5769" return $i |
采用 XML 模型以后,可以很容易实现线索的扩展。比如开始没有根据护照号进行关联,生成了两个独立的线索,每个独立线索都是独立的 XML。新增护照号关联以后,非常容易地通过 DB2 的 XQuery transform 来实现 XML 拼接成为一个完整的线索。
图 4. 上下文关联具有扩展性
清单 3. 利用 DB2 PureXML 中的 XQuery transform 进行线索的拼接
update NUM3RS set TEST = xmlquery('transform copy $new := $i modify do insert db2-fn:sqlquery ("select TEST FROM NUM3RS where CID=1000")/clue into $new return $new' passing TEST as "i") where CID = 2000 |
架构设计如图 5,通过 IBM Information Server 对源系统的数据进行清洗、标准化后,进行上下文的分析,最后进入到 DB2 pureXML 的线索资料库中,分析和展现可以采用 IBM 的数据仓库平台 DB2 Warehouse 来完成。
图 5. 系统架构设计
如图 6,运用 Info 2.0 和 Mashup 相关技术,还可以轻松融合不同信息源并展示出复杂的线索关联,开发出基于 Web 2.0 的智能创新应用。
- Resource Network :用来定义不同的信息源,保存着各种信息源的关系。这些关系一部分是数据结构间固有关系,另一部分是跟随应用不断扩展的。
- Case Network Builder :揭示了具体案件的侦破思路和线索关联,采用 Mashup 技术在整合的界面展现出不同信息源的丰富交互。
图 6. 基于 Web 2.0 的智能创新应用
通过综合信息关联和 DB2 PureXML 的存储和查询技术,我们可以找到信息关联并方便地运用。刑侦破案除了会通过查询方式来利用信息关联,也会涉及到处理大量的文本信息,比如对案件相关人员的访谈记录、对嫌疑人的审讯笔录等。如何在这些文本信息处理中使用已知的综合信息关联,提高破案效率呢?
IBM LanguageWare Miner for Multidimensional Socio-Semantic Networks (以下简称Miner)提供了信息关联网络中语义分析的信息处理解决方案,它通过获取已知节点的信息数据,推断出新的信息节点,从而完成整个信息网络中的语义关联。
Miner 提供了信息关联网络中涉及到的语义和词典的映射功能。首先需要把已知的信息节点构建成词典,词典是基于 XML 的模型,存放在 DB2 PureXML 中。词典内容分为以下两部分内容:
- 节点部分:存放对同一内容不同描述的定义,如 Mang David、David Mang、David F Mang、Dave Mang、David 和 Dave 都是表述同一个人。这部分 XML 信息会被 Miner 编译成为 *.lex.dic。
- 关联部分:存放信息节点之间的关系,如 Mang David 和 Marc R Smith 是老乡,Mang David 和 Emma Doyle 同住在一起。这部分 XML 信息会被 Miner 编译成为 *.sem.dic。
针对本文的综合信息关联部分的例子,在 DB2 PureXML 存放语义词典内容如下所示。
清单 4. DB2 PureXML 中建立语义分析词典
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <lsxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="lsxml.xsd"> <relations> <graph name="关联"/> </relations> <nodes> <node id="A-701" type="人"> <name text="Marc R Smith"/> <property name="地址" value="123 Main St"></property> <property name="电话" value="(713) 730 5769"></property> <property name="社保卡号" value="537-27-6402"></property> <property name="驾驶证" value="0001133107"></property> <link rel="关联" id="B-9103"/> <link rel="关联" id="C-6251"/> </node> <node id="B-9103" type="人"> <name text="Randal Smith"/> <property name="出生日期" value="06/17/1974"></property> <property name="电话" value="(713) 731 5577"></property> <link rel="关联" id="A-701"/> <link rel="关联" id="C-6251"/> </node> <node id="C-6251" type="人"> <name text="Mark Randy Smith"/> <property name="地址" value="456 First Street"></property> <property name="电话" value="(713) 731 5577"></property> <property name="驾驶证" value="1133107"></property> <link rel="关联" id="A-701"/> <link rel="关联" id="B-9103"/> </node> </nodes> </lsxml> |
我们会发现 清单 4 和 清单 1 的内容十分类似,不同的是在语义分析词典中会包含下列指定的 XML 元素:
- 节点:每个节点要有唯一 ID 标识,在本例中就是用信息源和主键编号作为 ID。类型属性是用来分类,而名称则是用来定义界面的显示。
<node id="A-701" type="人"><name text="Marc R Smith"/></node>
- 属性:每个信息节点都可以有很多附属的信息,这些信息可以作为属性部分列出。
<node id="A-701" type="人"> <property name="地址" value="123 Main St"></property> <property name="电话" value="(713) 730 5769"></property> <property name="社保卡号" value="537-27-6402"></property> <property name="驾驶证" value="0001133107"></property> </node>
- 关联:一系列的关联揭示出复杂的信息网络,每个连接都是描述两个信息节点之间的关系。
<node id="A-701" type="人"><link rel="关联" id="B-9103"/></node>
多级关联之间的权重可以通过 XML 的属性的配置实现,配置可以针对特定名称的关联或者用通配符表示。在多级关联中,每次关联都会使关系权重衰减,该参数就是 strength。不同关联的连接可以人为修改 strength,这个参数就是 changing。
<relation name="manager" strength="0.7" changing="0.5" /> <relation name="*" strength="0.4" changing="0.2" />
关联的种类分为:有方向的关联、对等关联和树状关联。
- 有方向的关联:是最常见的关联方式,需要说明正向关联和反向关联的名称。
<digraph name="管理" reverse="被管理"/> <node id="John Smith"> <link rel="管理" id="Mary Allen"/> </node> <node id="Mary Allen"> <link rel="被管理" id="John Smith"/> </node>
- 对等关联:用来表示对等的关系。
<graph name="关联"/>
- 树状关联:表明有层次的关联方式,需要说明根节点、正向关联和反向关联的名称。
<tree name="manages" reverse="manager" root="IBM"/>
- 有方向的关联:是最常见的关联方式,需要说明正向关联和反向关联的名称。
下图可以看到在 DB2 PureXML 中建立好语义分析词典后 Miner 的界面,我们可以直观浏览每个信息节点的具体内容,更重要的是可以浏览到每个信息节点相关联的其他信息节点。
图 7. 语义分析词典
在使用 Miner 做语义分析的时候,只需要打开相关文本文件,如访谈记录或者审讯笔录,Miner 就会智能分词并根据词典中的线索提炼出关键信息突出显示。点击这些关键信息节点,就可以浏览相关联的信息内容。在 图 8 右边显示的是 Miner 推断出的重要信息节点,这些推断是根据上下文和词典智能推断的。举例而言,即使信息A内容没有在文本中出现,Miner 也会根据文本中多个与信息 A 关联的其他信息节点推断出建议信息 A,而这些建议信息往往是案件侦破的关键所在。通过 Miner 的智能语义关联,极大提高了了刑侦办案效率。
图 8. 信息关联的智能语义分析
在刑侦破案领域,信息共享是非常重要的,信息不能被方便的使用就等同于没有信息。当发现无法快速地查询几百个公安和司法数据库的罪犯信息,所采取的行动只能是地毯式的搜查,大大降低了破案的效率。因此资源整合、信息共享正成为公安信息化的主要发展方向。建立及时的、完整的、准确的信息共享平台会极大增强刑警统一指挥、信息共享、协同作战和处置紧急情况、突发事件的快速反应能力。
XML 作为一种数据格式在上世纪 90 年代中期出现,一开始其主要的目的应用于系统间的数据交换。为便于数据交换,其设计包含了几个主要的特点。首先是采用自描述的标签式数据描述方式,数据本身描述自己的含义,从而使数据的可读性大大提高,十分易于人或程序理解。另外 XML 采用层次型(树型)的方式组织数据,通过层次关系体现出数据与数据之间的关系。层次模型能够比较清晰地描述复杂对象。而且 XML 十分灵活易于扩展,数据交换结构的变化不会影响到应用程序。
信息共享平台可以通过XML的Schema来定义 XML 模型的标准,通过 Schema 来定义交换数据所包含的信息字段以及是否符合标准,比如法庭审讯时间的字段类型等。经过近 10 年的发展,XML 已经成为数据交换的事实标准,国际上形成了很多行业性的 XML 技术标准,对信息技术产生的很大的影响。在司法和公安领域进行数据交换的行业标准称为 Global Justice XML Data Model,国外已经有使用该标准构建公安信息共享平台的案例。
清单 5. Global Justice XML Data Model 代码示例
<xsd:element name="ArrestArraignmentTime"> <xsd:annotation> <xsd:documentation> A time a subject is due to appear in court after an arrest to answer the charges filed. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:time"/> </xsd:simpleContent> </xsd:complexType> </xsd:element> |
由于 DB2 pureXML 对于 XML 的 Native 方式存储,XML 报文可以作为整体、无需额外开销地存储在 DB2 的 XML 的字段中,并且在存储时对 XML 进行了解析。这样既节省了将 XML 拆分映射到数据库表的麻烦,又能提供对 XML 任意节点的查询。同时一次解析多次查询也提高了对 XML 的查询速度。这些交换的 XML 可以被 DB2 数据库原生态地管理起来。应用可以非常便捷地将 XML 以灵活的格式送入“信息高速公路”(企业总线),或者从企业总线中获得 XML,信息共享平台的能力大大增强了。信息中心可以采用 DB2 Warehouse 提供信息服务和数据分析服务。整个平台的架构如下:
图 9. 信息共享平台架构设计
XML 数据不仅具有灵活性和易理解性等优势,在 DB2 pureXML 中也非常容易被查询和使用。XQuery 是查询 XML 数据的一种新语言,非常容易被业务人员所理解。
下面以 Global Justice XML Data Model 为例查询身高超过 5 英尺 11 英寸的罪犯。我们可以直接在 DB2 中执行以下 XQuery 语句,在代码中除去了命名空间 NameSpace 的声明使得逻辑更加清晰。执行结果返回两条罪犯记录,一个罪犯身高为 6 英尺,一个罪犯身高为 9 英尺 1 英寸。
清单 6. 查询身高超过 5 英尺 11 英寸的罪犯
XQUERY
for $doc in db2-fn:xmlcolumn("DB2INST1.MCJE.DOCUMENT")
/Incident/Participants/Participant/Subject
where ($doc/PersonPhysicalDetails/PersonHeightMeasure gt "511")
return
<Perpetrator subjectheight = "{$doc/PersonPhysicalDetails/PersonHeightMeasure}">
{$doc/PersonName/PersonPrefixName}
{$doc/PersonName/PersonGivenName}
{$doc/PersonName/PersonMiddleName}
{$doc/PersonName/PersonSurName}
</Perpetrator>
|
清单 7. 返回结果示例
<Perpetrator subjectheight="600"> <PersonPrefixName>Mr.</PersonPrefixName> <PersonGivenName>Berni</PersonGivenName> <PersonMiddleName>K</PersonMiddleName> <PersonSurName>White</PersonSurName> </Perpetrator> <Perpetrator subjectheight="910"> <PersonPrefixName>Mr.</PersonPrefixName> <PersonGivenName>Cyc</PersonGivenName> <PersonSurName>Lops</PersonSurName> </Perpetrator> |
本文从信息破案的热点领域之综合信息关联、智能关联语义分析和信息共享平台进行了 DB2 pureXML 应用的探讨,DB2 pureXML 在公安行业的应用仅仅是个开始,但是我们仍然很欣喜地看到未来的前景。每一种技术都是伴随需求和挑战应运而生,为适应利用信息快速破案的业务挑战,由层次模型与传统的关系型模型结合的 DB2 pureXML 技术开创了崭新的信息应用模式。