一种基于词向量的多平台控件对应方法与流程

文档序号:12666022阅读:514来源:国知局
一种基于词向量的多平台控件对应方法与流程

本发明涉及计算机编程领域中的多平台代码转化,具体涉及一种基于词向量的多平台控件对应方法。



背景技术:

随着移动平台版本演化越来越快,平台App工程开发周期不断增加,移动跨平台开发的课题重新归回人们的视野。最新的React Native软件似乎再次让我们看到了工程完美转化的希望,不过UI始终是困扰研究学者的一个难题,平台的设计的差异始终难以解决。

一般来讲,用法和语言上的差异我们都可以使用底层的接口来解决。所以本文就撇开UI控件的用法,单单寻找控件的对应关系。也许,从工程方法的角度思考更容易让我们理解控件、寻找控件的特点,对文档的挖掘才是找到对应关系的一剂良方。因此本文使用词向量、句向量与欧氏距离这个目前最适合短文本处理的思路对平台的控件描述文本进行计算,尽量保持了文本在句法理解控件上的信息,减少人工干预的程度,得到控件的对应关系。



技术实现要素:

发明目的:本发明所要解决的问题是提供一种自动化的多平台多版本控件对应方法。

技术方案:

一种基于词向量的多平台控件对应方法,包括如下步骤:

步骤1:寻找与控件、UI设计、页面布局文件相关的英文文档组成词向量的训练集;

步骤2:使用stanford工具对步骤1所得的英文文档进行分词得到单词序列;

步骤3:对步骤2所得到的单词序列使用word2vec进行词向量训练,得到每个单词的向量表示;

步骤4:找到平台网站上的控件描述文本;

步骤5:将步骤4得到的控件描述文本使用stanford工具分词之后得到每个控件的单词序列;在步骤3中的向量表示中找到每个单词获取这个单词的词向量,对一个句子中的所有词向量求均值得到句向量;

步骤6:对于每一个控件,计算其句向量与另一个平台上所有控件句向量的距离,并对计算得到的距离进行排序,得到该控件的最相似控件。

所述步骤1中英文文档的来源包括(1)平台官网上的所有介绍;(2)各大网站上的定义;(3)从各种渠道搜索得到的对某个控件的整理资料;(4)在国外网站上搜索博客或者论坛,获取与控件相关的网页的内容。

所述步骤2具体为:

(1)通过stanford工具中的Analyzer工具去除停止词;

(2)通过stanford工具中的StanfordCoreNLP工具对经步骤(1)去除停止词的英文文档分别进行分词、词性标注、断句以及词元化,得到各个单词的原型和词性;(2))各个单词的原型序列即为得到的单词序列。

所述步骤5中的句向量计算方法为计算词向量的平均值:将每个单词所对应的词向量直接相加,再除以单词的长度即为所求的句向量。

所述步骤6中计算两控件句向量之间的距离使用的是欧式距离:

对于两个点A=(a[1],a[2],…,a[n])和B=(b[1],b[2],…,b[n])之间的距离ρ(A,

B)定义为下面的公式:

ρ(A,B)=√[∑(a[i]-b[i])^2](i=1,2,…,n)

其中,√表示根平方计算,∑表示求和计算,^表示次方计算。

有益效果:

1、可以根据官方文本自动化的找到一个平台某个版本的每个控件在不同平台或者不同版本的对应控件,为页面开发工程师提供方便。

2、可以由此方法经过后续的实验得到控件的方法对应,继而得到页面的转化方法。

3、为多平台API的对应关系提供一个很好地解决问题的思路。

附图说明

图1为使用stanford工具分词的源代码截图。

图2为word2vec的文件目录。

图3为实验的结果截图(也就是得到的控件对应关系)。

具体实施方式

下面结合附图对本发明作更进一步的说明。

步骤1、寻找与控件、UI设计、页面布局文件相关的英文文档组成词向量的训练 集;

词向量最大的好处在于可以记录一个单词的上下文,也就是说词向量不仅仅记录了这个单词本身而且在此基础上保留了这个单词的位置信息。词向量对一个很大的文本域进行训练,把其中的每一个单词记录成一个向量,由于保持了单词的句法信息,而一个单词出现的位置有很大的偶然性,所以我们需要或许到尽可能大的训练文本域。与此同时,我们需要的是这些单词在控件对应关系领域所表现出来的特征,所以我们所选取的文本域是和控件相关的。我们所获得的文本主要来自以下几个方面:

(1)平台官网上的所有介绍。这些介绍包括对控件的介绍,对控件用法的介绍,对页面的介绍等等。使用爬虫技术爬取官方平台上所有与此相关的内容。

(2)各大网站上的定义。这些网站包括维基百科、google词典、百度百科等等一系列的介绍性的网站。

(3)从各种渠道搜索得到的对某个控件的整理资料。这些资料可以使官方网站的也可以是出自某个开发人员,可以是对某个工程的页面简介也可以是对某个单独控件的使用介绍。

(4)在国外网站上搜索博客或者论坛,获取与控件相关的网页的内容。

以上所有的资料我一共收集到693k的文本内容,基本上足够我们的训练使用。

步骤2、使用stanford的分词工具对步骤1中的英文文档进行分词得到单词序列;

由于我们在进行词向量运算的时候使用的是google开发的word2vec工具,而这个工具并不自带分词工具,也就是说这个工具的输入文本是已经经过分词的单词序列。stanford是英文单词分词做的比较出色的工具,在这里我们可以直接使用。在这个过程中我们使用了stanford工具jar包中的两个类:StanfordCoreNLP,Analyzer。

Analyzer的作用是去除停止词(stopword)。停止词也就是我们常说的“常用词”,如be,a,the等等,这些单词的的重复大量出现极有可能会影响到实验的效果,因为那些出现次数比较少的单词才是真正能够表现出控件特点的那些词。如图1所示,Analyzer在新建的时候选择需要去除的停止词版本“Version.LUCENE_36”这个版本是是stanford自带的,也可以使用自己定义的停止词集合。Analyzer以文本作为输入,将去除停止词过的序列保存在StopFilter类中。

StanfordCoreNLP类的功能更为强大,如图1所示,可以选择多种操作:tokenize(分词),pos(词性标注),ssplit(断句),lemma(词元化)。分词顾名思义,词性标 注意思是这个类可以为每一个单词标注出词性,断句是指对词组的提取,词元化是指提取词根,比如将been变成它的词根也就是be。StanfordCoreNLP将输入的文本转成Map输出,这个Map里面就有这个单词的原型和词性。我们把单词的原型放入ArrayList就是我们所需要的单词序列。

步骤3:对步骤2所得到的单词序列使用word2vec进行词向量训练,得到每个单词的向量表示;

Word2vec是Google在2013年开源的一款将词表征为实数值向量的高效工具。其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为K维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度。如果换个思路表达,把词当做特征,那么Word2vec就可以把特征映射到K维向量空间,可以为文本数据寻求更加深层次的特征表示。

如图2所示为word2vec的目录结构图,在linux环境下make即可得到所有的可执行文件。将步骤2中的单词序列构成的文件放在这个目录下面,使用如下命令

./word2vec-train test.txt-output vectors.bin-cbow 0-size 200-window 5-negative 0-hs 1-sample 1e-3-threads 12-binary 1

以上命令表示的是输入文件是test.txt,输出文件是vectors.bin,不使用cbow模型,默认为Skip-Gram模型。每个单词的向量维度是200,训练的窗口大小为5就是考虑一个词前五个和后五个词语(实际代码中还有一个随机选窗口的过程,窗口大小<=5)。不使用NEG方法,使用HS方法。-sampe指的是采样的阈值,如果一个词语在训练样本中出现的频率越大,那么就越会被采样。-binary为1指的是结果二进制存储,为0是普通存储(普通存储的时候是可以打开看到词语和对应的向量的)。其中值得注意的是输出文件vectors.bin中存放的就是所有的单词,单词的后面就是跟的这个单词的词向量。

步骤4、找到平台网站上的控件描述文字;

为了开发人员的使用方便,所有的平台在官方网站上都有对一个控件的描述,这些描述足够让一个原本没有知识的人认识区分出这些控件,所以在本发明中我们使用这些描述来做词向量的处理,以下是Android和IOS的官网控件地址:

Android平台:https://developer.android.com/reference/android/widget/Button.html

IOS平台:

https://developer.apple.com/ios/human-interface-guidelines/ui-controls/text-fields/

将这些获取到的空间描述以控件名称为文件名存放。

步骤5、将这些描述分词之后根据3中的向量表依次转化为词向量,进而转化为句向量;

把步骤4中所得到的空间描述文本分别依次放入stanford的分词工具中,经过分词、去除停止词、还原词根等步骤之后得到了每个控件的单词序列。

获取每一个控件的句向量。实际上句向量的原理很简单,也就是计算词向量的平均值。具体来说也就是把这个控件的每一个单词所对应的词向量直接相加,再除以单词的长度所得到的就是句向量。在一个很大的维度上,这个句向量能够看做保持了所有单词的特点,没有损失任何信息而且易于计算。

步骤6、计算每两个向量之间的距离,选出最相似的控件;

两个向量的距离使用的是欧氏距离,计算根据下式进行计算;

对于两个点A=(a[1],a[2],…,a[n])和B=(b[1],b[2],…,b[n])之间的距离ρ(A,B)定义为下面的公式:

ρ(A,B)=√[∑(a[i]-b[i])^2](i=1,2,…,n)

其中,√表示根平方计算,∑表示求和计算,^表示次方计算。

对于每一个控件,计算其与另一个平台上所有控件的距离,将这些距离进行排序就可以得到这个控件的最相似控件。对两个平台上的所有控件进行上述操作就可以得到我们想要的控件对应表。

以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1