一种对评分矩阵中的未知评分进行预测的方法及装置
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种对评分矩阵中的未知评分进行预测的方法及装置。
背景技术
目前,很多机构(如电商平台)通常会使用物品推荐系统为用户进行物品推荐。物品推荐系统的推荐策略是以评分矩阵为依据的。而所谓评分矩阵,是以每个用户对每个物品的偏好评分为元素的矩阵。用户对物品的偏好程度越高,相应的评分也就越高。
假设评分矩阵是一个m*n矩阵(m行、n列),那么,评分矩阵实际上包含了m个用户对n个物品的偏好评分。评分矩阵的每个n维行向量实际上表示一个用户依次针对n个物品的偏好评分。
举例来说,物品推荐系统当想要针对用户张三进行物品推荐时,一般会从评分矩阵中查询用户张三对应的行向量,并读取用户张三对每个物品的评分,评分越高的物品被推荐给用户张三的可能性也越高。
然而,实际应用中,获取到每个用户对每个物品的偏好评分是不现实的,也就是说,评分矩阵中的很多元素的取值是未知的。
发明内容
为了对评分矩阵中的未知评分进行准确预测,本说明书实施例提供一种对评分矩阵中的未知评分进行预测的方法及装置,技术方案如下:
根据本说明书实施例的第1方面,提供一种对评分矩阵中的未知评分进行预测的方法,所述方法包括:
初始化第一矩阵与第二矩阵;其中,所述第一矩阵由每个用户对应的潜在偏好向量组成,所述第二矩阵由每个物品对应的潜在偏好向量组成;针对任一用户与任一物品,该用户对应的潜在偏好向量与该物品对应的潜在偏好向量的乘积表征该用户对该物品的偏好评分的预测值;
迭代执行以下步骤,直至满足指定条件:
以减小预设的损失函数的函数值为目标,根据所述第一矩阵、所述第二矩阵、评分矩阵以及用户社交数据,调整所述第一矩阵与所述第二矩阵;其中,所述评分矩阵中各已知评分的实际值与预测值越接近,所述损失函数的函数值越小;所述第一矩阵表征的各用户之间的关联关系与所述用户社交数据表征的各用户之间的关联关系越相似,所述损失函数的函数值越小;
若确定满足指定条件,则基于所述第一矩阵与所述第二矩阵,得到所述评分矩阵中的各未知评分的预测值。
根据本说明书实施例的第2方面,提供一种对评分矩阵中的未知评分进行预测的装置,所述装置包括:
初始化模块,初始化第一矩阵与第二矩阵;其中,所述第一矩阵由每个用户对应的潜在偏好向量组成,所述第二矩阵由每个物品对应的潜在偏好向量组成;针对任一用户与任一物品,该用户对应的潜在偏好向量与该物品对应的潜在偏好向量的乘积表征该用户对该物品的偏好评分的预测值;
执行模块,迭代执行以下步骤,直至满足指定条件:以减小预设的损失函数的函数值为目标,根据所述第一矩阵、所述第二矩阵、评分矩阵以及用户社交数据,调整所述第一矩阵与所述第二矩阵;其中,所述评分矩阵中各已知评分的实际值与预测值越接近,所述损失函数的函数值越小;所述第一矩阵表征的各用户之间的关联关系与所述用户社交数据表征的各用户之间的关联关系越相似,所述损失函数的函数值越小;
预测模块,若确定满足指定条件,则基于所述第一矩阵与所述第二矩阵,得到所述评分矩阵中的各未知评分的预测值。
本说明书实施例所提供的技术方案,采用矩阵分解方法,将评分矩阵分解为表征每个用户的潜在偏好特征的第一矩阵与表征每个物品的潜在偏好特征的第二矩阵。其中,针对任一用户与任一物品,将该用户的潜在偏好特征与物品的潜在偏好特征进行结合,就可以准确预测出该用户对该物品的偏好评分。可以通过机器学习的方式,以所述评分矩阵中的已知评分为样本,训练所述第一矩阵与所述第二矩阵。具体地,采用预设的损失函数表征训练效果,并据此迭代调整所述第一矩阵与所述第二矩阵。训练结束后,就可以基于所述第一矩阵与所述第二矩阵,预测所述评分矩阵中的未知评分。
此外,在本说明书实施例中,所述损失函数的函数值不仅受到基于所述第一矩阵与所述第二矩阵进行评分预测的准确程度的约束,还受到各用户的潜在偏好特征与各用户的社交关系的契合程度(一般而言,两个用户的社交关系越紧密,这两个用户的物品偏好就越相似)的约束。
通过本说明书实施例,可以在评分矩阵中有元素空缺的情况下,准确填补这些空缺,以提升物品推荐系统的推荐性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一种对评分矩阵中的未知评分进行预测的方法的流程示意图;
图2是本说明书实施例提供的一种评分矩阵的示意图;
图3是本说明书实施例提供的使用同态加密矩阵乘法进行训练的流程示意图;
图4是本说明书实施例提供的一种对评分矩阵中的未知评分进行预测的装置的结构示意图;
图5是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1是本说明书实施例提供的一种对评分矩阵中的未知评分进行预测的方法的流程示意图,包括以下步骤:
S100:初始化第一矩阵与第二矩阵。
本方法的执行主体可以是具有数据计算能力的计算机设备,如服务器、个人电脑、平板电脑、手机等。为了描述的方便,本文将图1所示的方法的执行主体称为预测方设备。
本方案的目的是预测评分矩阵中的未知评分,以便提升物品推荐系统的推荐性能。
在本说明书实施例中,上述的第一矩阵与第二矩阵,实际上采用矩阵分解方法,针对上述评分矩阵进行矩阵分解后得到的。
矩阵分解,是指把一个稀疏矩阵(有元素缺失的矩阵)近似地分解成两个小矩阵,这两个小矩阵的结合,就近似等于这个稀疏矩阵。如此,可以将对这个稀疏矩阵中的未知元素的预测问题,转化成对这两个小矩阵的训练问题。
图2是本说明书实施例提供的评分矩阵的示意图。具体来说,假设评分矩阵R是m*n矩阵(m行,n列),即一共有m个用户,n个物品,设置第一矩阵U为q*m矩阵(q行,m列),设置第二矩阵V为q*n矩阵(q行,n列),那么,R≈UT*V。其中,UT是U的转置矩阵。
通过矩阵分解,将用户的潜在偏好特征(可以认为是用户潜在具有的、对物品的偏好信息)与物品的潜在偏好特征(可以认为是物品潜在具有的、一些受到用户偏好的要素)分开考虑。所述第一矩阵实际上是由每个用户对应的潜在偏好向量组成,所述第二矩阵实际上是由每个物品对应的潜在偏好向量组成。在上例中,所述第一矩阵的各列向量实际上就是各用户分别对应的潜在偏好向量,所述第二矩阵的各列向量实际上就是各物品分别对应的潜在偏好向量。
需要说明的是,如果设置第一矩阵U为m*q矩阵,设置第二矩阵V为q*n矩阵,那么,R≈U*V,所述第一矩阵的各行向量实际上就是各用户分别对应的潜在偏好向量,所述第二矩阵的各列向量实际上就是各物品分别对应的潜在偏好向量。
如果设置第一矩阵U为m*q矩阵,设置第二矩阵V为n*q矩阵,那么,R≈U*VT,所述第一矩阵的各行向量实际上就是各用户分别对应的潜在偏好向量,所述第二矩阵的各行向量实际上就是各物品分别对应的潜在偏好向量。
总之,初始化第一矩阵与第二矩阵时,应当遵循:针对任一用户与任一物品,该用户对应的潜在偏好向量与该物品对应的潜在偏好向量的乘积表征该用户对该物品的偏好评分的预测值。
在本说明书实施例中,针对每个用户,该用户对应的潜在偏好向量包含了潜在的该用户对物品的偏好信息。针对每个物品,该物品对应的潜在偏好向量包含了潜在的该物品具有的一些受到用户偏好的要素。
因此,如果能够得到较为准确的第一矩阵与第二矩阵,就能够较为准确的预测出评分矩阵中的未知评分。这实际上是一个机器学习的问题。在本说明书实施例中,实际上以所述评分矩阵中的已知评分为样本,训练所述第一矩阵与所述第二矩阵。
在本说明书实施例中,初始化第一矩阵与第二矩阵,不仅包括采用矩阵分解方法,针对评分矩阵进行矩阵分解,得到第一矩阵与第二矩阵,还包括对第一矩阵与第二矩阵中的元素进行初始化。具体地,可以对所述第一矩阵与所述第二矩阵中的元素进行随机初始化。也可以根据所述评分矩阵中的已知评分,确定所述第一矩阵与所述第二矩阵中的部分元素,再对所述第一矩阵与所述第二矩阵中的剩余元素进行随机初始化。
S102:以减小预设的损失函数的函数值为目标,根据所述第一矩阵、所述第二矩阵、评分矩阵以及用户社交数据,调整所述第一矩阵与所述第二矩阵。
在本说明书实施例中,以评分矩阵中的已知评分为样本,迭代训练所述第一矩阵与所述第二矩阵。并且,需要预设一个损失函数,用于衡量每次迭代后的训练效果。
由于研究表明,社交关系较为亲近的两个用户对物品的偏好也往往相似。因此,为了进一步提升训练效果,所述损失函数的函数值不仅受到基于所述第一矩阵与所述第二矩阵进行评分预测的准确程度的约束,还受到各用户的潜在偏好特征与各用户的社交关系的契合程度的约束。也就是说,还会在训练过程中引入用户之间的社交关系信息,以衡量对所述第一矩阵的训练效果。
在步骤S102中可以表征各用户之间的关联关系(社交紧密关系)的用户社交数据,也作为调整所述第一矩阵的依据。
假设所述第一矩阵的各列向量为各用户分别对应的潜在偏好向量,所述第二矩阵的各列向量为各物品分别对应的潜在偏好向量,那么,预设的损失函数可以是公式一:
需要说明的是,在公式一中,L表示损失函数,rij表示评分矩阵R中已知的用户i对物品j的偏好评分,ui表示第一矩阵U中对应于用户i的潜在偏好向量,vj表示第二矩阵V中对应于物品j的潜在偏好向量,为正则项(防止训练过拟合)。一般而言,rij是所述评分矩阵中的每个已知评分,并不包括所述评分矩阵中的未知评分。
此外,在公式一中,所述用户社交数据具体为用户社交关系矩阵S,其中,S中的元素sik用于表征用户i与用户k之间的关联关系,用户i与用户k之间的关联关系越强(社交关系越紧密),sik越大。
还需要说明的是,如果以减小预设的损失函数的函数值为目标,那么实际上要求尽可能小,也要尽可能小。那么,就可以达到如下训练效果:评分矩阵中的已知评分越高,已知评分对应的用户的潜在偏好特征与物品的潜在偏好特征就越接近(契合);两个用户之间的社交关系越紧密,这两个用户的潜在偏好特征就越相似。
从另一个角度看,所述评分矩阵中各已知评分的实际值与预测值越接近,所述损失函数的函数值越小,其中,各已知评分的预测值是基于所述第一矩阵与所述第二矩阵得到的。所述第一矩阵表征的各用户之间的关联关系与所述用户社交数据表征的各用户之间的关联关系越相似,所述损失函数的函数值越小。
此外,预设的损失函数可以是公式二:
另外,假设所述第一矩阵的各行向量为各用户分别对应的潜在偏好向量,所述第二矩阵的各行向量为各物品分别对应的潜在偏好向量,那么预设的损失函数可以是公式三:
假设所述第一矩阵的各行向量为各用户分别对应的潜在偏好向量,所述第二矩阵的各列向量为各物品分别对应的潜在偏好向量,那么预设的损失函数可以是公式四:
总之,对本领域技术人员而言,在理解了本方案的核心思想之后,很容易想到多种形式的损失函数,都应在本发明所要求保护的范围之内。
在本说明书实施例中,每次迭代中,实际上就是以减小预设的损失函数的函数值为目标,根据所述第一矩阵、所述第二矩阵、评分矩阵以及用户社交数据,调整一次所述第一矩阵与所述第二矩阵。
具体地,可以先得到所述损失函数对应的第一梯度公式与第二梯度公式。其中,所述第一梯度公式是以所述第一矩阵为变量,对所述损失函数求偏导数得到的,所述第二梯度公式是以所述第二矩阵为变量,对所述损失函数求偏导数得到的。
假设损失函数如上述的公式一所示,那么,所述第一梯度公式可以是公式五:
其中,m为各用户的数量,1m为维度值皆为1的m维向量,即(1,1,…,1)。
所述第二梯度公式可以是公式六:
预测方设备在步骤S102中,具体可以将所述第一矩阵U、所述第二矩阵V、所述评分矩阵R以及用户社交关系矩阵S代入所述损失函数对应的第一梯度公式,得到第一梯度,并基于梯度下降法,根据所述第一梯度对所述第一矩阵进行调整;以及,将所述第一矩阵U、所述第二矩阵V、评分矩阵R代入所述损失函数对应的第二梯度公式,得到第二梯度,并基于梯度下降法,根据所述第二梯度对所述第二矩阵进行调整。
S104:判断是否满足指定条件,若是,则执行步骤S106,否则,返回执行步骤S102。
在一次迭代后,预测方设备需要判断是否满足指定条件。其中,所述执行条件具体可以是迭代次数达到指定次数,或者所述损失函数的函数值小于指定阈值。
S106:若确定满足指定条件,则基于所述第一矩阵与所述第二矩阵,得到所述评分矩阵中的各未知评分的预测值。
如果满足指定条件,就停止训练,基于训练得到的第一矩阵与第二矩阵,对所述评分矩阵中的各未知评分进行预测。例如,若所述第一矩阵的各列向量为各用户分别对应的潜在偏好向量,所述第二矩阵的各列向量为各物品分别对应的潜在偏好向量,则可以将所述第一矩阵的转置矩阵与所述第二矩阵相乘,得到所述评分矩阵的近似矩阵,针对任一位置,所述评分矩阵中该位置的未知评分的预测值就是所述近似矩阵中该位置的元素值。
如果不满足指定条件,就需要返回执行步骤S102。
通过图1所示的方法,可以在评分矩阵中有元素空缺的情况下,准确填补这些空缺,以提升物品推荐系统的推荐性能。
此外,在实际应用中,有时,用户社交数据并非存储于所述预测方设备,而是存储于社交服务方设备。而出于数据隐私安全的需要,所述预测方设备并没有权利获取所述用户社交数据的明文。
为此,在本说明书实施例中,预测方设备可以基于与所述社交服务方设备约定的同态加密算法,根据所述第一矩阵、所述第二矩阵、评分矩阵以及所述用户社交数据,调整所述第一矩阵与所述第二矩阵。如此,可以在用户社交数据不泄露给预测方设备的前提下,对第一矩阵与第二矩阵进行训练(主要是对第一矩阵进行训练)。
举例来说,假设训练过程是基于上述的公式一、公式五与公式六进行的,那么,可见在公式五种,U*S与U*diag(S*1m)的计算有赖于社交服务方设备存储的用户社交关系矩阵S。但是,预测方设备无权获取所述用户社交关系矩阵S的明文。
因此,预测方设备将所述第一矩阵U、所述第二矩阵V、所述评分矩阵R以及用户社交关系矩阵S代入所述损失函数对应的第一梯度公式,得到第一梯度,可以具体为:
预测方设备基于与所述社交服务方设备约定的同态加密矩阵乘法,得到U*S以及U*diag(S*1m);然后将所述第一矩阵U、所述第二矩阵V、所述评分矩阵R、U*S以及U*diag(S*1m)代入所述损失函数对应的第一梯度公式,得到第一梯度,过程可以如图3所示。
更具体地,所述同态加密矩阵乘法可以是基于所述预测方设备与所述社交服务方设备约定的同态加密向量乘法实现的。由于矩阵乘法的过程实际上是多对向量相乘的过程,因此,对本领域技术人员而言,理解了下述的同态加密向量乘法,很容易想到如何实现上述的同态加密矩阵乘法。值得强调的,所述同态加密矩阵乘法也可以不基于所述预测方设备与所述社交服务方设备约定的同态加密向量乘法实现。
以下给出一种同态加密向量乘法的方式,但这并不构成对本发明的限制。
针对所述预测方设备持有的向量x=(x1,x2,…,xn)与所述社交服务方设备持有的向量y=(y1,y2,…,yn),采用同态加密向量乘法计算x*y,包括如下步骤:
1)所述预测方设备生成密钥对;所述密钥对包括私钥sk与公钥pk;
2)所述预测方设备将pk发送给所述社交服务方设备,以及,针对x的每个维度值xf,使用pk对xf进行加密,得到cf,并将cf发送给所述社交服务方设备;其中,f∈(1,2,…,n);
3)所述社交服务方设备计算以及,生成随机数b;
4)所述社交服务方设备使用pk对-b进行加密,得到d;
5)所述社交服务方设备计算z=w*d,并将z与b发送给所述预测方设备;
6)所述预测方设备使用sk对z进行解密,得到a,并将a+b作为x*y的结果。
基于图1所示的对评分矩阵中的未知评分进行预测的方法,本说明书实施例还对应提供了一种对评分矩阵中的未知评分进行预测的装置,如图4所示,包括:
初始化模块401,初始化第一矩阵与第二矩阵;其中,所述第一矩阵由每个用户对应的潜在偏好向量组成,所述第二矩阵由每个物品对应的潜在偏好向量组成;针对任一用户与任一物品,该用户对应的潜在偏好向量与该物品对应的潜在偏好向量的乘积表征该用户对该物品的偏好评分的预测值;
执行模块402,迭代执行以下步骤,直至满足指定条件:以减小预设的损失函数的函数值为目标,根据所述第一矩阵、所述第二矩阵、评分矩阵以及用户社交数据,调整所述第一矩阵与所述第二矩阵;其中,所述评分矩阵中各已知评分的实际值与预测值越接近,所述损失函数的函数值越小;所述第一矩阵表征的各用户之间的关联关系与所述用户社交数据表征的各用户之间的关联关系越相似,所述损失函数的函数值越小;
预测模块403,若确定满足指定条件,则基于所述第一矩阵与所述第二矩阵,得到所述评分矩阵中的各未知评分的预测值。
用户社交数据存储于社交服务方设备;
所述执行模块402,基于与所述社交服务方设备约定的同态加密算法,根据所述第一矩阵、所述第二矩阵、评分矩阵以及所述用户社交数据,调整所述第一矩阵与所述第二矩阵;
其中,所述装置无权获取所述用户社交数据的明文。
所述第一矩阵的各列向量为各用户分别对应的潜在偏好向量,所述第二矩阵的各列向量为各物品分别对应的潜在偏好向量。
所述用户社交数据,具体包括:
用户社交关系矩阵S;其中,S中的元素sik用于表征用户i与用户k之间的关联关系,用户i与用户k之间的关联关系越强,sik越大;
所述损失函数具体如下:
其中,L表示损失函数,rij表示评分矩阵R中已知的用户i对物品j的偏好评分,ui表示第一矩阵U中对应于用户i的潜在偏好向量,vj表示第二矩阵V中对应于物品j的潜在偏好向量,为正则项。
所述执行模块402,将所述第一矩阵U、所述第二矩阵V、所述评分矩阵R以及用户社交关系矩阵S代入所述损失函数对应的第一梯度公式,得到第一梯度,并基于梯度下降法,根据所述第一梯度对所述第一矩阵进行调整;以及,将所述第一矩阵U、所述第二矩阵V、评分矩阵R代入所述损失函数对应的第二梯度公式,得到第二梯度,并基于梯度下降法,根据所述第二梯度对所述第二矩阵进行调整;
其中,所述第一梯度公式是以所述第一矩阵为变量,对所述损失函数求偏导数得到的;所述第二梯度公式是以所述第二矩阵为变量,对所述损失函数求偏导数得到的;
所述第一梯度公式如下:
其中,m为各用户的数量,1m为维度值皆为1的m维向量;
所述第二梯度公式如下:
所述用户社交关系矩阵存储于社交服务方设备;
所述执行模块402,基于与所述社交服务方设备约定的同态加密矩阵乘法,得到U*S以及U*diag(S*1m);其中,所述装置无权获取所述用户社交关系矩阵S的明文;
将所述第一矩阵U、所述第二矩阵V、所述评分矩阵R、U*S以及U*diag(S*1m)代入所述损失函数对应的第一梯度公式,得到第一梯度。
所述同态加密矩阵乘法是基于所述预测方设备与所述社交服务方设备约定的同态加密向量乘法实现的;
针对所述预测方设备持有的向量x=(x1,x2,…,xn)与所述社交服务方设备持有的向量y=(y1,y2,…,yn),采用同态加密向量乘法计算x*y,包括如下步骤:
1)所述装置生成密钥对;所述密钥对包括私钥sk与公钥pk;
2)所述装置将pk发送给所述社交服务方设备,以及,针对x的每个维度值xf,使用pk对xf进行加密,得到cf,并将cf发送给所述社交服务方设备;其中,f∈(1,2,…,n);
3)所述社交服务方设备计算以及,生成随机数b;
4)所述社交服务方设备使用pk对-b进行加密,得到d;
5)所述社交服务方设备计算z=w*d,并将z与b发送给所述装置;
6)所述装置使用sk对z进行解密,得到a,并将a+b作为x*y的结果。
所述指定条件,具体包括:
迭代次数达到指定次数;
或,所述损失函数的函数值小于指定阈值。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图1所示的方法。
图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图1所示的方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。