SVD与文本摘要

    文本摘要(Text Summarization)就是从原始文献中提取一个简短的文摘,文摘是全面准确地反映某一文献中心内容的简单连贯的短文。下面介绍一种利用SVD进行文本摘要的方法,其本质是提取到语料中较为“重要”的句子,主要思想均出自参考文献1和2中。

一、SVD概念

     SVD(Singular value decomposition)就是奇异值分解,学过线性代数的一定还对应什么奇异非奇异的字样有点印象吧。不过这个奇异值跟矩阵是奇异或非奇异的关系貌似不大。直接上概念,对于m×n阶矩阵A进行奇异值分解

其中U为m×m阶正交矩阵,∑是m×n阶对角阵,对角线上的元素就是A的奇异值啦,VT是n×n阶正交矩阵。下面是Wiki中的一个小例子。

对于矩阵M,对应的SVD分解如下

 

   

可以看到U和VT都是正交矩阵。在实际应用中常使用矩阵A的近似分解 其中中只保留了原分解中最大的 r(r < n )个值,这样U阶m×r,VT为r×n阶。通过这样的降维操作,可以起到减少数据量,去除原始数据中的噪声等作用。

矩阵A的SVD与矩阵A的特征值和特征向量有没有关系呢

即V的列向量即为ATA的特征向量,同理,U的列向量为AAT的特征向量,而∑的对角线元素即为ATA或AAT的特征值的平方根。

二、文本的矩阵表示

     既然要用到SVD,先得把文本用矩阵表示出来吧。首先把文本分成一个一个的句子,比如下面是语料中得到的一些句子。

1.     The Neatest Little Guide to Stock Market Investing

2.     Investing For Dummies, 4th Edition

3.     The Little Book of Common Sense Investing: The Only Way to Guarantee Your Fair Share of Stock Market Returns

4.     The Little Book of Value Investing

5.     Value Investing: From Graham to Buffett and Beyond

6.     Rich Dad's Guide to Investing: What the Rich Invest in, That the Poor and the Middle Class Do Not!

7.     Investing in Real Estate, 5th Edition

8.     Stock Investing For Dummies

9.     Rich Dad's Advisors: The ABC's of Real Estate Investing: The Secrets of Finding Hidden Profits Most Investors Miss

对上面的文本进行分词,去除停词(to、and、the之类的),并且只记录在2个或者2个以上句子中出现过的词,得到下面的 的矩阵,其中第i行第j列元素代表第i个单词在第j个句子中出现次数。实际上矩阵的每一列都是一个句子的词频(TF)向量,这种表示叫做文本的向量空间模型(VSM)。

 

T1

T2

T3

T4

T5

T6

T7

T8

T9

book

 

 

1

1

 

 

 

 

 

dads

 

 

 

 

 

1

 

 

1

dummies

 

1

 

 

 

 

 

1

 

estate

 

 

 

 

 

 

1

 

1

guide

1

 

 

 

 

1

 

 

 

investing

1

1

1

1

1

1

1

1

1

market

1

 

1

 

 

 

 

 

 

real

 

 

 

 

 

 

1

 

1

rich

 

 

 

 

 

2

 

 

1

stock

1

 

1

 

 

 

 

1

 

value

 

 

 

1

1

 

 

 

 

三、文本摘要模型的建立

    下面介绍如何通过假设和推导得到基于SVD的文本摘要模型。矩阵A代表m×n阶的词-句子矩阵,代表A中第i行j列的非零元素。定义两个向量,m维的向量,其中每个元素代表对应词的重要性评分;n维向量,其中每个元素代表对应句子的重要性评分。2中提出的互相增强原则(mutual reinforcement principle),如果一个词出现在许多具有高评分的句子中,这个词也应该具有较高的评分;如果一个句子包含许多具有高评分的词,这个句子也应当具有较高的评分。根据这一假设有:

表示成更通用的形式:

                 (1)

               (2)

其中为比例常数,把(1)变一下,,代入(2)式得到,同理可以得到,这两个式子可以看出  实际上为是ATA的特征向量, 实际上是AAT的特征向量,回忆前面SVD的定义实际上 其实的 r=1 时A的SVD分解,即

    综上,只需对词-句子矩阵进行1维的SVD分解,中评分最高的对应的若干个句子即完成了摘要过程,中评分最高的对应的若干个词,还可以得到一些特征词。

    对上面举例的词-句子矩阵做SVD分解(matlab [u,s,v]=svds(A,1))得

u = [ 0.1528  0.2375  0.1303   0.1844   0.2161  0.7401  0.1769   0.1844   0.3631  0.2502  0.1229]   

s = 3.9094

v = [ 0.3538  0.2226  0.3376   0.2599    0.2208    0.4911   0.2836   0.2866   0.4373]

评分较高的值已经加粗,可以回头找一下上面的例子,给人的感觉还是找到词频较高的词,然后包含这些词的句子也容易凸显出来。

四、测试与思考

更多数据的测试to do

参考1中还介绍了一种基于QR分解的特征句子提取的方法,比起基于SVD的方法优点是可以去除意思相近的句子。

还有些问题不是很清楚,有时间再查资料吧:

1、SVD更深的物理意义,SVD分解中U、V矩阵的正交性能带来什么意义?

    参考3里面的文章有一些启示。

2、SVD有哪些应用?

知道一个,潜在语义分析(Latent Semantic Analysis,LSA),主成分分析(PCA),还有?

参考

1、《Matrix Methods in Data Mining and Pattern Recognition》 Chapter 13 Key Sentence Extraction from a Rank-k Approximation

2、H. Zha. “Generic summarization and keyphrase extraction using mutual reinforcement principle and sentence clustering”. 2002

3、leftnoteasy http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html

posted @ 2012-10-11 15:08  BitSpark  阅读(695)  评论(0编辑  收藏  举报