[Day13] 文本/词表示方式(四)-共现矩阵与降维

ㄧ. 前言

前面有说明如何运用TFIDF与BOW来表示一个句子/文本的表示方式,但若以BOW这样的方式并没有考虑到句子/文本中上下文的特性,共现矩阵就是利用分布假说,相似的词附近会有类似的上下文,藉由计算周围(window)字词来表示词的向量。

二. 共现矩阵

考虑下面的句子: 我 今天 很 帅

上面因为总共有4个字(假设总共文本就共这4个字),共现矩阵会产生4x4的矩阵,假设现在window设为1,表示只看隔壁距离为1的词,以'我'为例,'今天'这个count会加1,最後产生的共现矩阵如下:
https://ithelp.ithome.com.tw/upload/images/20210912/20140426ZAPOaWsBIj.png

三. 共现矩阵缺点

共现矩阵虽然考虑了上下文,但这些次数并非良好的计数方式,大致有下列的缺点:

  1. 矩阵维度庞大,耗费大量记忆体
  2. 对一些高频率的词效果较差,例如向上句的'我'与'今天'其实是并没什麽关系

四. 降维

在共现矩阵/BOW等表示方法中,很多的元素都是0。这时可以透过SVD将资讯压缩,转成较稠密的矩阵,可以达到特徵提取与降维的目的。

SVD(Singular Value Decomposition,奇异值分解) 是降维方法之一(其他也有如PCA等),SVD可以将任意矩阵分解为三个矩阵的乘积(两个方阵与一个对角矩阵,这边可以去看线性代数复习XD),选取前 k 个奇异值占所由 n 维降至 k 维。如下图[1]
https://ithelp.ithome.com.tw/upload/images/20210912/20140426bP12uKWu3L.png


今天大概说明共现矩阵,共现矩阵与word2vec的演算法有些关系~就留到明天说明

参考资讯
[1] SVD


<<:  食谱搜寻系统後端语法简介

>>:  JavaScript Day 4. ParseInt / ToString

C# 入门笔记04(继承)

物件导向 这单元主要是让大家了解物件导向的基本实作 物件导向有三大特性: 封装 继承 多型 封装 类...

[2021铁人赛 Day19] General Skills 16

引言 特别的一题... 这题大家的评分不高,我想应该真的出得不好 不过也意外让我学到这个新东西~ ...

Day 7 - Kotlin的条件判断

Day 7 - Kotlin的条件判断 前面一天我们讲到Kotlin里面的var跟val,今天我们要...

予焦啦!准备工具链

本节是以 Golang 上游 1a708bcf1d17171056a42ec1597ca8848c...

【Day 08】 实作 - 透过 AWS 服务 - AppFlow 把 Google Analytics 资料存放至 AWS 中 ( 1 )

今天我们来实作怎麽『 透过 AWS 服务把 Google Analytics 资料撷取存放至 AWS...