智能信息处理系统内核实现

智能信息处理系统内核实现
程 军
1 智能信息处理现状简介
目前网上推出的各种新型服务模式,如智能Agent,智能检索,信息挖掘,信息推送,信息导航,知识发现等功能,其核心问题之一是如何解决信息的自动分类。
关于信息的自动分类技术,主要有两种方法:一种是以美国Salton教授提出的向量空间模型(Vector Space Mode, 简称VSM)理论为基础;一种是基于Agent的超文本分类方法,其基础为自适应反馈理论(Adaptive Resonance Theory, 简称ART)。
目前网上的分类系统,大部分是采用VSM方法。利用词表作为向量空间中的变量,由于中文词表非常巨大,一般有几十万词,因此此方法的主要问题之一是速度慢。
本文所介绍的内核也是采用VSM方法,但由于利用了汉字的特点,只用文件中的汉字作为向量空间中的变量;另外采用两级索引,分别是文件索引和字索引,所期望达到的目标主要是在保障查全率和查准率的基础上,达到较快的检索速度。测试以"中美百万册书项目"数字化加工的图书网页为基础,选择了其中220本书中页面内容较多的文件,并涵盖了《中图法》的22个大类,共24518个文件,每个文件平均大小为3K,总共75M 数据的条件下,建立索引大约需要2分16秒,查询时间都在亚秒级;另一特点是索引文件小,一般仅是原文件的1/6左右。测试环境为:Pentium 1.6G PC机,运行速度主要与CPU计算速度相关。
此内核主要包括两部分:一部分是创建索引,指对原始文件建立索引文件,以用于检索;另一部分是匹配检索,利用创建好的索引文件,和用户选择的新文件进行匹配,找到原始文件中与之相似的文件。
2 创建索引
字的出现频率与计算文件相关度有很大关系,因此首先要找到那些在各种文件中出现频率都很高的字,将其排除;然后根据检索需要,对选择的所有原始文件,按顺序建立三个索引:文件编号索引、文件索引和字索引。
2.1 统计字频表
通过对人民日报电子版83 456 990个文字进行统计,我们发现除了"的"字等虚字外,其它字的出现频率是有一定规律的(见下表)。高频字中有许多都是虚字,在所有种类的文本中出现的频率都非常高,对于文本的分类和检索意义不大,所以在对文本进行预处理时将其去掉。低频词在绝大多数文件中都没有出现,为了提高检索速度,将其去掉,其中有2600多字的出现频率在0.0001%以下,将这些字也去掉。

2.2 建立文件编号索引
此索引非常简单,主要就是记录下数据库中包含的所有文件路径。通过选择目录,进行遍历,将其中的所有网页文件路径保存下来。结构为:
文件路径: A B C ……
文件编号: 1 2 3 ……
通过文件编号可以快速地查找到此编号的文件路径,以便访问此文件,这个索引文件在建立索引和检索时都要用到。
2.3 创建文件索引
对于每一个网页文件,对其各个字的出现次数进行统计,找出出现频率最高的前20个字,将字以及其出现次数、次数的平方和记录下来,组成文件索引。这些字组成了文件的向量空间,在后面进行相关性排序中与新文件的空间向量进行计算,获得其向量夹角的COS值,以便确定相关性。
文件索引 文件1 字a1 出现次数,字a2 出现次数,……,字a20 出现次数 次数的平方和
文件2 字b1 出现次数,字b2 出现次数,……,字b20 出现次数 次数的平方和
文件3 字c1 出现次数,字c2 出现次数,……,字c20 出现次数 次数的平方和
……
建立索引时,最花费CPU时间的是建立文件索引,因为要读入每个字,计算出现次数,还要排序,找出前20个。笔者利用汉字编码的连续性(连续两个字符的第一个字符 ASCII 码大于 175 且第二个字符ASCII码大于 160),将汉字进行散列,这样只需定义一个数组: int count[72][95]; 既可容纳下标准汉字字符集GB2312的所有汉字的出现次数。对于每个汉字,只需要计算两次减法,一次累加,即可完成计数(count[0x**-0xb0][0x**-0xa1]++;)。排序则利用冒泡排序法,虽然在排序算法中它是最臭名昭著的算法,但在这里由于我们只需要找到出现频率最高的20个字,它反而成了效率最高的算法,无论多大的文件,只需要查找20趟,就可以完成排序。
2.4 生成字索引
对文件索引所纪录的数据进行统计,其目的是找出每个字都出现在哪个文件里。按下面的顺序记录下来,就组成字索引。此文件用于在下面的粗筛选中,找到与新文件在用字上类似的原文件。
字索引 字1 文件a1,文件a2,…… //表示字1在文件a1、a2等出现过
字2 文件b1,文件b2,……
字3 文件c1,文件c2,……
……
3 检索
检索分为两步:一是粗筛选;二是相关性排序。粗筛选主要是找到与新文件可能类似的文件,而相关性排序再计算两者的向量空间夹角,定量地给出两者的相关度。通过采用两级检索,极大的减少了检索时的计算量。因为计算向量时所用的乘法和除法计算速度较慢,如果再计算100万个文件的相关性,根本无法保证检索的秒级响应。粗筛选将候选文件减少到原文件数量的1/1000,这样如果原文件有100万个,经过粗筛选后将只剩下1000个左右,再对这些文件进行向量空间的计算,就完全可以保证检索的秒级响应了。下面对其进行详细说明:
3.1 粗筛选
由于计算向量空间需要较大的计算量,因此先对可能相似的文件进行粗筛选,能够大大减少计算量,提高程序匹配速度。具体步骤如下:
① 首先用户选择一篇新文献,然后要求系统找出库中相似的文件。
② 统计新文献中所有字的出现频率,找出前20个出现最多的字。
字1 出现次数,字2 出现次数,……,字20 出现次数
③ 从字索引中找出这20个字,对后面所跟的文件代号进行查找,然后再对每一个文件统计出相同的字数,得到如下结果:
文件1 相同的字数
文件2 相同的字数
文件3 相同的字数
……
④ 如果此文件中出现n个以上相同的字,则作为候选对象。在我上面所说的样本空间中,经过测试,向量空间维数为20时,大约在n=8时,能够将候选对象限制在原文件的1/1000左右。按照此原则,如果库中有100万个文件,经过粗筛选后大约剩下1000个文件。再对这1000个文件进行相关性排序,就可以保证检索响应在秒级以内了。
3.2 相关性排序
利用文件索引计算新文献的向量Xm与原文件向量Xn (n=1,2,3┈)的相关性,计算余弦
为两文件所对应向量空间的积
为新文件的向量长度
为原文件的向量长度
根据计算所得的余弦值,我们可以用来判断新文件与原文件信息的相关性,cos值越大的文件,两文件之间的夹角越小,也就与新文件越相关。对排序后的结果给用户返回前100个文件,一般就能够满足用户的需求了。 (责任编辑 皮介郑)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值