NLP《词汇表示方法(一)one-hot向量表示》

词语是NLP里面最基本的要处理的单元,词语组合成能句子,句子组成段落,段落组成文章,因此,最基本要处理的就是词语了,我们知道,词语都是一个个的符号表示的。我们怎么用数值化的方式表示呢,这样才能方便计算机去计算处理。

在字符编码中也被分配了一定的数字来代表某个字符,比如UTF-8等字符编码方式。每一个数字都可以对应于某个字符,对于一些离散的应用来说,这个编码也就够了,但是这种编码仅仅能对字符做个区分表示而已。

一:词语的表示
原始的方法就是one-hot向量的方法。
假如我们有个词库,一共有V个词汇,罗列了所有的词语,组成一个V维度的向量,给每个词语排一个编号,如果表示某个词语,则该词语对应编号位置设置为1,其余位置都是0,这个比较好理解,简单举个例子。

例如我有一个词汇表:【篮球,足球,羽毛球,乒乓球,排球】
则篮球可以是表示成:[1,0,0,0,0]
则乒乓球可以是表示成:[0,0,0,1,0]

这是一种离散的表示方式,非常稀疏,想象一下如果词汇库很大,100W级别的,那么只有一个位置是1,其他的位置都是0,带来了巨大的计算量和存储量,数据显得很稀疏。
且数据之间没有什么联系,数据之间的距离都是一样的,cos值余弦相似度都是0,都是看做是完全独立的存在,词汇之间毫无相关,这个很明显不符合常理的,因此这样的表示方法不适合NLP的语言模型计算,毕竟语言词语是有相互联系的,不是完全独立的存在。

但它也有用武之处,比如适用于表示类别的离散值应用场景下,还记得我们之前学习过那么多的神经网络模型,对于类别的数据,MNIST数据(不需要进行任何比较的,且独立的,相互等价的离散取值的情况下),都是用的是one-hot向量啊。

二:词袋模型(Bag of words)
就是想象成一个袋子,里面装的就是各个词语,但是里面的词语没有顺序,只有频率统计。

比如有词库【我,爱,篮球,你,喜欢,科研,和】
句子1:我爱篮球和爱科研
句子2:你喜欢篮球
句子1的词袋模型就是:[1,2,1,0,0,1,1]
句子2的词袋模型就是:[0,0,0,1,1,1,0]

这样我们就得到每个句子的词袋统计模型,其实也就是向量,如果我们想计算两个句子的相似度,也就是两个向量的相似度,可以用到欧氏距离相似度,也可以用到余弦相似度(求cos)。

该模型表示文本有如下优点:
1:简单,方便,快速建立
2:对于简单的NLP问题还可以解决的,比如文本分类,文学类的,科技类的,体育类的,金融类的文章的词语使用,和词频统计就会不一样。因此可以简单用于文本分类。

该模型表示文本有如下缺点:
1:句子中的词语顺序信息丢失,因为词语的顺序也是很有含义的,毕竟句子“我爱你”比“你我爱”这个句子更像人话,但是词袋模型下是一样的。
2:句子中的词语的重要性的关键词也丢失了,这只能看到某个词语的出现次数或者频率,但是某关键词(重要性高的词语)不代表出现的频率就很高,如果不理解这个意思,请参考TF-IDF的学习。

三:TF-IDF
这个我之前已经学过了,可以参考之前学习的文档,这个算法是能够得到某个句子或者文档的关键词,能提取得到重要性高的关键词,不仅仅是有词语的频率统计(TF),还有词语的重要程度(IDF)。

如上都是基于传统的统计模型的,简单的NLP处理。
后面将会逐渐学习基于神经网络模型的语言模型。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值