词袋模型bow和词向量模型word2vec
在自然语言处理和文本分析的问题中,词袋(Bag of Words, BOW)和词向量(Word Embedding)是两种最常用的模型。更准确地说,词向量只能表征单个词,如果要表示文本,需要做一些额外的处理。下面就简单聊一下两种模型的应用。
所谓BOW,就是将文本/Query看作是一系列词的集合。由于词很多,所以咱们就用袋子把它们装起来,简称词袋。至于为什么用袋子而不用筐(basket)或者桶(bucket),这咱就不知道了。举个例子:
文本1:苏宁易购/是/国内/著名/的/B2C/电商/之一
这是一个短文本。“/”作为词与词之间的分割。从中我们可以看到这个文本包含“苏宁易购”,“B2C”,“电商”等词。换句话说,该文本的的词袋由“苏宁易购”,“电商”等词构成。就像这样:
但计算机不认识字,只认识数字,那在计算机中怎么表示词袋模型呢?其实很简单,给每个词一个位置/索引就可以了。例如,我们令“苏宁易购”的索引为0,“电商”的索引为1,其他以此类推。则该文本的词袋就变成了:
是的,词袋变成了一串数字的(索引)的集合。这样计算机就能读懂了。如果用程序来描述的话,就会像:Set<int>(0,1,2…)。当然,刚才的例子中像“苏宁易购”等词只出现了一次,如果出现多次,可能就需要支持重复元素的容器了,如Java/C++中的MultiSet。
可是,在实际的应用中(如:文本的相似度计算),用刚才说的容器是非常不方便的(如果要用,需要额外用Map容器来存储一本字典来表征词和索引的映射关系)。因此我们考虑用更简单的数据结构来组织词袋模型。既然刚才说词是用数字(索引)来表示的,那自然我们会想到数组。例如:
Intwords[10000] = {1,20,500,0,……}
索引:{0,1,2,3,……}
词: {苏宁易购,是,国内,B2C,……}
数组的下标表示不同的词,数组中的元素表示词的权重(如:TF,TF-IDF)。更为一般的,词的索引可以用词的HashCode来计算,即:Index(苏宁易购) = HashCode(苏宁易购)。将词散列到数组的某个位置,并且是固定的(理论上会有冲突,需要考虑冲突的问题)。因此,HashCode这个函数起到了字典的作用。转化成了数组,接下来计算余弦相似度啥的就好办多了。这就是词袋模型。
下面讲讲词向量模型。实际上,单个词的词向量不足以表示整个文本,能表示的仅仅是这个词本身。往往,这个词向量是个高维的向量(几万甚至几十万)。先不说它是如何得到的,单说它的应用应该是很广泛的。再举文本相似度的例子,既然词可以用一串数字表示,那么自然可以用余弦相似度或欧式距离计算与之相近的词。这样,词的聚类什么的都可以做了。那长文本怎么办呢?一个简单的办法是把这个文本中包含的词的词向量相加。这样长文本也就表示成了一串数字。可是这种处理方法总让我们觉得怪怪的。看到过有同学做的测试,当文本只有十几个字的时候,这种处理方法还算凑合,字多了,结果就很难看了。至于词向量是怎么获得,咱下回再说。目前word2vec有多种版本可供大家使用。至于像doc2vec,sentence2vec的效果还有待评估。
词袋模型bow和词向量模型word2vec的更多相关文章
- 计算机视觉中的词袋模型(Bow,Bag-of-words)
计算机视觉中的词袋模型(Bow,Bag-of-words) Bag-of-words 读 'xw20084898的专栏'的blogBag-of-words model in computer visi ...
- 第十九节、基于传统图像处理的目标检测与识别(词袋模型BOW+SVM附代码)
在上一节.我们已经介绍了使用HOG和SVM实现目标检测和识别,这一节我们将介绍使用词袋模型BOW和SVM实现目标检测和识别. 一 词袋介绍 词袋模型(Bag-Of-Word)的概念最初不是针对计算机视 ...
- 视觉单词模型、词袋模型BoW
多用于图像检索.分类 3.2.1.4 视觉单词模型 视觉词袋(BoVW,Bag of Visual Words)模型,是“词袋”(BoW,Bag of Words)模型从自然语言处理与分析领域向图像处 ...
- 自然语言处理词向量模型-word2vec
自然语言处理与深度学习: 语言模型: N-gram模型: N-Gram模型:在自然语言里有一个模型叫做n-gram,表示文字或语言中的n个连续的单词组成序列.在进行自然语言分析时,使用n-gram或者 ...
- NLP基础——词集模型(SOW)和词袋模型(BOW)
(1)词集模型(Set Of Words): 单词构成的集合,集合自然每个元素都只有一个,也即词集中的每个单词都只有一个. (2)词袋模型(Bag Of Words): 如果一个单词在文档中出现不止一 ...
- 【CV知识学习】【转】beyond Bags of features for rec scenen categories。基于词袋模型改进的自然场景识别方法
原博文地址:http://www.cnblogs.com/nobadfish/articles/5244637.html 原论文名叫Byeond bags of features:Spatial Py ...
- 词袋模型(BOW,bag of words)和词向量模型(Word Embedding)概念介绍
例句: Jane wants to go to Shenzhen. Bob wants to go to Shanghai. 一.词袋模型 将所有词语装进一个袋子里,不考虑其词法和语序的问题,即每个 ...
- [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型
深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展.深度学习一直被人们推崇为一种类似于人脑结构的人工智能算法,那为什么深度学习在语义分析领域仍然没有实质性的进展呢? ...
- 机器学习入门-文本特征-word2vec词向量模型 1.word2vec(进行word2vec映射编码)2.model.wv['sky']输出这个词的向量映射 3.model.wv.index2vec(输出经过映射的词名称)
函数说明: 1. from gensim.model import word2vec 构建模型 word2vec(corpus_token, size=feature_size, min_count ...
随机推荐
- 使用Beetle简单构建高性能Socket tcp应用
beetle是基于c#编写的高性能Socket tcp组件,它基于SocketAsyncEventArgs的实现并提供了发送队列和接收队列的支持,可以根据情况灵活地设置1-N个发送队列和接收队列.除了 ...
- EasyUI datagird 排序 按数字类型的问题
easyui datagird 默认显示的数据都是字符, 对要数字列进行排序规则,需要自定义排序规则如果按字符排序 27竟然小于4 这不是我们想要的.解决方案 <table id='grid'c ...
- 12C的审计模式
1.Mixed Auditing Policy 混合审计模式支持新的审计引擎和老的审计引擎一起工作数据库升级后,已有的审计设置不会受到影响.但是官方建议迁移到统一审计模式.数据库创建后,默认是使用混合 ...
- mysqld Can’t start server : Bind on unix socket: Permission denied
启动mysql报错: mysqld Can’t start server : Bind on unix socket: Permission denied 原因: mysql.sock无法建立,权限问 ...
- TextView的实现原理介绍
记得之前在腾讯面试的时候,被面试官问到这个问题.之前认为没什么特别的,一位是面试官有益问些刁钻的问题来压工资,如今看来当是确实是懂得不多啊. 今天看到就转载过来也方便自己和他人一起来了解.探寻这个简单 ...
- 关于PKCS的文档资料
关于PKCS的文档资料,在这里查找: http://www.emc.com/emc-plus/rsa-labs/standards-initiatives/public-key-cryptograph ...
- 使用ShellExecute打开文件夹并选中文件
原文链接: http://futurecode.is-programmer.com/posts/24780.html 假设在C:\目录下存在文件a.txt. 打开这个目录是ShellExecute的常 ...
- SharePoint 2013 Step by Step——使用自定义的List Template
Overview 对于企业员工来说,"扁平结构"的LIST是日常操作中经常使用到的,LIST的好处是方便数据的录入以及数据的整理分析,尤其是Quick Edit功能,可以实现快速编 ...
- python opencv 按一定间隔截取视频帧
前言关于opencvOpenCV 是 Intel 开源计算机视觉库 (Computer Version) .它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法. ...
- C#基础第二天-作业答案-九九乘法表-打印星星
题一:九九乘法表的答案 //正三角 ; i < ; i++) { ; j <= i; j++) { Console.Write("{0}*{1}={2} ", j, i ...