本发明属于自然语言处理的技术领域,尤其是涉及一种基于Wikipedia链接结构的中文概念向量生成方法和装置。
背景技术:
Wikipedia,维基百科,是当前规模最大的百科全书,其不仅是一个规模巨大的语料库,而且还是一个包含了大量人类背景知识和语义关系的知识库,是进行自然语言处理的理想资源。
词语概念的语义表示是自然语言处理领域的一个基础问题。传统的方法可分为基于共现计数(count-based)的方法和基于预测(prediction-based)的方法。前者,首先统计词语概念的共现计数,通过对共现矩阵的分解而学习词语的概念向量;后者,通过预测给定上下文环境中的共现词而学习词语的概念向量。这两种方法实质上均通过挖掘利用语料库中蕴含的词语共现信息而学习词语概念的向量表示。当前流行的word2vec词向量方法属于后者。
自然语言文本中,普遍存在一词多义的问题,尤其是中文语言。然而,现有的词向量方法,通常只能从词形上对词语进行区分,而不能从本质上区分词语所对应的词义概念。对于一个词语,只能学习到一个统一的向量表示;而这个词语,可能会对应多个词义概念;显然,现在方法无法准确区分这些词义概念。
综上所述,现有技术的词向量方法无法从本质上区分词义概念的问题,尚缺乏行之有效的解决方案。
技术实现要素:
针对现有技术中存在的不足,解决现有技术的词向量方法无法从本质上区分词义概念的问题,本发明提出了一种基于Wikipedia链接结构的中文概念向量生成方法和装置,解决了Wikipedia的链接信息库的构建问题、提出了概念向量训练数据集的构建方法、并设计了概念向量的训练模型及训练方法、概念向量矩阵的返回方法。
本发明的第一目的是提供一种基于Wikipedia链接结构的中文概念向量生成方法。
为了实现上述目的,本发明采用如下一种技术方案:
一种基于Wikipedia链接结构的中文概念向量生成方法,该方法包括:
根据中文Wikipedia页面中的标题概念和/或链接概念构建链接信息库;
针对链接信息库中样本是否存在链接概念分别构建训练正例和训练负例,选择一定数量训练正例和训练负例建立训练数据集;
建立概念向量模型,模型包括输入层、嵌入层、概念向量运算层和输出层;
采用训练数据集训练概念向量模型,并由概念向量模型中提取概念向量。
作为进一步的优选方案,该方法还包括根据中文Wikipedia页面中的正文描述和类别链接信息结合标题概念和/或链接概念构建链接信息库。
作为进一步的优选方案,所述构建链接信息库的具体方法为:
预处理原始中文Wikipedia页面,得到处理后的有效文本数据;
统计处理后的有效文本数据中的标题概念、链接概念和类别链接的出现频次,得到当前页面的标题概念、链接概念和类别链接的频次信息;
根据所有页面中的标题概念及其相应的链接概念和类别链接的频次信息构建链接信息库;
在整个链接信息库中,统计标题概念、链接概念和类别链接的出现总频次,得到Wikipedia语料库的标题概念、链接概念和类别链接的频次信息。
作为进一步的优选方案,所述构建链接信息库前,预处理原始中文Wikipedia页面,预处理的具体步骤包括:
滤除原始中文Wikipedia页面中的无效信息,保留标题概念、正文描述、链接概念及类别链接信息,得到有效文本数据;
对有效文本数据进行繁简汉字转换处理。
作为进一步的优选方案,在该方法中,将标题概念与其中文Wikipedia页面中所包含的链接概念或类别链接进行组合,构建训练正例;
将标题概念与没有出现在其中文Wikipedia页面中的链接概念或类别链接进行组合,构建训练负例。
作为进一步的优选方案,在该方法中,构建的训练正例和训练负例共同构成候选数据集,根据出现频次概率选择或随机选择策略在候选数据集中选择一定数量训练正例和训练负例,随机打乱顺序后建立训练数据集。
作为进一步的优选方案,所述出现频次概率选择策略的具体方法为:
根据候选数据集中的链接概念或类别链接在Wikipedia页面或Wikipedia语料库中出现的频次,计算其选中概率;
根据该选中概率,从候选数据集中进行实例的选择。
作为进一步的优选方案,在该方法中,建立概念向量模型的具体步骤包括:
根据Wikipedia语料库的标题概念、链接概念和类别链接的频次信息进行降序排列,并根据排序编码,确定所有标题概念、链接概念和类别链接的编码;
采用[-1,1]上的均匀分布建立概念向量的维度以及标题概念、链接概念和类别链接总数的二维的矩阵作为概念向量矩阵,概念向量矩阵为概念向量模型嵌入层的权重矩阵;
建立包括输入层、嵌入层、概念向量运算层和输出层的概念向量模型,标题概念和链接概念作为输入层的两个输入;在嵌入层中获取输入概念样本的张量并作降维处理,在概念向量运算层中将两个输入进行运算处理得到概念向量,在输出层预测输入构成训练正例或训练负例。
作为进一步的优选方案,由概念向量模型中提取嵌入层的权重参数,即为概念向量矩阵,对应各个编码概念所对应的概念向量。
本发明的第二目的是提供一种计算机可读存储介质。
为了实现上述目的,本发明采用如下一种技术方案:
一种计算机可读存储介质,其中存储有多条指令,所述指令适于由终端设备设备的处理器加载并执行以下处理:
根据中文Wikipedia页面中的标题概念和/或链接概念构建链接信息库;
针对链接信息库中样本是否存在链接概念分别构建训练正例和训练负例,选择一定数量训练正例和训练负例建立训练数据集;
建立概念向量模型,模型包括输入层、嵌入层、概念向量运算层和输出层;
采用训练数据集训练概念向量模型,并由概念向量模型中提取概念向量。
本发明的第三目的是提供一种终端设备。
为了实现上述目的,本发明采用如下一种技术方案:
一种终端设备,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行以下处理:
根据中文Wikipedia页面中的标题概念和/或链接概念构建链接信息库;
针对链接信息库中样本是否存在链接概念分别构建训练正例和训练负例,选择一定数量训练正例和训练负例建立训练数据集;
建立概念向量模型,模型包括输入层、嵌入层、概念向量运算层和输出层;
采用训练数据集训练概念向量模型,并由概念向量模型中提取概念向量。
本发明的有益效果:
1、本发明所述的一种基于Wikipedia链接结构的中文概念向量生成方法和装置,能够有效的进行中文Wikipedia语料库的预处理,提取概念及其链接关系,构建链接信息库。
2、本发明所述的一种基于Wikipedia链接结构的中文概念向量生成方法和装置,能够完成正负例训练样本的构建和选择,生成训练数据集;以及定义并实现一套完整的概念向量训练模型,训练训练数据集,得到概念向量。
3、本发明所述的一种基于Wikipedia链接结构的中文概念向量生成方法和装置,利用中文Wikipedia页面中的标题概念和/或链接概念最终生成概念向量,能够准确地对词语概念进行区分,克服了传统词向量方法存在的一词多义的问题,生成的概念向量的语义表示更加准确。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为本发明中的方法。
具体实施方式:
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本实施例使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
需要注意的是,附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
术语解释:需要注意的是,本发明中所述概念,指wiki页面所对应的标题概念及包含的链接概念。如对于wiki页面“微博”(https://zh.wikipedia.org/wiki/微博),该页面用以描述概念“微博”;“微博”被称为当前wiki页面的“标题概念”。Wikipedia使用文本对当前页面的标题概念进行描述说明。在这些描述文本中,会引用大量的其他链接概念。比如,概念“微博”所对应的wiki页面中的第一段中存在一句话“微博(英语:microblog)是一种允许用户即时更新简短文本(通常少于Twitter開始的140字)并可以公开发布的微型博客形式。”,其对应的源代码为:“”'微博”'({{lang-en|”'microblog”'}})是一种允许用户即时更新简短文本(通常少于[[Twitter]]開始的140字)并可以公开发布的微型[[網誌|博客]]形式”。其中,双中括号内的“Twitter”和“網誌”,表示对其它概念的引用(超级链接),各自对应一个wiki概念,两者被称为当前wiki页面中的“链接概念”。
“替身词”指代替链接概念而显示在wiki页面中的词语。如[[網誌|博客]]中,“博客”为“網誌”的替身词。替身词“博客”会显示在wiki页面中,但其链接概念指向“網誌”。
“类别链接”指wiki概念页面所属的类别,如“[[Category:微博客]]”表示当前wiki页面所对应的标题概念的所属类别为“Category:微博客”。
在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。针对现有技术中存在的不足,解决现有技术的词向量方法无法从本质上区分词义概念的问题,本发明提出了一种基于Wikipedia链接结构的中文概念向量生成方法和装置,解决了Wikipedia的链接信息库的构建问题、提出了概念向量训练数据集的构建方法、并设计了概念向量的训练模型及训练方法、概念向量矩阵的返回方法。下面结合附图与实施例对本发明作进一步说明。
实施例1:
为了能够准确地学习词义概念的向量表示,需要以概念作为对象构建训练数据。Wikipedia存在大量的概念标注,且这些概念标注存在丰富的语义链接关系,这为构建概念向量的训练数据提供了可能。
本实施例1的目的是提供一种基于Wikipedia链接结构的中文概念向量生成方法。
为了实现上述目的,本发明采用如下一种技术方案:
如图1所示,
一种基于Wikipedia链接结构的中文概念向量生成方法,该方法包括:
步骤(1):根据中文Wikipedia页面中的标题概念和/或链接概念构建链接信息库;
步骤(2):针对链接信息库中样本是否存在链接概念分别构建训练正例和训练负例,选择一定数量训练正例和训练负例建立训练数据集;
步骤(3):建立概念向量模型,模型包括输入层、嵌入层、概念向量运算层和输出层;
步骤(4):采用训练数据集训练概念向量模型,并由概念向量模型中提取概念向量。
在本实施例中,结合具体的Wikipedia页面信息对本方法详细说明。
步骤(1):构建Wikipedia链接信息库。在本实施例中,所述构建链接信息库的具体方法为:
步骤(1-1):预处理原始中文Wikipedia页面,得到处理后的有效文本数据;
下载Wikipedia的Dump文件,并对其进行预处理,包括去除无用的信息和xml标记,并进行繁简汉字转换等。对于每个wiki页面,仅保留其标题概念、正文描述、链接概念及类别链接信息。
所述预处理原始中文Wikipedia页面的具体步骤包括:
步骤(1-1-1):滤除原始中文Wikipedia页面中的无效信息,保留标题概念、正文描述、链接概念及类别链接信息,得到有效文本数据;
无用信息的滤除
原始页面中包含了大量的无用信息,我们仅保留其中的title标记和text标记中的部分信息,包括标题概念、正文描述、链接概念及类别链接信息。对于text标记中的数据,去除所有的格式标记;去除所有特殊编码;去除所有的参考文献引用标记;去除“注釋”(注释)、“參考文獻”(参考文献)、“外部連結”(外部连接)、“參見”(参见)部分中的全部数据;去除全部双大括号{{}}内部数据。
举例:假设“微博”所对应的原始wiki页面示例表示如下:
该wiki页面滤除无效信息后,有效信息如下:
步骤(1-1-2):对有效文本数据进行繁简汉字转换处理。
因为在中文wikipedia中存在大量的繁体汉字,将其统一转换为简体汉字。
举例,可借助于中文繁简体转换工具opencc完成这一转换处理。上述例子中的文本转换后可得:
步骤(1-2):统计处理后的有效文本数据中的标题概念、链接概念和类别链接的出现频次,得到当前页面的标题概念、链接概念和类别链接的频次信息;
对于每个wiki页面,统计其中标题概念、每个链接概念、每个类别链接的出现频次。
举例:
示例wiki页面中的标题概念为“微博”;存在链接概念标记:[[Twitter]]、[[网志|博客]]、[[短讯]]、[[即时消息软件]]、[[行动应用程序]]、[[电子邮件]]、[[网页]]、[[多媒体]]、[[新浪微博]]、[[Plurk]];存在类别链接标记:[[Category:网志]]、[[Category:微博客]]。
其中,对于标题概念“微博”,其在预处理之后的文本中的出现频次为9;对于链接概念“Twitter”,其出现频次为3;对于链接概念“网志”,其与替身词“博客”共同出现了1次,其自身单独出现了1次,而其替身词“博客”又单独出现了3次,故该链接概念的出现频次记为5;同理,统计其它各链接概念的出现频次;对于类别链接标记,其出现频次通常均为1。统计数据如表1所示。
表1.出现频次统计表
步骤(1-3):根据所有页面中的标题概念及其相应的链接概念和类别链接的频次信息构建链接信息库;
记录每个标题概念与其相应的链接概念、类别链接的频次信息(降序排列),构成Wikipedia链接信息库。
举例:
上述示例中,标题概念为:微博;链接概念为:Twitter、网志、短讯、即时消息软件、行动应用程序、电子邮件、网页、多媒体、新浪微博、Plurk;类别链接为:Category:网志、Category:微博客。对标题概念、链接概念和类别链接,按出现频次降序排列,记入Wikipedia链接信息库。如:
微博:(微博,9),(网志,5),(Twitter,3),(短讯,1),(即时消息软件,1),(行动应用程序,1),(电子邮件,1),(网页,1),(多媒体,1),(新浪微博,1),(Plurk,1),(Category:网志,1),(Category:微博客,1)
步骤(1-4):在整个链接信息库中,统计标题概念、链接概念和类别链接的出现频次,得到Wikipedia语料库的标题概念、链接概念和类别链接的频次信息。
对于Wikipedia链接信息库中的每个概念(含标题概念和链接概念)、类别链接,统计其总的出现频次。
将Wikpedia链接信息库中各个概念、类别链接的出现频次累加求和,即可求得其总的出现频次。
举例:
(微博,25890),(网志,1115),(Twitter,18970),(短讯,15263),(即时消息软件,2156),(行动应用程序,489),(电子邮件,11259),(网页,23231),(多媒体,11839),(新浪微博,12433),(Plurk,2341),(Category:网志,589),(Category:微博客,387)
步骤(2):构建概念向量训练数据集。
对于每个标题概念,其Wikipedia页面中所包含的链接概念及类别链接,可用来构建训练正例;其它的没有出现在其Wikipedia页面中的链接概念及类别链接可用来构建训练负例;用户可以使用依据出现频次概率选择或随机选择策略,选择正负例,构建训练数据集。
步骤(2-1):将标题概念与其中文Wikipedia页面中所包含的链接概念或类别链接进行组合,构建训练正例;
训练正例的构建
将标题概念与其Wikipedia页面中所包含的链接概念或类别链接,进行组合,可构建正例。可形式化为:
Titleconcept,linkconcept,1
其中,titleconcept指标题概念,linkconcept指链接概念或类别链接,1表示正例。
举例:对于标题概念“微博”,将其链接概念“Twitter”进行组合,可得正例:(微博,Twitter,1)。
步骤(2-2):将标题概念与没有出现在其中文Wikipedia页面中的链接概念或类别链接进行组合,构建训练负例。
训练负例的构建
将标题概念与没有出现在其Wikipedia页面中的链接概念或类别链接,进行组合,可构建负例。可形式化为:
titleconcept,non-linkconcept,0
其中,titleconcept指标题概念,non-linkconcept指没有出现在其Wikipedia页面中的链接概念或类别链接,0表示正例。
举例:对于标题概念“微博”,将其未出现在其wikipedia中的链接概念“无政府主义”进行组合,可得负例:(微博,无政府主义,0)。
步骤(2-3):构建的训练正例和训练负例共同构成候选数据集,根据出现频次概率选择或随机选择策略在候选数据集中选择一定数量训练正例和训练负例,
所述出现频次概率选择策略的具体方法为:
根据候选数据集中的链接概念或类别链接在Wikipedia页面或Wikipedia语料库中出现的频次,计算其选中概率;
根据该选中概率,从候选数据集中进行实例的选择。
用户可以使用依据出现频次概率选择或随机选择策略,选择正负例,构建训练数据集。步骤(2-1)和步骤(2-2)得到的训练正负例,共同构成候选数据集。依据出现频次概率选择策略,指根据候选链接概念或类别链接在Wikipedia页面或Wikipedia语料库中出现的频次,计算其选中概率;而后依据该选中概率,从候选数据集中进行实例的选择。随机选择策略,指在候选数据集中随机选择。依据出现频次概率选择策略,倾向于选择出现频率最高的top-k个链接概念或类别链接对应的正负实例,构建训练数据集;而随机选择策略,可更均匀地选择候选链接概念或类别链接对应的正负实例,构建训练数据集。注意:当选择负例时,要求选择策略不能选中出现在当前标题概念的Wikipedia页面中的概念或类别链接。
举例,对于概念“微博”,假设用户指定正负例样本的数量各为5个。
如果用户选择使用依据出现频次概率选择策略,这时不管选择正例还是负例,都倾向于使用出现频次最高的概念或类别链接。对于正例,首先根据候选概念或类别链接在当前wiki页面的出现频次,计算其出现选中概率。由(网志,5),(Twitter,3),(短讯,1),(即时消息软件,1),(行动应用程序,1),(电子邮件,1),(网页,1),(多媒体,1),(新浪微博,1),(Plurk,1),(Category:网志,1),(Category:微博客,1),可得0.27、0.16、0.05、0.05、0.05、0.05、0.05、0.05、0.05、0.05、0.05、0.05。而后,以上述选中概率进行5次抽样,假设得到的链接概念或类别链接分别为:网志、Twitter、即时消息软件、网志、Category:微博客,据此,可从候选数据集中选择相应的5条训练正例或直接构建5条训练正例,如下:
微博,网志,1
微博,Twitter,1
微博,即时消息软件,1
微博,网志,1
微博,Category:微博客,1
对于负例,首先由步骤1.4所得的概念、类别链接出现频次统计数据,计算选中概率;而后,以选中概率进行5次抽样(要求抽中的概念或类别链接未出现在当前标题概念的wiki页面中),假设得到的链接概念或类别链接分别为:无政府主义,毒品,红酒,山东大学,Category:Sports,据此,可从候选数据集中选择相应的5条训练负例或直接构建5条训练负例,如下:
微博,无政府主义,0
微博,毒品,0
微博,红酒,0
微博,山东大学,0
微博,Category:Sports,0
如果用户选择使用随机选择策略,相当于每个候选概念或类别链接的选中概率均为1/N,被选中的概率均完全一致,其它环节与依据出现频次概率选择策略的处理完全一致,在此不再赘述。
步骤(2-4)训练数据集的构建。
将步骤(2-4)所得的全部概念的正负实例样本组合在一起,并随机打乱顺序构成最终的训练数据集。不管是正例,还是负例,其均包含三个维度,即titleconcept、linkconcept或non-linkconcept、0或1,可针对每个维度分别构建一个向量予以存储。
举例,我们可以使用vector_titleconcept、vector_linkconcept、vector_posneg表示训练数据集的三个维度所对应的向量,假定训练数据集中的样本总数为trainsample_num,则每个向量的维度均为trainsample_num×1。
步骤(3):定义模型
在本实施例中,建立概念向量模型的具体步骤包括:
步骤(3-1):根据Wikipedia语料库的标题概念、链接概念和类别链接的频次信息进行降序排列,并根据排序编码,确定所有标题概念、链接概念和类别链接的编码;
概念及类别链接的编码转换
根据步骤1.4所得的出现频次,对概念及类别链接进行降序排列。将最高频率的概念编码为1,次高的概念编码为2,依次类推,确定所有概念及类别链接的编码。
步骤(3-2):采用[-1,1]上的均匀分布建立概念向量的维度以及标题概念、链接概念和类别链接总数的二维的矩阵作为概念向量矩阵,概念向量矩阵为概念向量模型嵌入层的权重矩阵;
定义概念向量矩阵
假设用户指定的概念向量的维度大小为embedding_dim,wikipedia中的概念及类别链接的总数为concept_num,则使用[-1,1]上的均匀分布定义(concept_num+1)×embedding_dim的二维的矩阵作为概念向量矩阵。它将作为模型的embedding layer的权重矩阵,其中的每一行对应相应编码的概念或类别链接的概念向量(第0行,对应训练集中不存在的概念)。
举例,在Keras中,示例实现代码如下:
embedding_matrix=np.random.uniform(-1,1,(concept_num+1,embedding_dim))
embedding_matrix[0,:]=0
步骤(3-3):建立包括输入层、嵌入层、概念向量运算层和输出层的概念向量模型,标题概念和链接概念作为输入层的两个输入;在嵌入层中获取输入概念样本的张量并作降维处理,在概念向量运算层中将两个输入进行运算处理得到概念向量,在输出层预测输入构成训练正例或训练负例。
步骤(3-3-1):定义输入层input layer
Input layer包含两个输入,一个对应titleconcept,另一个对应linkconcept或non-linkconcept。两个输入的shape参数均为(1,),dtype参数为int32。
举例,在Keras中,示例实现代码如下:
input_titleconcept=Input(shape=(1,),dtype='int32',name='input_titleconcept')
input_linkconcept=Input(shape=(1,),dtype='int32',name='input_linkconcept')
上述两个输入对应的tensor的shape均为(?,1)。
步骤(3-3-2):定义嵌入层Embeddinglayer并取得各个输入对应的概念向量
借助于步骤(3-2)的概念向量矩阵,构建Embedding layer。指定其input_dim参数为concept_num+1,output_dim参数为embedding_dim,input_length参数为1,weights参数为步骤(3-2)定义的概念向量矩阵,trainable参数为True。
举例,在Keras中,示例实现代码如下:
embedding_layer=Embedding(concept_num+1,embedding_dim,weights=[embedding_matrix],input_length=1,trainable=True,name='embedding_layer')
借助于Embedding layer,取得各个输入概念样本对应的tensor,并作降维处理。
举例,在Keras中,示例实现代码如下:
embedded_titleconcept_vector=embedding_layer(input_titleconcept)
embedded_linkconcept_vector=embedding_layer(input_linkconcept)
上述两行代码输出的tensor的shape为:(?,1,embedding_dim)。其中的大小为1的维度可以移除,示例代码如下:
embedded_titleconcept_vector=Lambda(lambda x:K.squeeze(x,axis=1))(embedded_titleconcept_vector)
embedded_linkconcept_vector=Lambda(lambda x:K.squeeze(x,axis=1))(embedded_linkconcept_vector)
上述两行代码输出的tensor的shape为:(?,embedding_dim)。
步骤(3-3-3):定义概念向量运算层
将两个输入的概念向量,进行联接、乘法、求均值等运算处理,得到两个输入所对应的概念向量的新的表示形式。在该运算层,可以定义任意复杂的运算方法。在此,以联接、乘法、求均值运算作为示例,予以说明。
举例,在Keras中,如果进行联接运算,可借助于代码:
calc_vector=Lambda(lambda x:K.concatenate([x[0],x[1]],axis=1))([embedded_titleconcept_vector,embedded_linkconcept_vector])
该代码输出的tensor的shape为:(?,2×embedding_dim)
如果进行乘法运算,可借助于代码:
calc_vector=multiply([embedded_titleconcept_vector,embedded_linkconcept_vector])
该代码输出的tensor的shape为:(?,embedding_dim)
如果进行求均值运算,可借助于代码:
calc_vector=average([embedded_titleconcept_vector,embedded_linkconcept_vector])
该代码输出的tensor的shape为:(?,embedding_dim)
步骤(3-3-4):定义输出层
对于步骤(3-3-3)的概念向量运算层的输出tensor,借助于dense层将其与唯一的输出神经元连接,并使用sigmoid作为激活函数,预测给定的两个输入即titleconcept与linkconcept或non-linkconcept构成正例还是负例。
举例,在Keras中,可借助于如下代码进行预测:
preds=Dense(1,activation='sigmoid')(calc_vector)
该代码输出的tensor的shape为:(?,1)
步骤(3-3-5):定义并编译模型
将步骤(3-3-1)中两个输入概念对应的input layer的tensor作为模型的输入,将步骤(3-3-4)中的预测输出作为模型的输出,对模型进行定义。
使用binary_crossentropy作为损失函数,优化算法使用RMSprop,评价指标使用acc,对模型进行编译。
举例,在Keras中,可借助于如下代码实现:
model=Model(inputs=[input_titleconcept,input_linkconcept],outputs=preds)
model.compile(loss='binary_crossentropy',optimizer=RMSprop,metrics=['acc'])
步骤(4):在步骤(2)所得的训练数据集上对步骤(3)定义的模型进行训练。
举例,在Keras中,可借助于如下代码实现:
model.fit([vector_titleconcept,vector_linkconcept],vector_posneg,batch_size=128,epochs=100,verbose=2)
在该示例中,指定batch_size为128,epoches为100,这些参数可根据需要而调整。
由概念向量模型中提取嵌入层的权重参数,即为概念向量矩阵,对应各个编码概念所对应的概念向量。
取出步骤(3-3)中训练所得模型的Embedding layer的权重参数,即概念向量矩阵;概念向量矩阵的第n行,即为步骤(3-1)中编码为n的概念所对应的概念向量。
举例,在Keras中,可借助于如下代码取出Embedding layer的权重参数:
weights=[layer.get_weights()for layer in model.layers iflayer.name=='embedding_layer']
weights即为概念向量矩阵,其第n行,对应步骤(3-1)中编码为n的概念的概念向量。如第1行为:[2.58952886e-01,-1.44168878e+00,1.29486823e+00,-2.75119829e+00,7.04625177e+00,6.94709539e+00,1.14686847e+00,-5.55342722e+00,4.34897566e+00,1.30873978e+00],则其对应步骤(3-1)中编码为1的(即出现频次最高的那个)概念的概念向量。
实施例2:
本实施例2的目的是提供一种计算机可读存储介质。
为了实现上述目的,本发明采用如下一种技术方案:
一种计算机可读存储介质,其中存储有多条指令,所述指令适于由终端设备设备的处理器加载并执行以下处理:
根据中文Wikipedia页面中的标题概念和/或链接概念构建链接信息库;
针对链接信息库中样本是否存在链接概念分别构建训练正例和训练负例,选择一定数量训练正例和训练负例建立训练数据集;
建立概念向量模型,模型包括输入层、嵌入层、概念向量运算层和输出层;
采用训练数据集训练概念向量模型,并由概念向量模型中提取概念向量。
实施例3:
本实施例3的目的是提供一种终端设备。
为了实现上述目的,本发明采用如下一种技术方案:
一种终端设备,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行以下处理:
根据中文Wikipedia页面中的标题概念和/或链接概念构建链接信息库;
针对链接信息库中样本是否存在链接概念分别构建训练正例和训练负例,选择一定数量训练正例和训练负例建立训练数据集;
建立概念向量模型,模型包括输入层、嵌入层、概念向量运算层和输出层;
采用训练数据集训练概念向量模型,并由概念向量模型中提取概念向量。
这些计算机可执行指令在设备中运行时使得该设备执行根据本公开中的各个实施例所描述的方法或过程。
在本实施例中,计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
本文所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开内容操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开内容的各个方面。
应当注意,尽管在上文的详细描述中提及了设备的若干模块或子模块,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
本发明的有益效果:
1、本发明所述的一种基于Wikipedia链接结构的中文概念向量生成方法和装置,能够有效的进行中文Wikipedia语料库的预处理,提取概念及其链接关系,构建链接信息库。
2、本发明所述的一种基于Wikipedia链接结构的中文概念向量生成方法和装置,能够完成正负例训练样本的构建和选择,生成训练数据集;以及定义并实现一套完整的概念向量训练模型,训练训练数据集,得到概念向量。
3、本发明所述的一种基于Wikipedia链接结构的中文概念向量生成方法和装置,利用中文Wikipedia页面中的标题概念和/或链接概念最终生成概念向量,能够准确地对词语概念进行区分,克服了传统词向量方法存在的一词多义的问题,生成的概念向量的语义表示更加准确。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。