具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的服务器其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云。在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。本发明的实施例中,远端网络设备、终端设备与服务器之间可通过任何通信方式实现通信,包括但不限于,基于3GPP(3rdGeneration Partnership Project,第三代合作伙伴计划)、LTE(Long Term Evolution,长期演进)、WIMAX(Worldwide Interoperability for Microwave Access,全球微波互联接入)的移动通信、基于TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)、UDP(User Datagram Protocol,用户数据报协议)的计算机网络通信以及基于蓝牙、红外传输标准的近距无线传输方式。
本发明实施例提供的方案可以应用在应用商店或者其他需要对应用进行打标签的场景中,实现对还未标注标签的应用打上相应匹配的标签。本方案主要使用在运营应用商店的服务器中,通过对新入库的应用的描述信息进行切词分析,给新入库的应用自动化生成匹配的标签。另外,本发明提供的方案对应用场景以及应用的设备不做限定。
本发明实施例通过标签生成模型实现自动化生成应用的标签,因此本发明实施例提供的技术方案分两部分构成:第一部分利用构建的分词特征库和人工标注的历史样本进行DNN(Deep Neural Network,深度神经网络)模型训练,生成标签生成模型;第二部分利用训练好的标签生成模型对待标注标签的应用打标签。具体地,首先构造应用打标签的DNN模型,然后根据人工标注好标签的应用训练DNN模型,最后对于一个新入库的应用运用训练好的DNN模型预测新入库应用的类别。
下面按照标签生成模型的生成以及利用标签生成模型给新应用打标签对本发明实施例进行详细介绍。
第一部分:标签生成模型的生成
在生成给应用标注标签的标签生成模型时,根据已标注标签的应用(样本应用)以及其标签向量,训练出标签生成模型的模型参数,以根据模型参数生成本方案所述的标签生成模型。
如图1所示,在一个实施例中,标签生成模型通过以下步骤得到:
S110,获取样本应用和其标签向量。
在本实施例中,样本应用为已标注标签的应用集合。服务器获取多个已标注标签的应用,以及每个已标注标签的应用对应的标签向量。在具体的实现方式中,可随机筛选一批应用,由人工对该批应用进行打标签。例如,应用为“微信”,可人工给“微信”打上“社交”、“聊天”的标签。应用为“饿了么”,可人工给“饿了么”打上“外卖”、“美食”的标签。
服务器在获取样本应用的同时,进一步获取样本应用的描述信息。样本应用的描述信息为对该样本应用的功能、实现方式、具有的优点以及应用场景等的描述。用户可通过样本应用的描述信息对样本应用进行多方面的了解。例如,其中一个样本应用为“抖音短视频”,应用描述信息为“原创音乐短视频分享平台。潮流音乐、搭配舞蹈、表演等内容形式,还有超多原创滤镜、场景切换等,帮你打造刷爆朋友圈的魔性短视频!脑洞有多大,舞台就有多大”。在该应用描述信息中,体现了“抖音短视频”这个应用APP的功能及特性等。
S130,将样本应用的描述信息进行分词,获得样本分词集合。
服务器获取到样本应用的描述信息后,进一步对描述信息进行分词,以获得对应该样本应用的样本分词集合。
假设,某一个应用i,对应用i的描述信息中的内容进行分词,分词结果用集合wi表示:
wi={w1,w2,w3,...}。
例如:“打字最精准、界面最个性化的输入法”语句的分词结果为
wi={打字,精准,界面,个性化,输入法}。
S150,根据所述样本分词集合生成样本应用描述信息的实数向量。
服务器对样本的描述信息内容进行切词处理后,得到的样本分词集合中包括多个分词。但是,不是所有的分词都用于转换成对应的实数向量。在该实施例中,步骤S150中“根据所述样本分词集合生成样本应用的描述信息实数向量”,包括:获取样本分词集合中每个分词的价值;根据样本集合中每个分词的价值获取预设数量的分词;根据该预设数量的分词生成特征向量;根据特征向量生成样本应用的描述信息的实数向量。
其中,分词的价值通过“统计每个分词在样本应用的描述信息中出现的次数,根据分词出现的次数得到该分词的价值”的方式确定。在该实施例中,根据每个分词的价值,确定该分词对于样本应用的重要程度,从而获取对样本应用重要程度较高的分词,生成对应的特征向量。特征向量中包含预设数量的分词。特征向量中的每个分词从一定程度上反应该样本应用的特性。具体地,可根据分词的价值从大到小的顺序对分词集合中的分词进行排序,获取排序在前的预设数量的分词,形成所述特征向量。所述特征向量中的元素,按照分词的价值从大到小进行排序。
以下提供一实施方式,该实施方式表述了将特征向量转换成对应的实数向量具体实现过程:
首先,样本应用的特征库生成:
n表示人工标准标签的应用数量;
tagi表示应用i的标签的集合,该数据是人工标注。例如:微信标注“社交”、“聊天”标签集合。
nums(w,t)表示分词w在具有标签t的应用中出现的次数;
其中,precent(w,t)表示分词w分布到标签t的占比
vw表示分词w的价值
上述表达式是借鉴决策树中的GINI指标衡量分词价值。当分词的区分度越明显时vw越大。此外,该公式对在总体样本出现次数少于100的分词去掉,剔除生僻的分词。
根据vw计算所有样本应用的描述信息中,所有分词的价值。例如,再取前1万个词作为特征库U。
其次,把应用描述信息转换为实数向量:
si,j表示对应用i描述信息进行分词,按照分词vw大小顺序第j个分词名称,j取前50。
Xi,0表示应用i的原始输入特征,即本方案中的特征向量。
X0=(si,1,si,2,...si,50)
例如:“精准输入法,方便打字”,那么分词后′精准′,′输入法′,′方便′,′打字′,按照分词价值排序为′打字′、″输入法′
Xi,0=(打字,输入法,0,...,0)
定义哈希函数hash(X0)表示对向量X0每个元素的字符串hash值,然后对这个hash值取100万的模。公式如下:
hash(Xi,0)=(hashcode(si,1)%1000000,...,hashcode(si,50)%1000000)
上式中hashcode(l)是取字符串的哈希值;
应用i的描述信息转换为实数向量Xi;
Xi=hash(Xi,0);
上述实施方式仅仅表述特征向量转换成对应的实数向量的一个实现方式,对特征向量转换成对应的实数向量的过程中的数量及参数不作限定。
S170,将样本应用描述信息的实数向量和对应的标签向量,输入深度神经网络中进行训练,生成所述标签生成模型。
在本实施例中,样本应用对应的标签向量可由人工圈定。在具体的实施方式中,可参照如下方式获取样本应用对应的标签向量。
yi表示应用i的人工标准标签的向量,该向量为200维,生成方法如下:
首先对标签库的标签随机排序,标签库是人工圈定的200个标签组成的。这样得到每个标签的排序位作为标签的序号。
按照标签序号,在对应的向量位填上1,其余填上0。例如:“社交”标签的序号为1、“聊天”标签的序号为3,那么微信这款应用的标签向量为yi=(1,0,1,0,0,…,0)。
服务器获取到样本应用描述信息对应的标签向量以及样本应用描述信息中分词对应的实数向量之后,将标签向量以及实数向量输入到深度神经网络中进行训练,生成所述标签生成模型。具体地,先将标签向量和实数向量输入到深度神经网络对应的损失函数模型中,通过预设算法求解损失函数最小时对应的深度神经网络的模型参数,进而根据模型参数生成本方案所述的标签生成模型。此处,预设算法为梯度下降法。
以下提供一具体实施例,以详细说明如何根据样本应用的标签向量和对应的实数向量,生成本方案所述的标签生成模型。
首先,先定义本方案中采用的深度神经网络(DNN)模型:
定义1个输入层,5个隐藏层,1个输入层,结构如图2所示;
参见图2所示,该结构中的输入层、隐藏层都是50维的向量,输出层为1维的向量。
模型参数的定义步骤:
X表述输入参数,也即是上述实施例所述的实数向量
wi是50*50的矩阵,表示每个隐藏层的与上一个隐藏(输入层)连接的权重系数,模型总共5个隐藏层所以i=1,2,3,4,5;
bi是1*50的矩阵,表示每个隐藏层的偏置系数;
w是50*200的矩阵,最后一层隐藏层到输出增的权重系数;
b是1*200的矩阵,表示输出层的偏置系数。
f(L)表示隐藏层的输出函数,其中L是1*k的向量,该函数会把L中每个元素带入逻辑斯蒂函数进行变换,最终逻辑斯蒂变换后的1*k向量。
Y是一个1*200的矩阵,是用于预测应用的标签
各层关系如下:
L1=f(X·w1+b1)
L2=f(L1·w2+b2)
L3=f(L2·w3+b3)
L4=f(L3·w4+b4)
L5=f(L4·w5+b5)
Y=f(L5·w+b)
模型参数训练步骤:
首先,定义损失函数:
n表示收集样本应用的数量;
(Xi,yi)表示根据上述实施例所述的方法提取第i个样本应用的DNN模型参数输入Xi。Xi也即是表示上述所述的样本应用的实数向量,人工标注的标签向量为yi;
Yi表示模型参数定义步骤中所述的预测应用标签,是关于w1,w2,w3,w4,w5,b1,b2,b3,b4,b5,w,b的变量;
其中,损失函数的表述方式如下:
其中||t||2表示取向量t所有元素的平方和,把Yi按照模型参数定义步骤中的计算表达式展开,通过梯度下降法求解损失函数los最小时对应解w1,w2,w3,w4,w5,b1,b2,b3,b4,b5,w,b即为所要求解的模型参数。
梯度下降法如下:
第1步:把模型所有参数统一记到一个集合,不妨记为θ={θi},随机给定一组在0-1之间,设为θ(0),初始化迭代步数k=0
第2步:迭代计算
其中ρ用于控制收敛速度,取0.01
第3步:判断是否收敛
如果
那么就返回θ
(k+1),否则回到第2步继续计算,其中α是一个很小的值,可以取α=0.01·ρ。
通过上述模型参数训练步骤,获取到模型参数定义步骤中所需要的参数,即w1,w2,w3,w4,w5,b1,b2,b3,b4,b5,w,b,从而训练出DNN模型中每一隐藏层的参数,进而确定出本方案所述的标签生成模型。也即是每一隐藏层参数确定的DNN模型。
因此,通过上述方式确定出本方案所述的标签生成模型。进一步地,根据该标签生成模型,自动化给待标注标签的应用生成对应的标签。
第二部分:运用DNN模型给新入库应用打标签
本发明实施例提供一种应用标注标签方法,利用第一部分生成的DNN模型,给待标注标签应用打标签。如图3所述,在一实施例中,该应用标注标签方法包括如下步骤:
S10,将待标注标签应用的描述信息进行分词,获得分词集合;
在本实施例中,服务器获取待标注标签应用的描述信息,并对该描述信息进行切词,获得切词后的分词集合。
假设待标注标签应用为应用A。对应用A的描述信息内容进行切词,得到的分词集合为B。B={B1、B2、B3、B4、B5……}。其中,B1、B2、B3、B4、B5表示分词集合中每个分词表示的元素。
S20,根据所述分词集合生成所述描述信息的实数向量。
服务器获取到待标注标签应用的分词集合后,根据分词集合中每个分词生成待标注标签应用的描述信息对应的实数向量。在一实施例中,如图4所示,步骤S20包括:
S21,获取所述分词集合中每个分词的价值;
S23,根据所述每个分词的价值获取预设数量的分词;
S25,根据所述预设数量的分词生成特征向量;
S27,根据所述特征向量生成所述描述信息的实数向量。
在该实施例中,服务器首先获取待标注标签应用对应的分词集合中,每个分词的价值。此处,每个分词的价值根据第一部分标签生成模型的生成中所提到的分词价值的方式确定。也即是,每个分词的价值是根据分词w在具有标签t的应用中出现的次数确定。
进一步根据每个分词的价值获取预设数量的分词,将该预设数量的分词生成特征向量,进而根据特征向量生成待标注标签应用的描述信息的实数向量。具体地,可在获取到分词集合中每个分词的价值之后,根据每个分词的价值对分词集合中的分词进行排序,获取排序在前的预设数量的分词。将排序在前的预设数量的分词按照排序顺序生成特征向量。进一步根据特征向量生成实数向量。具体可获取特征向量中每个元素的字符串的哈希值;根据每个元素的哈希值生成应用描述信息的实数向量。
例如,Sa,j表示对待标注标签应用A描述信息进行分词,按照分词价值大小顺序的第j个分词的名称,j可取前50。
Xa,0表示应用A的输入特征。
X0=(Sa,1,Sa,2,Sa,3,Sa,4.....Sa,50)
例如:“精准输入法,方便打字”,那么分词后‘精准’、‘输入法’、‘方便’、‘打字’,按照分词价值排序为‘打字’、‘输入法’。
Xa,0=(打字,输入法,0,0.....0)
定义哈希函数hash(X0)表示对向量X0每个元素的字符串hash(哈希)值,然后对这个hash值取100万的模。公式如下:
hash(Xa,0)=(hashcode(Sa,1)%1000000,.....hashcode(Sa,50)%1000000)
上式中hashcode(l)是取字符串的哈希值。
因此,可获得待标注标签应用A的描述信息转换为实数向量Xa。
Xa=hash(Xa,0)
S30,将所述实数向量输入预生成的标签生成模型中,得到标签预测向量;其中,所述标签生成模型用于表征所述实数向量与所述标签预测向量之间的关联关系。
在步骤S20中已获取到待标注标签应用对应的实数向量,该步骤将待标注标签应用对应的实数向量输入到上述第一部分生成的标签生成模型中,以生成待标注标签的预测向量。其中,标签生成模型用于表征待标注标签对应的实数向量与标签预测向量之间的关联关系。此处得到的标签预测向量中,每个元素的预测值对应一个特征向量中的一个分词。
S40,获取所述标签预测向量中预测值大于阈值的元素,将该元素对应的分词作为所述待标注标签应用的标签。
在本实施例中,步骤S30获得的标签预测向量中每个元素就是一个预测值,获取预测值大于阈值的元素,将该元素对应的特征向量中的分词作为该待标注标签应用的标签。
在第二部分“运用DNN模型给新入库应用打标签”中,设新入库应用为A,首先提取应用A的应用描述信息,通过第二部分的方法计算应用A描述信息的DNN模型输入数据Xa,然后通过第一部分中根据上述梯度下降法方法训练好的DNN模型参数w1,w2,w3,w4,w5,b1,b2,b3,b4,b5,w,b,代入DNN模型,得到标签预测向量Ya,然后取Ya中值大2个元素(也可以是其他数量的元素)对应序号。再根据序号取出标签作为新入库应用A的标签。
本发明提供的一种应用标注标签方法,根据待标注标签的应用的描述信息得到该应用的描述信息对应的分词集合,通过分词集合得到该应用的实数向量,进一步将该实数向量输入到标签生成模型中,获取每个分词对应的预测值。当分词的预测值大于预先设定的阈值时,将该预测值对应的分词作为该应用的标签。通过机器学习的方法对新入库的待标注标签的应用打标签,可以大大节省人力物力成本,并且对新入库的应用给出正确的标签判断。
基于同一发明构思,本发明还提供一种应用标注标签装置,下面结合附图对本发明装置的具体实施方式进行详细介绍。
如图5所示,在一实施例中,该应用标注标签装置包括分词模块100、生成模块200、获取模块300和标注标签模块400。
分词模块100用于将待标注标签应用的描述信息进行分词,获得分词集合。在本实施例中,服务器获取待标注标签应用的描述信息,并对该描述信息进行切词,获得切词后的分词集合。假设待标注标签应用为应用A。对应用A的描述信息内容进行切词,得到的分词集合为B。B={B1、B2、B3、B4、B5……}。其中,B1、B2、B3、B4、B5表示分词集合中每个分词表示的元素。
生成模块200用于根据所述分词集合生成所述描述信息的实数向量。服务器获取到待标注标签应用的分词集合后,根据分词集合中每个分词生成待标注标签应用的描述信息对应的实数向量。在一实施例中,生成模块200还用于获取所述分词集合中每个分词的价值;根据所述每个分词的价值获取预设数量的分词;根据所述预设数量的分词生成特征向量;根据所述特征向量生成所述描述信息的实数向量。在该实施例中,服务器首先获取待标注标签应用对应的分词集合中,每个分词的价值。此处,每个分词的价值根据第一部分标签生成模型的生成中所提到的分词价值的方式确定。也即是,每个分词的价值是根据分词w在具有标签t的应用中出现的次数确定。
进一步根据每个分词的价值获取预设数量的分词,将该预设数量的分词生成特征向量,进而根据特征向量生成待标注标签应用的描述信息的实数向量。具体地,可在获取到分词集合中每个分词的价值之后,根据每个分词的价值对分词集合中的分词进行排序,获取排序在前的预设数量的分词。将排序在前的预设数量的分词按照排序顺序生成特征向量。进一步根据特征向量生成实数向量。具体可获取特征向量中每个元素的字符串的哈希值;根据每个元素的哈希值生成应用描述信息的实数向量。
例如,Sa,j表示对待标注标签应用A描述信息进行分词,按照分词价值大小顺序的第j个分词的名称,j可取前50。
Xa,0表示应用A的输入特征。
X0=(Sa,1,Sa,2,Sa,3,Sa,4.....Sa,50)
例如:“精准输入法,方便打字”,那么分词后‘精准’、‘输入法’、‘方便’、‘打字’,按照分词价值排序为‘打字’、‘输入法’。
Xa,0=(打字,输入法,0,0.....0)
定义哈希函数hash(X0)表示对向量X0每个元素的字符串hash(哈希)值,然后对这个hash值取100万的模。公式如下:
hash(Xa,0)=(hashcode(Sa,1)%10000,.....hashcode(Sa,50)%10000)
上式中hashcode(l)是取字符串的哈希值。
因此,可获得待标注标签应用A的描述信息转换为实数向量Xa。
Xa=hash(Xa,0)
获取模块300用于将所述实数向量输入预生成的标签生成模型中,得到标签预测向量;其中,所述标签生成模型用于表征所述实数向量与所述标签预测向量之间的关联关系。在生成模块200中已获取到待标注标签应用对应的实数向量,该步骤将待标注标签应用对应的实数向量输入到上述第一部分生成的标签生成模型中,以生成待标注标签的预测向量。其中,标签生成模型用于表征待标注标签对应的实数向量与标签预测向量之间的关联关系。此处得到的标签预测向量中,每个元素的预测值对应一个特征向量中的一个分词。
标注标签模块400用于获取所述标签预测向量中预测值大于阈值的元素,将该元素对应的分词作为所述待标注标签应用的标签。在本实施例中,获取模块300获得的标签预测向量中每个元素就是一个预测值,获取预测值大于阈值的元素,将该元素对应的特征向量中的分词作为该待标注标签应用的标签。
在其他实施例中,上述应用标注标签装置的各个模块还用于执行上述应用标注标签方法中相应步骤实现的功能,此处不再详述。
本发明还提供一种存储介质。该存储介质上存储有计算机程序;所述计算机程序被处理器执行时,实现上述任一实施例所述的应用标注标签方法。该存储介质可以是存储器。例如,内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本发明所公开的存储介质包括但不限于这些类型的存储器。本发明所公开的存储器只作为例子而非作为限定。
本发明还提供一种计算机设备。一种计算机设备包括:一个或多个处理器;存储器;一个或多个应用程序。其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行上述任一实施例所述的应用标注标签方法。
图6为本发明一实施例中的计算机设备的结构示意图。本实施例所述计算机设备可以是服务器、个人计算机以及网络设备。如图6所示,设备包括处理器603、存储器605、输入单元607以及显示单元609等器件。本领域技术人员可以理解,图6示出的设备结构器件并不构成对所有设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储器605可用于存储应用程序601以及各功能模块,处理器603运行存储在存储器605的应用程序601,从而执行设备的各种功能应用以及数据处理。存储器可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本发明所公开的存储器包括但不限于这些类型的存储器。本发明所公开的存储器只作为例子而非作为限定。
输入单元607用于接收信号的输入,以及接收用户输入的关键字。输入单元607可包括触控面板以及其它输入设备。触控面板可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元609可用于显示用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元609可采用液晶显示器、有机发光二极管等形式。处理器603是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储器603内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据。
在一实施方式中,设备包括一个或多个处理器603,以及一个或多个存储器605,一个或多个应用程序601。其中所述一个或多个应用程序601被存储在存储器605中并被配置为由所述一个或多个处理器603执行,所述一个或多个应用程序601配置用于执行以上实施例所述的应用标注标签方法。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括存储器、磁盘或光盘等。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。