词的向量化

词的向量化

自然语言理解的问题要转化为机器学习的问题,第一步肯定是要找一种方法把这些符号数学化。词向量是自然语言处理中常见的一个操作,是搜索引擎、广告系统、推荐系统等互联网服务背后常见的基础技术。它分为One-hot Representation、基于SVD(奇异值分解)的方法、基于迭代的方法——Word2vec等三类,并基于飞浆(paddlepaddle)平台实现。在展开介绍之前,先补充一些基本概念和数学知识。

重要概念

词项-文档矩阵,TF-IDF(term frequency times inverse document frequency):

原理:一个词对于一篇文章是否重要,体现在两个方面:
1)一个词项在一个文档中出现次数越多,他相对于文档的重要性就越大,这个指标就是我们的TF值,TF = 词项在该文档中出现的次数/这篇文档所有的词项数。
2)若词项在整个语料库中出现的次数越多,那么对于某一篇文章而言这个词就越没有意义,即越不重要。我们用逆文档频率idf来表示这个词在整个语料库中的重要程度,故,出现越多的词,idf值会越低,出现越少的词,idf值会越高 IDF = log(N/d) ,其中N为所有文档的总数;d为出现过某个单词的文档的总数。
在现实中,词项在语料中的频率往往呈指数型。一个常用词出现的次数往往是一个次常用词出现次数的几十倍,这样常用词的权重会非常低(如“的”这样的词N/D几乎可能几乎等于1),故我们对逆文档频率取对数log,如此,文档频率的差别就从乘数变成了加数级了。即,我们在计算词项在一个文档中的重要程度,要考虑以上两个因素,用TF-IDF值来共同衡量 :
TF-IDF = TF * IDF

数学概念:

1)马尔科夫假设是指,每个词出现的概率只跟它前面的少数几个词有关。比如,二阶马尔科夫假设只考虑前面两个词,相应的语言模型是三元模型。引入了马尔科夫假设的语言模型,也可以叫做马尔科夫模型,产生了n-gram语言模型

2)统计语言模型(Statistical Language Model)

假定S表示某个有意义的句子,由一连串特定顺序排列的词ω1,ω2,...,ωn组成,这里n是句子的长度。现在,我们想知道S在文本中出现的可能性,即S的概率P(S),则P(S)=P1,ω2,...,ωn)。利用条件概率的公式:

 

1、One-hot Representation

这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。方法简单,然这种表示方法也存在一个重要的问题就是“词汇鸿沟”现象:任意两个词之间都是孤立的。从数学上解释,正交基的积为0。

参数:
    • input (Variable)-输入指数,最后维度必须为1
    • depth (scalar)-整数,定义one-hot维度的深度

返回:输入的one-hot表示

返回类型:变量(Variable)

例如:有如下三个特征属性:
性别:[“male”,”female”]
地区:[“Europe”,”US”,”Asia”]
浏览器:[“Firefox”,”Chrome”,”Safari”,”Internet Explorer”]。对于这样的特征,如果采用机器学习进行学习,通常我们需要对其进行特征数字化。

 import paddle.fluid as fluid
 import numpy
 label = fluid.layers.data(name="X", shape=[1], dtype="int64")
 one_hot_label = fluid.layers.one_hot(input=label, depth=10)
如果以浏览器为例:“Firefox”,”Chrome”,”Safari”,”Internet Explorer”,分别对应数值:0,1,2,3,如“Internet Explorer"的对应值3采用one-hot函数转换,可以得到,如下:[0.,0., 0., 1., 0.,  0., 0., 0., 0., 0.]

 结果解释:可以采用One-Hot编码的方式对上述的样本“[“male”,”US”,”Internet Explorer”]”编码,“male”则对应着[1.,0., 0., 0., 0.,  0., 0., 0., 0., 0.],同理“US”对应着[0.,1., 0., 0., 0.,  0., 0., 0., 0., 0.]。这样导致的一个结果就是数据会变得非常的稀疏。

2、基于SVD(奇异值分解)的方法

 为了找到词嵌入(word embeddings,可以简单的理解为与词向量等价),可以首先遍历巨大的语料库,统计两个词之间某种形式的共现次数,并将统计值保存在一个矩阵XX中。然后应用奇异值分解:X=USVTX=USVT。我们使用UU中的每一行作为每个词的词嵌入

用这种方式生成的词向量保留了足够多的语法和语义信息,但也还是存在一些问题:

    • 矩阵维度经常变动,比如新词频繁加入。
    • 由于绝大部分词并不会共现,造成矩阵过于稀疏。
    • 矩阵维度一般很高,大约106×106106×106。
    • 并且难以合并新词或新的文档。对于一个
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值