基于向量空间模型的文本分类

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于向量空间模型的文本分类

在向量空间模型中,文档以由n 个词组成的向量表示(这些词从文档集中选取得到),词也可以由m 篇文档组成的向量表示。在实际使用中,用“文档向量矩阵”X 能最好的代表这种对偶的信息表示,其中一列j X ∙代表一个词、一行∙i X 代表一篇文档:

⎪⎪⎪⎪⎪⎭⎫ ⎝⎛==⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=∙∙∙∙∙∙m n mn m m n n X X X X X X x x x x x x x x x X

2121212222111211),,,( 矩阵中的元素ij x ,一般表示词j 在文档i 中出现的频数;也可以根据其他因素调整它的权重

[4]。比如,以反向文档频率(IDF: Inverse Document Frequency )调整:

)/log(*j ij ij df m tf x =

其中,文档频数j df 是出现词j 的文档数量。说明一下,由于一个词只会在很少的文档中出现,因此矩阵X 中的大多数元素都会是零。

信息检索的典型处理方式就是关键字匹配。用户提出一个查询q ,然后用和文档一样的方式,把它看成一个由关键字组成的向量。通过计算查询向量和文档向量之间的点积(对向量的规一化消除文档长度的影响),可以得出两者之间的相似度。所有m 篇文档的相似度可以构成一个向量s(T

Xq s =),查询q 的相关文档就可以根据这个指标排序并返回给用户。

文本分类,就是把新的文档归到已有的类别体系中去。有很多方法可以实现这个目的,一种简单的分类方法是为每个类别计算一个中心向量i C (类中所有文档向量的平均值)[5]。这些中心向量被认为是每个类别的代表。所有k 个类别的k 个中心向量,组成一个n k ⨯ 的矩阵T k 21)c ,,c ,(c C ⋅⋅⋅=。判别文档属于某个类的标准是,该文档距离哪个类别的中心向量更近。其他的方法[6]则是通过最小化误差平方和C ,来解决文本分类问题,C 的定义如下: ||||min arg B CX C T C

-= 其中,B 是保存训练集文档的正确类别信息的m k ⨯矩阵。一篇新进文档,要通过投影到变换向量上得到与每个类的相似度,并由具体的阈值,决定其到底属于哪个类或哪几个类。 应用LSI 模型的文本分类

在原始的“文档向量矩阵”中,存在着冗余、词语多义和噪音问题。我们希望建立一个比原始矩阵小得多,并只包含有效语义的子空间。要达到这个目的,一般可以通过有效的维数约减。维数约减后,冗余的信息可以合并在一起,词语多义可以通过考虑上下文相关信息解决,把相对不重要的一些特征约去则可以部分解决噪音问题。

LSI 就是这样一种维数约减方法。它可以通过对“文档向量矩阵”进行解奇异值分解(SVD: Singular Value Decomposition )运算,自动计算得到一个比原始空间小得多的有效语义空间:

⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛==∑=r r r r

i i i i v v u u v u X 1111),,(σσσ

其中,r 是矩阵X 的阶,()∑≡r r diag σσ 1是由特征值构成的对角矩阵,

),,(1r r u u U ⋅⋅⋅=和),,(1r r v v V ⋅⋅⋅=分别是左、

右特征向量。一般r 个特征值是按大小排序的,当要进行特征值截取的时候,比如只保留前k 个最大的特征值,下面的矩阵就是原始矩阵的非常好的近似:

T T V U V U X k k k r r r ∑≈∑=

在得到的k 维子空间中,一篇文档∙i X 的投影是k i V X ∙,而所有m 篇文档的投影就是k k k U XV ∑=。查询q 的变换方式也是如此。因此,查询q 和文档之间的相似度计算在LSI 的子空间中就变成了:

))(())((T T T q V U qV X V s k k k k k ∑==

维数的大量约减,既降低了计算的复杂度也滤去了一部分噪音。比如,求矩阵中心向量或作矩阵变换的计算量就从n m ⨯变成了k m ⨯ [5]。这样的方法在朴素贝叶斯分类模型[7]、KNN 模型和SVM 模型[8]中都被证明是非常有效的,提高了分类模型的准确度。

LSI 成功的原因在于,LSI 得到的语义空间比原始特征空间更能表达分类必须的语义结构,部分地解决了信息检索中的同义词和文本分类中的信息冗余问题。

在数学上,通过SVD 选取的矩阵是原始矩阵X 在k 阶情况下的最佳近似。从统计观点看,LSI 和主成分分析类似,是一种非常有效的维数约减方法。即:认为特征值较小的维是噪音,并将其滤去。

然而,LSI 在降低维数的同时也会丢失结构信息。实际上,LSI 基于文档信息来建立语义空间(文档的类别信息并未考虑),得到的空间会保留原始矩阵中最主要的全局信息。但有一种情况是:一些对特定类别分类贡献很大的特征,放在全局下考虑却会变得不重要了。这样的特征在维数约减的过程中,就很容易被滤掉,而如果这样,特定类别的分类精度就会受影响。要解决这个问题,文档的类别信息就应该也被考虑进来。

以传统方式使用LSI 的另一个问题是:没有理论说明,在得到的语义空间中到底应该保留多少维,而维数的变化对最后的结果又有很大的影响[8]。在实际使用中,人们一般中只能通过反复的实验来确定这个值。

相关文档
最新文档