文本摘要(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