基于向量空间模型的信息检索技术作者:张朝阳摘要:向量空间模型是信息检索技术中使用的最原始、最简单、最成熟、最有效的模型,它以文本的向量表示为基础展开后续的计算工作。
本文讲解了文本的向量表示法和文本相似度的计算方法。
在文本检索之前往往需要对原始文本集进行分类和聚类,以减小查找的范围,提供个性化的信息推荐。
本文介绍了最常用的文本分类和聚类的方法。
关键字:向量空间模型,文本相似度,特征选择和特征抽取,文本分类与聚类1.引言信息检索的一般情形是由用户给出检索项,应用程序从系统文档集中查找与检索项最匹配(亦即最相似)的文档返回给用户。
说起来简单,实际上这之间经历了复杂的过程,如图1.1所示。
图 1.1信息检索基本步骤文本预处理包括去除标记,去除停用词,词根还原。
比如我们收集的原始文档是一些HTML文件,则首先要把HTML标签和脚本代码去除掉。
停用词指像“的”、“吧”这样几乎不包含任何信息含量的词。
词根还原指把同一个词的动词、形容词、副词形式都还原为名词形式。
经过词频统计后我们得到每个文档里包含哪些词以及每个词出现的次数。
如图 1.2所示。
图 1.2文档词频统计D表示文档,Wi,j表示单词i在相应文档中出现了j次。
在实际的根据关键词进行信息检索过程中,为避免在每篇文档中使用冗长的顺序查找关键词,我们往往使用倒排序索引,如图 1.3所示。
图 1.3文档倒排序索引W 表示单词,Di,j 表示相应的单词在文档i 中出现了j 次。
建立倒排序索引后,就可以直接根据关键词来查找相关的文档。
找到相关文档还需要对文档进行排序再返回给用户,即要把用户最希望找到的文档排在最前面。
这里引入文档和查询词之间的相似度(Similarity Coefficient,SC )的概念,相似度越大,表明文档与查询词的相关度越大,与用户的需求越接近。
在信息检索的研究与应用中人们用到了很多常用的模型,包括向量空间模型、概率模型、语言模型、推理网络、布尔检索、隐性语义检索、神经网络、遗传算法和模糊集检索。
向量空间模型是最原始最简单的模型,在实际应用中也十分的成熟,它通过把文档和查询词展示为词项空间的向量,进而计算两个向量之间的相似度。
2.向量空间模型2.1.文档向量表示向量空间空间模型由哈佛大学G Salton 提出,他把文档表示为一个向量:11()((),(),...,())i i i n i v d w d w d w d =n 表示文本特征抽取时所选取的特征项的数目。
w i (d j )表示第i 个特征项在文档d j 中的权重。
特征词频率用tf 表示,指特征词在一个文档中出现的频率。
文档频率用df 表示,指出现某一个特征词的文档数量。
显然tf 越大,特征词在文档中的权重就应该越大,而df 越大,表明特征词越不能表示文档之间的差异性,特征词对于文档的权重就应该越小。
经过综合考虑调整之后特征词权重的计算公式为:()i j w d =tf ij 是第i 个文本特征项在文档d j 中出现的频率。
N 为全部文档的数目。
N i 为出现第i 个文本特征项的文档数目。
上述特征词权重计算公式实际上忽略了几外因素的影响:文档长度的差异,文档越长,其中包含的特征词权重就应该越小,因为单个的特征词越无法表示文档全部的特征;特征项长度的差异,一般来说较长的特征项能够表达更为专业的概念,应该赋予更高的权重,而有些短小的特征词虽然出现的频率较高,但往往包含的信息量较少;特征项在文档中出现的位置,显然出现在标题、摘要中的特征词应该赋予很高的权重。
2.2.文档相似度把用户输入的查询关键词同样当成一个文档来处理,把它表示为一个文档向量。
接下来的问题就是如何计算两个文档之间的相似度。
下面介绍几个常用的公式。
内积法:1(,)()ni j ki kj k SC d d w w ==×∑余弦法:(,)cos(,)n i j i j SC d d d d ==距离法:11(,)||n pp i j ki kj k SC d d w w =⎡⎤=−⎢⎥⎣⎦∑上面公式中wki 表示特征项k 在文档i 中的权值。
还有其他的计算方法如Dice 系统法和Jaccard 系数法,用的最多的是内积法和余弦法。
内积法是计算两个文档向量的内积,内积越大相似度越大。
由内积法引出的余弦法是计算两个文档向量之间的夹角,夹角越小相似度越大。
3.文本分类和聚类文本分类和聚类是一种集机器学习、模式识别、统计分析和信息检索于一体的文本挖掘方法。
它对于用户获取信息的作用表现在:(1)合理组织检索结果;(2)提供可视化多文档摘要;(3)加速检索过程;(4)个性化信息推荐。
3.1.特征选择特征选择(feature selection,FS )和特征抽取(feature extraction,FE )是文本分类和聚类的首要任务,具有降低向量空间维数、简化计算、去除噪声等作用。
文本特征提取与特征选择的区别在于:特征项选择是通过判断特征项的重要性来决定是否保留作为最终的特征项;特征值提取是直接使用线性或非线性的变换将冗余或者无效的信息映射到相对较少的维度上去。
特征项选择的方法有:文档频率(document frequency,DF )、信息增益(informationgain,IG )、互信息(mutual information,MI )、2χ(CHI)统计量、期望交叉熵(expected crossentrop,ECE )。
文档频率是包含了特征项的文档数目,当文档频率低于某个设定的阈值时就把该特征项删除。
在实际中一般不直接使用该方法,因为总体上稀有的单词可能在某一类文本中并不稀有,而且包含着重要的判断信息。
信息增益是一种在机器学习领域较为广泛的特征选择方法,是一个基于熵评估的方法,定义为某特征项在文本中出现前后的信息熵之差,其函数公式为:111()()lg ()()(|)lg (|)()(|)lg (|)mi i i mi i i m i i i IG w P c P c P w P c w P c w P w P c w P c w ====−++∑∑∑P(c i )表示c i 类文档在语料中出现的概率,P(w)表示语料中包含特征项w 的文档概率。
信息增益的优点在于它考虑了特征项未发现的情况,即虽然某个特征项不出现,也可能对判断文本类别有影响。
期望交叉熵与信息增益相似,只是他只计算出现在文档中的的值。
令m 表示文档的类别数,P(c i |w)表示文档中出现特征项w 时,文本属于类别ci 的概率,则期望交叉熵的计算公式为:1(|)()()(|)lg()m i i i i P c w ECE w P w P c w P c ==∑如果特征项w 和类别c i 强相关,也就是P(c i |w)大,同时相应类别出现的概率又比较小,则说分类的影响很大,期望交叉熵就大,很可能被选为特征项。
3.2.特征抽取关于文本特征抽取这里只介绍一种方法--潜在语义索引(latent semantic indexing,LSI )。
传统的向量空间模型中,文档集中的文档被抽选为若干特征项,并表示成文档向量,有两个缺陷:(1)向量空间模型假设所有特征项是独立无关的,但实际并非如此。
比如“计算机”和“电脑”字面上有很大差异,表示的含义却很相近;(2)特征项的数目过多,造成向量空间很大,不利于存储和计算。
潜在语义索引对大量文本进行分析,寻找潜在的语义联系,并以此来表示词和文本,达到消除词之间相关性,简化文档向量的目的。
潜在语义索引通过使用奇异值分解(singular value decomposition ,SVD )对文档集矩阵进行计算,提取K 个最大的奇异值及其对应的奇异矢量构成新矩阵,以近似表示原始文档集。
原始文档集矩阵A m ×n ,其奇异值分解表示为:T m n m r r r r nA U S V ××××=××U m ×r 和V r×n 都是下次矩阵,并且一由是A m ×n 的左奇异向量构成,一个由A m ×n 的右奇异向量构成。
r 是A m ×n 的秩。
取一个数k≤r ,A 的k 值近似A k 是A 除了前k 个最大奇异值外的奇异值都为0,可以证明A k 在F 范数下与A 距离最近。
A k 保持了文档矩阵A 中特征词和文档间的内在结构(潜在语义结构),同时又去除了因用户习惯或者语言的多义性带来的“噪声”。
3.3.文本分类先提醒一下文本分类和文本聚类的差异:文本分类事先有一个训练集,供我们来统计计算特征词与类别之间的相关度;而文本聚类不存在预先确定类的概念。
这里介绍文本分类中的KNN 方法。
其基本思想是:给定一个新文本,由算法搜索模式空间即训练文本集,找出与新文本距离最近(最相似)的K 篇文本,最后根据这K 篇文本所属的类别判断新文本所属的类别。
计算新文本与每篇文本的相似度用2.2节中的余弦法。
根据与新文本最近的K 个邻居的类属关系,计算新文本属于每个类的权重公式:1(,)(,)(,)Kj i i j i P x c SC x d y d c ==∑x 是新文本的特征向量,d i 是x 的第i 个邻居。
y(d i ,c i )是类别属性函数,当d i 属于c i 时函数值为1,否则为0。
KNN 文本分类方法简单、有效,而且重新训练的代价较低,在Web 环境和电子商务应用中是很常见的。
3.4.文本聚类传统的k-means 算法是一种已知聚类类别数目的无监督学习算法。
聚类过程为随机选定K 个聚类中心,对样本按距离最小原则进行划分,并迭代更新聚类中心,以使迭代过程向目标函数值最小的方向靠近,从而达到最优的聚类效果。
目标函数一般选取:1(,)i j Ki j j x c J DIS X Z =∈=∑∑K 为聚类数,X i 为属于C j 的聚类样本,Z j 为聚类中心。
DIS (X i ,Z j )的计算使用2.2节中的距离法,p 取2。
k-means 算法的具体步骤为:1)给定大小为n 的数据集X 。
2)选取K 个聚类中心Z j 。
3)以Z j 为参照点对数据集X 按照最邻近方法进行划分,将各样本划分到不同的簇中。
4)根据下式调整聚类中心:1(1,2,...,;1,2,...,)k j ij kj X C z x i K j n n ∈===∑Z ij 表示第i 号中心的第j 维的值,n i 为类C i 中样本点个数,X k 为属于类C i 的样本点,x kj 为样本点X k 的第j 维的值。
上式实际上是在计算算术平均。
5)计算目标函数J ,当J 在多轮迭代中变化不大时,算法结束,否则转3)。