《数学之美》第15章 矩阵运算和文本处理中的两个分类问题

1 文本和词汇的矩阵

    在自然语言处理中,最常见的两个分类问题分别是:将文本按主题归类(比如将所有介绍奥运会的新闻归到体育类)和将词汇表中的字词按意思归类(比如将各种运动的项目名称归成体育一类)。    

    新闻分类乃至各种分类问题其实是一个聚类问题,关键是计算两篇新闻的相似度。为了完成这个过程,我们要将新闻变成代表它们内容的实词,然后在变成一组数,具体说是向量,最后求出这两个问题的夹角。

    奇异值分解(Singular Value Decomposition,简称 SVD),一次能把所有的新闻相关性计算出来。

    

    在矩阵A中,每一行对应一篇文章,每一列对应一个词。其中,第 i 行、第 j 列的元素,是字典中第 j 个词在第 i 篇文章中出现的加权词频(比如用词的TF-IDF值)。共5000亿个元素。

    奇异值分解,就是把大矩阵分解成三个小矩阵相乘。共1.5亿个元素,不到原来的三千分之一。

    原书有点问题,还没得到证实:

    矩阵X是对文本的分类结果,每一行对应一篇文本,每一列对应一个主题,这一行中每个元素表示这篇文档在不同主题中的相关性。

    中间矩阵B表示文章的类和词的类之间的相关性。

    矩阵Y是对词进行分类的一个结果,它的每一列表示一个词,每一行表示一个语义相近的词类,或者简称为语义类。这一列的每一个非零元素表示这个词在每个语义类中的重要性(或者说相关性),数值越大越相关。

    因此,只要对关联矩阵A进行一次奇异值分解,就可以同时完成近义词分类和文章的分类。另外,还能得到每个主题和每个词的语义类之间的相关性。

2 奇异值分解的方法和应用场景

    首先,将矩阵A变换成一个双对角矩阵。

    第二步,将双对角矩阵变换成奇异值分解的三个矩阵。


猜你喜欢

转载自blog.csdn.net/wangsiji_buaa/article/details/80196193