1.SVD函数
采用numpy工具中SVD函数实现文本的特征抽取,该函数描述如下:
(1)参数:
a:是m×n的矩阵。
full_matrices:是布尔型数据,缺省默认为True。当full_matrices=True时,则返回值中U的维度为m×m,VT的维度为n×n。当full_matrices=False时,则返回值中U的维度为m×k,VT的维度为k×n,k=min(M,N)。
compute_uv:是布尔型数据,缺省默认为True。当compute_uv=True时,计算U、S、VT。当compute_uv=True时,只计算S。
(2)返回值:
U:维度为m×m或者m×k的矩阵。
S:奇异值向量,每个向量值按降序排列。
VT:维度为n×n或者k×n的矩阵。(www.xing528.com)
2.基于SVD的文本特征抽取
我们选取了某酒店的5条评论,采用奇异值分解方法进行特征选择的过程如下:
原始5条评论文本数据,经过分词、取掉停用词操作之后的特征总数为47,因此该评论数据的文本-特征矩阵A的维度为6×47。
矩阵A:
通过原始矩阵A可以看出,绝大多特征值都为0,没有实际意义,因此可采用基于奇异值分解的特征抽取方式实现关键特征抽取,达到降维的目的。
经过奇异值分解进行特征抽取,奇异值个数为6,例如:
矩阵U:
通过上述奇异值分解方法进行特征抽取,把原始文本维度降至6,极大地减少了特征个数。当然,还可以指定选择奇异值的个数,以便能够更进一步降低特征维度,由于本例中的文本数量较少,所以直接就取值为6,没有再指定要选择的特征数(可以选择小于6的特征数量)。
矩阵VT维度为47×47,其中选择矩阵中的一行数据(1×47)如下所示:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。