精华内容
下载资源
问答
  • 向量模型(1)

    千次阅读 2018-08-14 09:55:59
    向量模型 one-hot Vector one-hot vector 最简单的编码方式:假设我们的词库总共有n个词,那我们开一个1*n的高维向量,而每个词都会在某个索引index下取到1,其余位置全部都取值为0。 问题 这种词向量编码...

    词向量模型

    one-hot Vector

    one-hot vector

    最简单的编码方式:假设我们的词库总共有n个词,那我们开一个1*n的高维向量,而每个词都会在某个索引index下取到1,其余位置全部都取值为0。

    问题

    这种词向量编码方式简单粗暴,我们将每一个词作为一个完全独立的个体来表达。遗憾的是,这种方式下,我们的词向量没办法给我们任何形式的词组相似性权衡。因为你开了一个极高维度的空间,然后每个词语都会占据一个维度,因此没有办法在空间中关联起来。

    解决方案

    可以把词向量的维度降低一些,在这样一个子空间中,可能原本没有关联的词就关联起来了。

    基于 SVD 的方法

    SVD

    这是一种构造词嵌入(即词向量)的方法,我们首先会遍历所有的文本数据集,然后统计词出现的次数,接着用一个矩阵 X 来表示所有的次数情况,紧接着对X进行奇异值分解得到一个 USVT 的分解。然后用 U 的行(rows)作为所有词表中词的词向量。对于矩阵 X ,有2种选择:全文或者窗口长度。

    • 词-文档矩阵
      建立一个词组文档矩阵 X,具体是这么做的:遍历海量的文件,每次词组 i 出现在文件 j 中时,将 Xij 的值加1。不过大家可想而知,这会是个很大的矩阵R|V|×M,而且矩阵大小还和文档个数M有关系。所以咱们最好想办法处理和优化一下。word-document的共现矩阵最终会得到泛化的主题(例如体育类词汇会有相似的标记),这就是浅层语义分析(LSA, Latent Semantic Analysis)

    • 基于窗口的共现矩阵 X
      把矩阵X记录的词频变成一个相关性矩阵,对 X 做奇异值分解,观察奇异值(矩阵的对角元素),并根据我们期待保留的百分比来进行截断(只保留前k个维度),把子矩阵 U1:|V|,1:k 视作我们的词嵌入矩阵。也就是说,对于词表中的每一个词,我们都用一个 k 维的向量来表达了。窗口长度容易捕获语法(POS)和语义信息

    对共现矩阵X进行奇异值分解

    特征值分解与奇异值分解
    特征值分解只适用于方阵。当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。我们通过特征值分解得到的前N个特征向量,对应了这个矩阵最主要的N个变化方向。利用这前N个变化方向,可以近似这个矩阵(变换)。也就是 – 提取这个矩阵最重要的特征。总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。
    奇异值分解是一个能适用于任意的矩阵的一种分解的方法,可以通过求特征值得到。

    Python中简单的词向量SVD分解

    问题

    • 矩阵的维度会经常变化(新的词语经常会增加,语料库的大小也会随时变化)。
    • 矩阵是非常稀疏的,因为大多数词并不同时出现。
    • 矩阵的维度通常非常高(≈106×106),需要大量的存储
    • 训练需要O(n2)的复杂度
    • 对于新词或者新的文档很难及时更新
    • 需要专门对矩阵X进行特殊处理,以应对词组频率的极度不平衡的状况

    解决方案:直接学习低维度的词向量

    idea: 将最重要的信息存储在固定的,低维度的向量里:密集向量(dense vector),维数通常是25-1000
    然而,如何降维?

    基于迭代的方法

    创建一个模型,它能够一步步迭代地进行学习,并最终得出每个单词基于其上下文的条件概率。

    n-gram

    基本思想: 一个词出现的概率只与它前面固定数目的词相关。
    主要工作是在预料中统计各种词串出现的次数以及平滑化处理,概率值计算号之后就存储起来,下次需要计算一个句子的概率时,只需找到相关的概率参数,将它们连乘起来就好了。
    建立一个概率模型,它包含已知和未知参数。每增加一个训练样本,它就能从模型的输入、输出和期望输出(标签),多学到一点点未知参数的信息。
    在每次迭代过程中,这个模型都能够评估其误差,并按照一定的更新规则,惩罚那些导致误差的参数。(误差“反向传播”法)。

    CBOW

    以 {“The”, “cat”, “over”, “the”, “puddle”} 为上下文,能够预测或产生它们中心的词语”jumped”。模型输入为 x(c),模型输出为 y,y 就是中心词 ‘jumped’。对于每个词语 wi 学习了两个向量。

    2.jpg

    连续词袋模型(CBOW)中的各个记号:

    • WiWi:单词表 V 中的第 i 个单词, one-hot 向量
    • v∈Rn∗|V|v∈Rn∗|V|:输入词矩阵
    • vivi:V的第i列,n 维 WiWi 的输入向量
    • U∈R|V|∗nU∈R|V|∗n:输出词矩阵
    • UiUi:U 的第 i 行,n 维 WiWi 的输出向量

    把整个过程拆分成以下几步:

    • 对于 m 个词长度的输入上下文,我们产生它们的 one-hot 向量 (xc−m,⋯,xc−1,xc+1,⋯,xc+m)(xc−m,⋯,xc−1,xc+1,⋯,xc+m),作为模型输入。
    • 我们得到上下文的嵌入词向量 (vc−m+1=Vxc−m+1,⋯,vc+m=Vxc+m)(vc−m+1=Vxc−m+1,⋯,vc+m=Vxc+m)
    • 将这些向量取平均 vˆ=Vc−m+Vc−m+1+⋯+Vc+m2mv^=Vc−m+Vc−m+1+⋯+Vc+m2m
    • 产生一个得分向量 z=Uvˆz=Uv^
    • 将得分向量转换成概率分布形式 yˆ=softmax(z)y^=softmax(z)
    • 我们希望我们产生的概率分布 ,与真实概率分布 yˆy^ 相匹配。而 y 刚好也就是我们期望的真实词语的one-hot向量。

    怎样找到矩阵U、V?
    目标函数选交叉熵,用梯度下降法去更新每一个相关的词向量 UcUc 和 VjVj.

    当我们试图从已知概率学习一个新的概率时,最常见的是从信息论的角度寻找方法来评估两个概率分布的差距。其中广受好评又广泛应用的一个评估差异/损失的函数是交叉熵:
    H(yˆ,y)=−∑|V|j=1yjlog(yˆj)H(y^,y)=−∑j=1|V|yjlog(y^j)

    结合我们当下的例子,y 只是一个one-hot向量,于是上面的损失函数就可以简化为:
    H(yˆ,y)=−yjlog(yˆj)H(y^,y)=−yjlog(y^j)

    我们用 c 表示 y 这个 one-hot 向量取值为 1 的那个维度的下标。所以在我们预测为准确值的情况下 yˆc=1y^c=1。于是损失为 −1 log(1) = 0。所以对于一个理想的预测值,因为预测得到的概率分布和真实概率分布完全一样,因此损失为0。相反,当我们的预测结果非常不理想, yˆc=0.01y^c=0.01。计算得到的损失为−1 log(0.01) ≈ 4.605,损失非常大,原本这才是标准结果,可是你给了一个非常低的概率,因此会拿到一个非常大的loss。最终的优化函数为:

    Skip-Gram

    与上面提到的模型对应的另一种思路,是以中心的词语 ”jumped” 为输入,能够预测或产生它周围的词语 ”The”, “cat”, “over”, “the”, “puddle” 等。这里我们叫 ”jumped” 为上下文。我们把它叫做Skip-Gram 模型。

    这个模型的建立与连续词袋模型(CBOW)非常相似,但本质上是交换了输入和输出的位置。我们令输入的 one-hot 向量(中心词)为 x(因为它只有一个),输出向量为 y(j)。U 和 V 的定义与连续词袋模型一样。看一下网络结构图:

    1.jpg

    举个例子,假设现在的数据集如下:

    the quick brown fox jumped over the lazy dog

    这个数据集中包含了词语及其上下文信息。上下文信息(Context)是一个比较宽泛的概念,有多种不同的理解:例如,词语周边的句法结构,词语的左边部分的若干个词语信息,对应的右半部分等。这里,我们使用最原始和基本的定义,即认为词语左右相邻的若干个词汇是该词对应的上下文信息。例如,取左右的词窗口为1,下面是数据集中的(上下文信息,对应的词)的pairs:

    ([the, brown], quick), ([quick, fox], brown), ([brown, jumped], fox), ...

    Skip-Gram模型是通过输入的目标词来预测其对应的上下文信息,所以目标是通过[quick]来预测[the]和[brown],通过[brown]来预测[quick]和[fox]… 将上面的pair转换为(inpUt, output)的形式如下:

    (quick, the), (quick, brown), (brown, quick), (brown, fox), ...

    对应到上面部分,我们可以把 Skip-Gram 模型的运作方式拆分成以下几步:

    • 生成 one-hot 输入向量 x。
    • 得到上下文的嵌入词向量 VcVc=VxVx。
    • 因为这里不需要取平均值的操作,所以直接是vˆ=vcv^=vc。
    • 通过U=UVcU=UVc产生 2m 个得分向量 Uc−m,⋯,Uc−1,Uc+1,⋯,Uc+mUc−m,⋯,Uc−1,Uc+1,⋯,Uc+m,如果上下文各取一个词,就是 Uc−1Uc−1, Uc+1Uc+1
    • 将得分向量转换成概率分布形式 y=softmax(u)y=softmax(u)。
    • 我们希望我们产生的概率分布与真实概率分布 yc−m,⋯,yc−1,,yc+1⋯,yc+myc−m,⋯,yc−1,,yc+1⋯,yc+m 相匹配,也就是我们真实输出结果的 one-hot 向量。

    为模型设定一个目标/损失函数。不过不同的地方是我们这里需要引入朴素贝叶斯假设来将联合概率拆分成独立概率相乘。只要给出了中心词,所有的输出词是完全独立的。使用随机梯度下降算法(SGD)来进行最优化求解,并且使用mini-batch方法 (通常batch_size在16到512之间)。可以用随机梯度下降法去更新未知参数的梯度。
    对应的优化函数是

    这里值得一提的是,skipgram 和 PMI 之间是有联系的,Levy and Goldberg(2014) 提到过,skip-gram 在矩阵成为 PMI 的一个 shifted version 时(WW‘T=MPMI−logkWW‘T=MPMI−logk),得到最优解,也就是说,

    Skip-gram is implicitly factoring a shifted version of the PMI matrix into the two embedding matrices.

    我们再次观察一下目标函数,注意到对整个单词表|V|求和的计算量是非常巨大的,任何一个对目标函数的更新和求值操作都会有O(|V|)的时间复杂度。我们需要一个思路去简化一下,我们想办法去求它的近似,可以参照负面采样(Negative Sampling)

    why skip-gram

    在NLP中,语料的选取是一个相当重要的问题。
    首先,语料必须充分。一方面词典的词量要足够大,另一方面尽可能地包含反映词语之间关系的句子,如“鱼在水中游”这种句式在语料中尽可能地多,模型才能学习到该句中的语义和语法关系,这和人类学习自然语言是一个道理,重复次数多了,也就会模型了。
    其次,语料必须准确。所选取的语料能够正确反映该语言的语义和语法关系。如中文的《人民日报》比较准确。但更多时候不是语料选取引发准确性问题,而是处理的方法。
    由于窗口大小的限制,这会导致超出窗口的词语与当前词之间的关系不能正确地反映到模型中,如果单纯扩大窗口大小会增加训练的复杂度。Skip-gram模型的提出很好解决了这些问题。

    我们来看看 skip-gram 的定义。

    Skip-gram 实际上的定义很简单,就是允许跳几个字的意思。依照原论文里的定义,这个句子:

    Insurgents killed in ongoing fighting.

    在 bi-grams 的时候是拆成:

    { insurgents killed, killed in, in ongoing, ongoing fighting }

    在 2-skip-bi-grams 的时候拆成:

    { insurgents killed, insurgents in, insurgents ongoing, killed in, killed ongoing, killed fighting, in ongoing, in fighting, ongoing fighting }

    在 tri-grams 的时候是:

    { insurgents killed in, killed in ongoing, in ongoing fighting }

    在 2-skip-tri-grams 的时候是:

    { insurgents killed in, insurgents killed ongoing, insurgents killed fighting, insurgentsin ongoing, insurgents in fighting, insurgents ongoing fighting, killed in ongoing, killed in fighting, killed ongoing fighting, in ongoing fighting }

    这样就有办法在整篇文章都是用“台湾大学”的情况下以“台大”找到文章,解决一些“同义词”想要解决的问题。Skip-gram 一方面反映了句子的真实意思,另一方面还扩大了语料,2元词组由原来的4个扩展到了9个,3元词组由原来的3个扩展到了10个。

    Word2Vec

    Word2Vec 是一个典型的预测模型,用于高效地学习Word Embedding,实现的模型就是上面提到的两种:连续词袋模型(CBOW)和Skip-Gram模型。算法上这两个模型是相似的

    • CBOW 从输入的上下文信息来预测目标词
    • Skip-gram 模型则是相反的,从目标词来预测上下文信息
      一般而言,这种方式上的区别使得 CBOW 模型更适合应用在小规模的数据集上,能够对很多的分布式信息进行平滑处理;而 Skip-Gram 模型则比较适合用于大规模的数据集上。

    另外一点是,embeddings 可以来捕捉关系!
    3.jpg

    向量空间模型(Vector space models, VSMs)

    将词语表示为一个连续的词向量,并且语义接近的词语对应的词向量在空间上也是接近的。
    分布式假说理论: 该假说的思想是如果两个词的上下文(context)相同,那么这两个词所表达的语义也是一样的;换言之,两个词的语义是否相同或相似,取决于两个词的上下文内容,上下文相同表示两个词是可以等价替换的。

    词向量生成方法主要分两大类:

    • 计数法(count-based methods, e.g. Latent Semantic Analysis)
      在大型语料中统计词语及邻近的词的共现频率,然后将之为每个词都映射为一个稠密的向量表示;
    • 预测法(predictive methods, e.g. neural probabilistic language models)。
      直接利用词语的邻近词信息来得到预测词的词向量(词向量通常作为模型的训练参数)。

    词向量任务评价

    内部任务评价

    内部任务评价的特点如下:

    • 一般是在一个特定的子任务中进行评测
    • 计算很快
    • 有助于理解相关的系统
    • 在实际的NLP任务中表现好坏,可能需要外部关联实际应用

    方法:词向量类比

    我们先输入一组不完整的类比 a:b::c:? 内部任务评价系统找出最大化余弦相似度的词向量
    理想情况下,我们想得到xb−xa=xd−xc(例如,王后–国王 = 女演员 – 男演员)。于是xb−xa+xc=xd, 所以我们只需要找出一个与xb−xa+xc的标准化内积(比如余弦相似度)取最大值的词向量就可以了。

    类比语料示例:

    首都城市1 : 国家1 : : 首都城市2 : 国家2
    Beijing:China::Astana       Kazakhstan
    Beijing:China::Asmara       Eritrea
    ...
    
    比较级
    bad:worst::big            biggest
    bad:worst::easy           easiest
    ...
    
    时态
    dancing:danced::decreased         decreased
    dancing:danced::falling           fell
    ...
    

    评测语料

    方法:相关性评价

    另外一个评测词向量质量的简单方法是人为对两个词的相似度在一个固定区间内打分(比如说 0-10),再跟对应向量的余弦相适度进行对比。
    评测语料

    考虑参数

    • 词向量的维度
    • 资料库的大小
    • 资料源/类型
    • 上下文窗口的大小
    • 上下文的对称性

    一般而言,

    • 精度和使用的模型高度相关,因为这些生成词向量的方法所依据的特性是完全不同的(如同时出现的次数,奇异向量等。)
    • 文集量越大,精度越高,因为例子越多,生成的系统学习到的经验就更丰富。比如在完成词汇类比的例子中,系统如果之前没有接触测试词,就可能会生成错误的结果。
    • 如果维度特别低或特别高,精度就会比较低。低维度词向量无法捕捉文集中不同词语的不同意义。这可以视为我们模型复杂度过低而导致的高偏差。比如 “king”, “queen”, “man”, “woman” 这几个词,我们需要至少2个维度像”gender” 如 “leadership” 来把它们编译成 2-字节 词向量。 过低的维度将无法捕捉四个词之间的语义差别,而过高的维度将捕捉到一些对泛化能力没有用的噪音– 即高方差的问题。

    外部任务评价

    外部任务评价的特点如下:

    • 在一个实际任务中进行评测
    • 需要花很长的时间来计算精度
    • 不太清楚是否是某个子系统或者其他子系统,又或是几个子系统互相作用引起的问题
    • 如果替换原有的子系统后获得精度提升,则说明替换很可能是有效的

    参考链接:
    斯坦福大学课程:深度学习与自然语言处理
    斯坦福大学深度学习与自然语言处理第二讲:词向量

    转自: http://www.shuang0420.com/2016/06/21/%E8%AF%8D%E5%90%91%E9%87%8F%E6%80%BB%E7%BB%93%E7%AC%94%E8%AE%B0%EF%BC%88%E7%AE%80%E6%B4%81%E7%89%88%EF%BC%89/

    展开全文
  • 一种结合词向量图模型的特定领域实体消歧方法
  • 主要内容这篇文章主要内容是介绍从初始语料(文本)到生成词向量模型的过程。词向量模型向量模型是一种表征词在整个文档中定位的模型。它的基本内容是词以及它们的向量表示,即将词映射为对应的向量,这样就可以被...

    主要内容

    这篇文章主要内容是介绍从初始语料(文本)到生成词向量模型的过程。

    词向量模型

    词向量模型是一种表征词在整个文档中定位的模型。它的基本内容是词以及它们的向量表示,即将词映射为对应的向量,这样就可以被计算机识别和计算。它的文件后缀名是.bin。

    过程

    1.分词

    即将文本分词,分词工具有很多,比如哈工大的分词工具和结巴分词工具,具体如何使用这些工具,请参考相关的文章。
    分词的时候,请将各个词以一个空格隔开。

    2.训练词向量

    在word2vec的trunk目录下打开终端, 定义下面内容,以适用于你的语料

    ./word2vec -train 产科语料合并版_分词结果.txt -output vectors11.bin -cbow 0 -size 100 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1

    具体的
    1. –size:向量维数
    2. –window:上下文窗口大小
    3. –sample:高频词亚采样的阈值
    4. –hs:是否采用层次 softmax
    5. –negative:负例数目
    6. –min-count:被截断的低频词阈值
    7. –alpha: 开始的 learning rate

    最终生成的vectors11.bin文件就是我们模型文件,它在trunk目录下。

    3.验证词的相似度

    在命令行在输入 ./distance vectors11.bin
    然后输入词,查看它的相似词语列表,如下图:

    这里写图片描述

    完毕。

    展开全文
  • 空间向量模型和tf-idf

    千次阅读 2017-09-21 16:56:00
    向量空间模型 向量空间模型是一个把文本文件表示为标识符(比如索引)向量的代数模型,它应用于信息过滤、信息检索、索引以及相关排序。 1 定义 文档和查询都用向量来表示: 每一维都对应于一个个别的词组。...

    向量空间模型

    向量空间模型是一个把文本文件表示为标识符(比如索引)向量的代数模型,它应用于信息过滤、信息检索、索引以及相关排序。

    1 定义

    文档和查询都用向量来表示:

    1531909-0ceb7ffabe90d345.png

    每一维都对应于一个个别的词组。如果某个词组出现在了文档中,那它在向量中的值就非零。已经发展出了不少的方法来计算这些值,这些值叫做(词组)权重。其中一种最为知名的方式是tf-idf权重(见下面的例子)。

    词组的定义按不同应用而定。典型的词组就是一个单一的词、关键词、或者较长的短语。如果将词语选为词组,那么向量的维数就是词汇表中的词语个数(出现在语料库中的不同词语的个数)。

    通过向量运算,可以对各文档和各查询作比较。

    2 应用

    据文档相似度理论的假设,如要在一次关键词查询中计算各文档间的相关排序,只需比较每个文档向量和原先查询向量(跟文档向量的类型是相同的)之间的角度偏差。
    实际上,计算向量之间夹角的余弦比直接计算夹角本身要简单。

    1531909-6bbadf264325efc3.png

    其中d 2▪q是文档向量(即图中的d 2)和查询向量(图中的q)的点乘。||d 2||是向量d 2的模,而||q||是向量q的模。

    由于这个模型所考虑的所有向量都是每个元素严格非负的,因此如果余弦值为零,则表示查询向量和文档向量是正交的,即不符合(换句话说,就是检索项在文档中没有找到)。


    1531909-aa7c4642f5cc0d52.png

    3 范例:tf-idf权重

    1531909-01df1bad91d334af.png

    tf-idf

    tf-idf(英语:term frequency–inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术。tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。tf-idf加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了tf-idf以外,互联网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜索结果中出现的顺序。

    1 原理

    在一份给定的文件里,词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率。这个数字是对词数(term count)的归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否)对于在某一特定文件里的词语ti来说,它的重要性可表示为:

    1531909-2f833b6f4f21e05b.png

    以上式子中ni,j是该词在文件dj中的出现次数,而分母是在文件dj中所有字词的出现次数之和。
    逆向文件频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到:

    1531909-15ea80f51fd8f2b8.png

    其中:

    • |D|:语料库中的文件总数
    • |{j:ti∈dj}|:包含词语ti的文件数目(即ni,j≠0的文件数目)。如果该词语不在语料库中,就会导致分母为零,因此一般情况下使用1+|{j:ti∈dj}|,然后
      tfidfi,j=tf×idfi

    某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的tf-idf。因此,tf-idf倾向于过滤掉常见的词语,保留重要的词语。

    2 例子

    有很多不同的数学公式可以用来计算tf-idf。这边的例子以上述的数学公式来计算。词频(tf)是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是3/100=0.03。一个计算文件频率(DF)的方法是测定有多少份文件出现过“母牛”一词,然后除以文件集里包含的文件总数。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是log(10,000,000 / 1,000)=4。最后的tf-idf的分数为0.03 * 4=0.12。

    3 在向量空间模型里的应用

    tf-idf权重计算方法经常会和余弦相似性(cosine similarity)一同使用于向量空间模型中,用以判断两份文件之间的相似性


    参考维基百科

    展开全文
  • 向量空间模型的Java代码
  • 向量空间模型

    千次阅读 2012-11-18 17:03:16
    向量空间模型 (或者 词组向量模型) 作为向量的标识符(比如索引),是一个用来表示文本文件的代数模型。它应用于信息过滤、信息检索、索引以及关联规则。SMART是第一个使用这个模型的信息检索系统。 ...

    向量空间模型 (或者 词组向量模型) 作为向量的标识符(比如索引),是一个用来表示文本文件的代数模型。它应用于信息过滤、信息检索索引以及关联规则。SMART是第一个使用这个模型的信息检索系统。

    目录

       [隐藏
    • 1 定义
    • 2 应用
    • 3 范例: tf-idf 权重
    • 4 优点
    • 5 局限
    • 6 基于模型的以及扩展的向量空间模型
    • 7 以向量空间模型为工具的软件
      • 7.1 免费开放的软件资源
    • 8 进一步参考
    • 9 另见
    • 10 参考文献

    [编辑]定义

    文档和问题都用向量来表示。

    d_j = ( w_{1,j} ,w_{2,j} , ... ,w_{t,j} )
    q = ( w_{1,q} ,w_{2,q} , ... ,w_{t,q} )

    每一维都相当于是一个独立的词组。如果这个术语出现在了文档中,那它在向量中的值就非零。已经有很多不同的方法来计算这些值,这些值叫做(词组)权重。其中一种广为人知的算法就是tf_idf权重(见下面的例子)。 我们是根据应用来定义词组的。典型的词组就是一个单一的词、关键词、或者较长的短语。如果字被选为词组,那么向量的维数就是出现在词汇表中不同字的个数。 向量运算能通过查询来比较各文档。

    [编辑]应用

    Vector space model.jpg

    通过文档相似度理论的假设,比较每个文档向量和原始查询向量(两个向量的类型是相同的)之间的角度偏差,使得在文档中搜索关键词的关联规则是能够计算的。 实际上,计算向量之间夹角的余弦比直接计算夹角本身要简单。

    \cos{\theta} = \frac{\mathbf{d_2} \cdot \mathbf{q}}{\left\| \mathbf{d_2} \right\| \left \| \mathbf{q} \right\|}

    其中 \mathbf{d_2} \cdot \mathbf{q} 是文档向量(即右图中的d2)和查询向量(图中的q)的点乘。 \left\| \mathbf{d_2} \right\| 是向量d2 的模, 而 \left\| \mathbf{q} \right\| 是向量q的模. 向量的模通过下面的公式来计算:

    \left\| \mathbf{v} \right\| = \sqrt{\sum_{i=1}^n v_i^2}

    由于这个模型所考虑的所有向量都是严格非负的,如果其余弦值为零,则表示查询向量和文档向量是正交的,即不符合(换句话说,就是该检索词在文档中没有找到)。如果要了解详细的信息可以查看余弦相似性

    [编辑]范例: tf-idf 权重

    Salton, Wong 和 Yang [1] 提出的传统向量空间模型,一个词组在文件向量中权重就是局部参数和全局参数的乘积,这就是著名的tf-idf模型(词频_逆向文件频率)。文档的权重向量d就是 \mathbf{v}_d = [w_{1,d}, w_{2,d}, \ldots, w_{N,d}]^T,其中

    w_{t,d} = \mathrm{tf}_{t,d} \cdot \log{\frac{|D|}{|\{d' \in D \, | \, t \in d'\}|}}
    • \mathrm{tf}_{t,d} 是词组t在文档d中出现的频率(一个局部参数)
    • \log{\frac{|D|}{|\{d' \in D \, | \, t \in d'\}|}} 是逆向文件频率(一个全局参数)。|D| 是文件集中的文件总数; |\{d' \in D \, | \, t \in d'\}| 是含有词组t的文件数。

    文件dj 和索引q之间的余弦相似度通过一下公式来计算:

    \mathrm{sim}(d_j,q) = \frac{\mathbf{d_j} \cdot \mathbf{q}}{\left\| \mathbf{d_j} \right\| \left \| \mathbf{q} \right\|} = \frac{\sum _{i=1}^N w_{i,j}w_{i,q}}{\sqrt{\sum _{i=1}^N w_{i,j}^2}\sqrt{\sum _{i=1}^N w_{i,q}^2}}

    在简单的词组计算模型中,词组的权重不包含全局参数,而是单纯的计算词组出现的次数: w_{t,d} = \mathrm{tf}_{t,d}

    [编辑]优点

    相对于标准的布尔数学模型,向量空间模型具有如下优点:

    1. 基于线性代数的简单模型
    2. 词组的权重不是二元的
    3. 允许计算文档和索引之间的连续相似程度
    4. 允许其根据可能的相关性来进行文件排序
    5. 允许局部匹配

    [编辑]局限

    向量空间模型有如下局限:

    1. 不适用于较长的文件,因为它的相似值不理想(过小的内积和过高的维数)。
    2. 检索词组必须与文件中出现的词组精确匹配,不完整词组(子字串会导致“假阳性”匹配)。
    3. 语义敏感度不佳;具有相同的语境但使用不同的词组的文件不能被关联起来,导致“假阴性匹配”。
    4. 词组在文档中出现的顺序在向量中间中无法表示。
    5. 假定词组在统计上是独立的。
    6. 权重是直观上获得的而不够正式。

    然而,这些局限中的多数能够通过多种多样的方法集成来解决,包括数学上的技术,比如奇异值分解和词汇数据库(比如wordnet)

    [编辑]基于模型的以及扩展的向量空间模型

    基于模型的和基于扩展的向量空间模型包括:

    • 广义的向量空间模型
    • (增强的)基于主题的向量空间模型
    • 潜在的语义分析
    • 潜在的语义索引
    • DSIR模型
    • 词组辨识
    • Rocchio分类

    [编辑]以向量空间模型为工具的软件

    使用向量空间模型做实验或者想基于他们实现研究服务的人或许会对以下的这些软件包干兴趣。

    [编辑]免费开放的软件资源

    • Apache Lucene. 这是一个高性能的软件,用java写的功能全面的文本搜索引擎.
    • SemanticVectors. 语义向量索引,将随机投影算法(类似于潜在的语义分析) 应用于Apache Lucene构建的文本词组矩阵。
    • Gensim 是一个 Python+NumPy 的向量空间模型的框架。它包含对Tf–idf、潜在的语义索引、随机投影和潜在的狄利克雷边界的增值算法(有效利用内存空间)。
    • Antonio Gulli开发的Compressed vector space in C++
    • Text to Matrix Generator (TMG) 用于一系列特殊文本挖掘的matlab工具箱。(1)指标化(2)检索(3)降维(4)聚类(5)分类。大多数的TMG都是用matlab编写的,小部分是用Perl编写的。它包括了LSI的实现和聚类、NMF以及其他方法。
    • SenseClusters, 通过潜在的语义分析和单词的同现矩阵来进行文本和词组聚类的一个公开软件包。
    • S-Space Package,通过“统计语义”实现的的检索程序集成。

    [编辑]进一步参考

    • G. Salton, A. Wong, and C. S. Yang (1975), "A Vector Space Model for Automatic Indexing," Communications of the ACM, vol. 18, nr. 11, pages 613–620. (Article in which a vector space model was presented)
    • David Dubin (2004), The Most Influential Paper Gerard Salton Never Wrote (Explains the history of the Vector Space Model and the non-existence of a frequently cited publication)
    • Description of the vector space model
    • Description of the classic vector space model by Dr E Garcia

    [编辑]另见

    • 反向索引
    • 复合词组处理

    [编辑]参考文献

    1. ^ G. Salton , A. Wong , C. S. Yang, A vector space model for automatic indexing, Communications of the ACM, v.18 n.11, p.613-620, Nov. 1975

    原文:http://zh.wikipedia.org/wiki/%E5%90%91%E9%87%8F%E7%A9%BA%E9%96%93%E6%A8%A1%E5%9E%8B

    展开全文
  • Word2Vec词向量模型代码

    千次阅读 2018-08-31 15:01:27
    Word2Vec也称Word Embedding,中文的叫法是“词向量”或“词嵌入”,是一种计算非常高效的,可以从原始语料中学习字词空间向量的预测模型。Word2Vec可以把一个维数为所有词的数量的高维空间嵌入到一个低维的连续向量...
  • 转自:[Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型 阅读目录 1. 词向量 2.Distributed representation词向量表示 3.词向量模型 4.word2vec算法思想 5.doc2vec算法...
  • 一、前言 ...使用one-hot向量来表示字词,那么一个字词就需要一个词表大小的向量,而NLP任务中的词表往往是上万甚至上百万的,这会极大地增加神经网络中的参数数量。 ② 距离一致。使用one-hot...
  • 用tensorflow提取gensim预训练词向量模型并计算相似度 本文提供如何加载已经训练好的词向量模型并在tensorflow上计算常用词的相似度。 Step1. Import 一些package import gensim from gensim.models import word2vec...
  • VSM向量空间模型.doc

    2016-06-22 08:50:53
    VSM向量空间模型.doc
  • 字和词语联合训练的词向量模型

    万次阅读 2017-10-03 15:50:01
    今天又读了一篇刘知远老师团队2015年在顶会Ijcai上发表的论文《Joint Learning of Character and Word Embeddings》,同样是有关于在词向量生成部分进行了改进,引入了词语组成成分的单个汉字的信息(论文主要针对的...
  • 【NLP】⚠️学不会打我! 半小时学会基本操作 2⚠️词向量模型简介
  • 向量模型4.word2vec算法思想5.doc2vec算法思想6.参考内容 深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展。深度学习一直被人们推崇为一种类似于人
  • 本文翻译自Annoy(高维空间向量快速计算相似性的开源工具)的作者Erik Bernhardsson写的介绍Annoy的系列博客。这是第一篇,主要介绍了向量空间模型,降维等。作者曾是Spotify的数据科学家。
  • 向量及语言模型

    万次阅读 2018-06-21 10:23:24
    一、词向量向量(word embedding):词的向量表征。很多初识机器学习、深度学习等的同学,包括我,一定对词向量比较迷惑,为什么说前者之前都要提到词向量?答案:为了将输入数据表示成向量,在向量上进行数学建模...
  • Doc2Vec句向量模型PV-DM与PV-DBOW的理解

    千次阅读 2018-09-26 12:01:02
    在我们的句(Paragraph)向量模型中,每一个句子都被映射成一个独立的向量,这个句向量作为矩阵 的一列;同时,每一个词也被映射成一个独立的向量,这个词向量作为矩阵 的一列。对这个句向量和这些词向量求平均或者...
  • 向量空间模型(vector space model)

    万次阅读 多人点赞 2017-10-17 20:30:08
    向量空间模型(vector space model) 向量空间模型概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。当文档被表示为文档空间的向量,就可以通过计算向量...
  • 向量空间模型在信息检索中是众所周知的,其中每个文档被表示为向量。矢量分量表示文档中每个单词的权重或重要性。使用余弦相似性度量计算两个文档之间的相似性。 尽管对单词使用矢量表示的想法也已经存在了一段时间...
  • 关于Rocchio算法和向量空间模型反馈

    千次阅读 2014-11-15 10:26:35
    关于Rocchio算法和向量空间模型反馈
  • 基于可见度和支持向量机的导波信号模型分类
  • SVM支持向量模型

    万次阅读 2017-12-20 11:43:12
    和感知机模型一样,SVM(支持向量模型)也是旨在求出n维空间的最优超平面将正负类分开。这里的达到的最优是指在两类样本点距离超平面的最近距离达到最大,间隔最大使得它区别于感知机学习,SVM中还有核技巧,这样...
  • 向量:语言模型

    千次阅读 2017-12-07 21:44:55
    一、统计语言模型 1、什么是统计语言模型? 一个语言模型通常构建为字符串s的概率分布p(s),这里的p(s)实际上反映的是s作为一个句子出现的概率。 这里的概率指的是组成字符串的这个组合,在训练语料中出现的似然,与...
  • 3.词向量模型 a) LSA矩阵分解模型 采用线性代数中的奇异值分解方法,选取前几个比较大的奇异值所对应的特征向量将原矩阵映射到低维空间中,从而达到词矢量的目的。 b) PLSA 潜在语义分析...
  • 根据self-attention机制生成针对一个句子的多维度表征向量。就我个人来看,过去一提到attention这种基于注意力的模型,特别是用在情感分类方面,一般来说一定要和一个具体的任务联系在一起,这样才有attention的对象...
  • 向量自回归模型建模步骤梳理(VAR、VMA、VARMA模型
  • 这篇文章对论文Distributed Representations of Sentences and Documents的部分章节进行翻译,该论文提出了一个使用Word2vec的原理创建句子的特征向量的方法。我首先翻译这篇论文的两个核心章节2.2和2.3,这两个章节...
  • 向量空间模型(VSM)与TF-IDF

    千次阅读 2018-09-29 21:42:13
    向量空间模型,可用于计算文本相似度。 首先我们希望将文章向量化。可以将一篇文章表示成从该文章抽取的关键词及其权重所构成的向量。 ==但如何提取文章的关键词和他的权重? e.g. TF-IDF(词频-逆文档频率) == ....
  • Word2vec 句向量模型PV-DM与PV-DBOW

    万次阅读 2016-08-24 11:38:27
    参考原文:LE, Quoc V.; MIKOLOV, Tomas. Distributed representations of sentences ...这篇论文提出了一个使用Word2vec的原理创建句子的特征向量的方法,阅读需要先掌握Word2vec的相关知识,这里推荐一篇博文《Word
  • 支持向量回归模型SVR

    万次阅读 2017-02-20 11:19:22
     回顾下我们前面SVM分类模型中,我们的目标函数是让12||w||2212||w||22最小,同时让各个训练集中的点尽量远离自己类别一边的的支持向量,即yi(w∙ϕ(xi)+b)≥1yi(w∙ϕ(xi)+b)≥1。如果是加入一个松弛变量ξi≥0ξi...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 216,548
精华内容 86,619
关键字:

向量模型图