苏兴华
[摘 要] 对于组织较随意、内容也不尽相同的生产信息,处理方式不同于数据库中定义明确的结构化数据,所以引入人工智能和模式识别领域中的向量表示法用于描述非结构化数据;采用基于TF-IWF的关键词提取算法,将每个短信用向量的形式描述出来,以此来实现了非结构化数据的语义检索。该文创造了一种基于语义相似度的信息检索算法,用以解决非结构化文本信息无法直接采用传统的SQL语句进行检索的问题,实践应用表明该方法具有较高的准确性。
[关键词] 非结构化;向量;数据库;检索
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2018. 23. 067
[中图分类号] G203 [文献标识码] A [文章编号] 1673 - 0194(2018)23- 0159- 03
0 前 言
川庆钻探长庆钻井总公司的钻井队大多地处偏远,通过电脑及时上传井队工况比较困难,常用手段是钻井队长或信息员通过短信方式向主管领导汇报井队工况,领导再通过短信或电话方式对井队的问题进行具体批示。只要钻井队所处地区有手机信号即可,实用性较强,但面临的主要问题是短信内容的非结构化特性,短信内容发送后只能保存在发送者和接收者的手机中,不利于信息共享及日后的检索和查证。当前信息化发展进入大数据时代,大量企业知识和成功案例蕴含在井队用户的汇报和领导批示的交流短信中,因此很有必要将这些短信内容收集起来,整理入库,实现规范化管理,便于信息共享、信息检索、数据溯源,更进一步可以进行数据深度挖掘,总结和发现数据中蕴含的知识,固化已有的工作经验,为以后的工作提供参考和指导,从而真正形成有效的企业数据资产。
通过搭建短信应用服务平台,汇集现场工况短信信息;对于短信的非结构化特性,可以采用增强型朴素贝叶斯网络算法,对垃圾、骚扰短信自动屏蔽;通过先进的语义分类技术对短信内容进行处理,用搜索技术实现了对非结构化短信数据的语义检索;通过结合本领域的专业术语词典,提出了改进的KNN分类算法;根据人工审核的结果进行机器学习,自适应的升级更新,改良分类效果。最后把正常的短信自动推送到相关领导的移动终端上,便于领导做出准确的判断和科学的决策。
1 语义向量模型
传统的向量空间模型(VSM)基本原理是在构造文档向量和查询向量的基础上,利用匹配函数计算它们之间的相关程度即相似度。研究中借鉴传统VSM的思想,根据本体自身特性,把文档向量和查询向量转换成由本体概念和属性组成的语义向量,并分别计算概念相似度和属性相似度,在此基础上实现语义相似度的检索算法。
由于短信数据库中存储的是短信/彩信等非结构化数据,这在检索时面临的问题与以往关系型数据库里存放的结构化数据检索存在很大的区别,如果不能从语义的角度来表述和搜索文档内容,单纯简单的采用SQL语句的实现方法则难以为用户提供满意的检索结果。本文采用了一种基于语义相似度的信息检索方法,在语义向量中考虑概念的属性等信息,分别计算语义向量的概念和属性相似度并进行综合处理,以获得向量间的语义相似度。实际应用结果表明此方法具有较理想的效果。
1.1 语义向量的查询
常规检索过程中, 搜索引擎对用户输入的查询采用基于同义词、近义词以及用户日志等方法进行扩展,在一定程度上能有效帮助检索系统进一步定位用户的查询意图,为检索提供更多辅助信息。
用户输入的查询一般包括多个关键字,它们是对用户查询意图的描述,通常包含被检索对象的关键字、关键属性及其取值。例如用户在查找时输入“长庆钻井总公司”,在抽取查询语义向量时,提取用户输入的关键字, 对应到本体中的概念及属性, 如“长庆钻井”为本体概念“总公司”的属性的取值。对用户的查询进行分析和语义扩展后,系统提供友好界面以交互的方式进一步协助用户确定其查询的明确语义, 这种方式可以缩短检索时间,并提高检索效率。用户查询扩展的语义向量如图1所示。
2 短信语义处理
经典向量空间模型对文档进行预处理时用多个索引词组成的向量表示文档对象。为提高检索准确率,在此基础上对数据庫中的短信进行语义预处理,包括提取每篇短信的语义特征向量、对短信进行语义分类以及建立语义索引。
2.1 短信语义特征向量抽取
对短信进行预处理时, 借鉴经典向量空间模型的思想,使用本体库替代包含关键词条的字典,利用文档描述的概念及其属性组成的语义向量替代文档,对短信内容进行抽取和语义化。与用户查询的处理方法类似,每篇短信都有特定的内容,短信的每一部分也对某一概念实例进行描述,结合统计和语义分析的方法提取关键词,使用本体中的概念及属性进行抽象和概括。对每个概念实例而言,从短信中提取其属性及属性值,组成刻画和描述短信内容的语义向量。
2.2 短信语义分类和索引
为了提高检索效率, 对短信进行语义分类,以提供有效的短信组织和管理手段。在短信语义特征向量抽取结果的基础上,以本体的层次概念树为分类依据, 对已抽取语义特征向量的短信进行分类, 如图2 所示。通常情况下每篇短信的语义特征向量都包含多个本体概念及其属性,在每个概念对应的类中建立该短信的映射, 从逻辑上为短信库建立与本体对应的层次管理结构,为短信语义索引提供依据。
为了便于检索, 为已分类的短信建立语义索引。首先将本体概念放人索引文件, 按照字典序排列, 并建立一个有序链表指向包含该概念的短信语义特征向量。其次, 为索引文件中的概念建立指向实例链表的指针, 从而在检索过程中通过该指针找到用户检索的对象而不必遍历整个短信集合, 提高检索效率。最后将该短信语义特征向量与其对应的短信链接起来。
3 基于语义相似度的短信检索
在基于语义相似度的短信检索中,使用向量空间模型的“部分匹配”策略,得到用户查询和短信的语义向量后,对向量中的概念和属性分别进行处理。考虑不同概念实例以及概念的可比属性之间的相关程度,分别计算其相似度,作为取舍短信的依据,完成语义检索。
3.1 概念相似度
本体使用层次化的树状结构描述概念之间的逻辑关系,这种语义化的概念树为检索算法提供语义基础。在检索过程中不同的概念之间也有一定的相似性和相关性,因此需要处理概念树中祖孙节点、兄弟节点等不同类型的关系,考虑用概念间的相似度对其进行描述和量化,以提高检索的准确率。为了计算概念相似度, 做如下定义:
定义1 在本体概念的树状层次结构中, 如果概念A和概念B之间存在这样的关系: A是B的祖先,则称A和B为同支概念(Same-Branch Concepts)。概念A称为A和B的最近根概念,记为R(A,B)。而A、B之间的距离d(A,B)=dep(B)-dep(A),其中dep(C)为概念C在层次结构中的深度。如图3(a)所示。
定义2 在本体概念的树状层次结构中,如果概念A和概念B之间存在这样的关系,A不是B的祖先且B不是A的祖先,则称A和B为异支概念(Different-Branch Concepts)。 如果概念R是A和B共同的祖先,且是符合此条件的所有节点中距离概念树根节点最远的一个,则称R为A和B的最近根概念,记为R(A,B),A、B之间的距离d(A,B)=d(A,R)+d(B,R),如图3(b)所示。由此可知,本体概念树中任意两个概念的关系有且只有同支概念、异支概念以及相同概念3种情况。
定义3 概念C称为概念A和B的语义相关概念, 当且仅当C满足如下条件,当A、B为如图3(a)所示的同支概念时,C在以A为根的子树中且不在以B为根的子树中;当A、B为如图3(b)所示的异支概念时,C在以R为根的子树中且不在以A或B为根的子树中,如图3(c)所示。
在计算概念相似度时,对同支或异支概念而言,随着概念间距离的增大,两个概念之间的关系越来越疏远,概念相似度也越来越小,是关于概念间距离的减函数。两个概念的最近根概念的深度越大,表示它们拥有的公共属性越多,因此概念相似度也是关于最近根概念深度的增函数。
综上所述,定义概念A和B之间的概念相似度如下:
Simp(P,Q)=
1- × × ,d(A,B)≠0,A,B如4(a) 1, d(A,B)≠01- × × ,d(A,B)≠0,A,B如4(b)
其中,dep(R(A,B))为A和B的最近根概念深度;d(A,B)为A和B之间的距离,取值均为非负整数;son(C)表示本体概念树中以C为根的子树的所有节点数;参数α、β调整dep(R(A,B))和d(A,B)的权重,取值范围为(0,1];由专家根据相应的领域知识设定;司马Simc(A,B)的取值范围为[0,1]。
3.2 属性相似度
每个本体概念都有多个不同的实例,它们的区别在于属性取值的不同。不同概念的实例也可能包含相同的属性,因此在比较两个实例之间的相似性时,仅有概念相似度并不够,还须考虑概念属性之间的相似度。定义如下:
定义4 设本体概念C有实例I,其对应属性P1的值为p1,…,对应属性Pn的值为Pn,则表示该实例I=C[P],P为属性向(p1,p2,p3,L,pn).
在计算属性向量P=(p1,p2,p3,L,pn)和Q=(q1,q2,q3,L,qn)的相似度时, 只需要处理它们的公共属性即可。首先把P和Q对应的属性向量转化为具有公共属性的向量P′=(p1′,p2′,p3′,I)和Q′=(q1′,q2′,q3′,I) ,然后根据本体中属性的定义及属性值的相似度计算, 对 和 中的相应属性值进行比较和计算, 得到属性向量P和Q之间的相似度如下:
Simp(P,Q)=Simp(P′,Q′)= ×Simr(pr′+qr′)
3.3 语义相似度
计算语义向量的概念相似度和概念实例的属性相似度后, 能够得到语义向量间完整的语义相似度。设语义向量V1(A1[P1],A2[P2],A3[P3],L,Am[Pm]),V2(B1[Q1],B2[Q2],B3[Q3],L,Bn[Qn])在计算过程中,首先依次比较用户查询语义向量中的每个概念实例与被检索的文本特征语义向量中所有概念实例, 取其中的最大值作为该概念与文档特征语义向量的相似度。然后对语义向量中的各概念与文本特征语义向量的相似度取平均值,计算出用户查询语义向量V1和文档特征语义向量V2的语义相似度。其中ω是表征概念相似度和属性相似度的权重,取值范围为[0,1]。
Simv(V1,V2)= (ω·SimC(Ai,Bj)+(1-ω)·Simp(Pi,Qj)) 整個过程的主要算法如下:
/基于语义相似度的检索算法主要步骤描述
Begin/*Algorithm begin*/
Init(V1);Load(V1);//初始化并加载用户查询语义向量
Load(Selndex);//加载文档语义索引文件
Init(V2);//并初始化语义向量V;
n=0;
//按索引文档检索
While not eof(Selndex)do
//对索引中第n条概念的每一个语义向量进行处理
for each V of Selndex[n]do
if log(V)=0then //该向量未被处理过
begin
V2=V;
/*计算V1,V2中任意两个概念Ai和Bj的概念相似度*/
Get SimC (Sim(Ai,Bj));/*计算V1,V2中任意两个概念Ai和Bj各自对应的属性向量Pi和Qj的属性相关度*/
GetSimP(Simp(Pi,Qj));
//计算V1,V2的语义相似度
GetSimV(SimV(V1,V2));
InsertTo(S);//按降序插入列表中
endif i=i+1; endwhile;
output(S,n);/输出S中前n个作为检索结果
End /* Algorithm end*/
主要参考文献
[1]李庭春.生产企业管理信息系统的应用及其发展[J].企业改革与管理,2008(3).
[2]陈飞,李建,余一帆,等. 基于WEB的石油生产信息系统[J]. 中国科技信息,2006(1).