什么是算法中常说的“Count Vector”?

983 阅读2分钟

Count Vector 被百度翻译为“计数向量”,在算法中,我们通常要利用各种数学思维和公式来搭建算法模型从而解决问题,例如在遇到需要对一篇文章来进行分词分析的时候,我们就很可能要用到Count Vector啦!

那到底怎么理解Count Vector呢?

例如我们拿到内含一篇文章的文件后,计算机能直接识别汉字吗?答案是否定的,那我们就得想方法让计算机能够认识我们的汉字。
思考一下,汉语文字有什么特点或不同呢?不同的汉字长相不同对么。诶!那我们想是否可以通过给不同的汉字做标记而让计算机去区分呢?答案是可行的,所以我们就可以使用Count Vector来提取文字特征。简单来说就是:将文本或者文档转化为Token计数矩阵。
但需要注意的是:对于每一个训练文本,CountVector只考虑每种词汇在该训练文本中出现的频率哦

token:中文分词中的一个字,或者词

举例:sentence = “南京黄埔军校”,经过中文分词之后,变成“南京 \ 黄埔 \ 军校”,由原来的一句话,分割成3个词语,那么每个词语就是token 例如: token = “南京” or token = “黄埔” or token = “军校”

下面我们来看一下它的原理是怎样的吧!

假设有一个语料库A,其中有N个文档:{d1,d2,d3,...,dN},A中一共有M个Word,那么这M个Word就构成了原始输入的“dictionary”,那我们由此就可以生成一个矩阵T,矩阵T的规模就是(N X M)。

我们看如下例子,假设语料库中的内容如下:

N1:He is my friend.

N2:She is a student,good student. 那么我们就可以构建如下的2X7的矩阵啦: image.png

但这样做有优点也有缺点:
提示:我们将每个文档用词向量的组合来显示,每个词语的权重就用它出现的次数来表示
优点:简单、直观、相对更好去理解
缺点:如果语料库非常庞大,则上面的矩阵将会是非常稀疏的,将会给后期的运算带来难度
调优:我们可以仅将出现次数较为频繁的词作为一个语料库来单独构建一个dictionary以缩减矩阵规模(例如TopFrequency10,000)

例如如下的Python代码,可以直接粘贴去尝试运行!记得回来分享你的感受😄😄😄