[0100] 图1为根据本发明实施方式基于Wikipedia概念向量的英文词语相关度计算方法的流程图;
[0101] 图2为根据本发明实施方式基于Wikipedia概念向量的英文词语相关度计算装置的结构示意图;
[0102] 图3为根据本发明实施方式Wikipedia基础语料库构建单元的结构示意图;
[0103] 图4为根据本发明实施方式Wikipedia概念语料库构建单元的结构示意图;
[0104] 图5为根据本发明实施方式概念向量训练单元的结构示意图;
[0105] 图6为根据本发明实施方式概念集合提取单元的结构示意图;
[0106] 图7为根据本发明实施方式词语相关度计算单元的结构示意图。具体实施方式:
[0107] 为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对发明实施例作进一步的详细说明。
[0108] 本发明实施例基于Wikipedia概念向量的英文词语相关度计算方法的流程图,如图1所示,包括以下步骤。
[0109] 步骤101,构建Wikipedia基础语料库。
[0110] 由Wikipedia Dump服务站点获取其Dump生语料;并对生语料进行规范化处理,仅保留namespace属性为0的Wikipedia概念文档;对于每个概念文档,只保留其正式文本及概念标注信息;将处理后的概念文档收集起来,作为Wikipedia基础语料库,具体为:
[0111] 步骤1‑1)访问Wikipedia Dump服务站点,下载最新的enwiki数据库;
[0112] 本发明实施例中,enwiki数据库下载地址为:https://dumps.wikimedia.org/enwiki/latest/enwiki‑latest‑pages‑articles‑multistream.xml.bz2。
[0113] 需要说明的是,该数据库由XML结构存储,每个
标签都存储了Wikipedia中的一个页面,其中包含唯一标识符(id)、跳转目标(redirect)、命名空间(namespace)等信息。数据库包含了文档(Articles)、模板(templates)、媒体/文件的描述(media/file descriptions)和主要元页面(primary meta‑pages)等信息,使用namespace对其进行区分,namespace的信息如表1所示。[0114] 表1
[0115]namespace ns namespace ns
Main/Article 0 Portal 100
Wikipedia 4 Book 108
File 6 Draft 118
MediaWiki 8 TimedText 710
Template 10 Module 828
Help 12 Gadget 2300
Category 14 Topic 2600
[0116] 其中ns是
中的一个子节点,它的值代表了当前节点的内容所属的namespace的类型。[0117] 步骤1‑2)根据enwiki数据库依次处理
节点,提取ns的值为0的节点,提取该节点中的title、redirect、id和text的内容,同时对text做如下处理:删除用户编辑记录和外部链接,替换特殊字符,保留概念标注信息,利用标记段落标题;其中,#n={1,2,3...n},代表文档标题的层级,从1到n表示由高到低。[0118] 步骤102,构建Wikipedia概念语料库。
[0119] 对Wikipedia基础语料库进行概念标注扩充,构建Wikipedia概念语料库,具体为:
[0120] 步骤2‑1)对Wikipedia基础语料库进行词形还原,具体为:
[0121] 将文档中的单词记作tokeni,tokeni的原形记作lemmai,tokeni的词性记作posi。进行词形还原后,原文:token1,token2,...,tokenn,变为:token1/pos1/lemma1token2/pos2/lemma2…tokenn/posn/lemman。后面的步骤中涉及词语查找的操作均使用词的原形进行查找。
[0122] 本发明实施例中,词形还原工具采用由CLiPS(Computational Linguistics&Psycholinguistics)提供的pattern.en工具包。
[0123] 步骤2‑2)根据one sense per discourse假设,对基础语料库中的每篇文档进行概念标记扩充,具体为:
[0124] 将基础语料库中的某一篇文档记作docl,其标题记作titlel,标识记作idl;该篇文档中的某一概念标记的热点文本记作linkl,k,目标概念记作targetl,k;docl中未加概念标记的词语记作wl,i;lemma(w)表示取词语w的原形。
[0125] 需要说明的是,概念标记由热点文本linkl,k和目标概念targetl,k组成,在文档中的展现方式为:[[linkl,k|targetl,k]];若targetl,k=linkl,k,展现方式变为:[[linkl,k]];热点文本在文档中仅起显示作用,并不是概念;目标概念是本发明中所指的概念,也是其所对应的Wikipedia文档的标题。概念标记扩充是为符合限定条件的词语添加概念标记。
[0126] 步骤2‑2‑1)在docl中,收集…(#n=1,2,…,n)标签中的词语,作为docl的子标题集合,记作 遍历 中的元素,若lemma(headl,i)=lemma(titlel),则将原文中headl,i左右加上三个中括号的概念标记,变为:
[[[headl,i]]]。
[0127] 步骤2‑2‑2)在docl中,收集所有概念标记信息,构建概念标记集合,记作按照每个元素中link所包含的单词个数降序排列。
[0128] 需要说明的是,若target≠link,则target本身也作为一个热点文本(link),目标概念为其自身。
[0129] 步骤2‑2‑3)遍历 若在docl中存在lemma(wl,j)=lemma(linkl,i),则将wl,j左右添加三个中括号的概念标记,变为:[[[wl,j]]]。
[0130] 需要说明的是,添加概念标记时会出现相交、包含的情况。下面分别说明出现的原因和处理方法:
[0131] 在为w1和w2添加概念标记时,若w1与w2相交,w1添加概念标记后,w2会缺少与w1相交的部分。因此,为w2添加概念标记时,需先将w2补全,再为w2添加四个中括号的概念标记,变为[[[w1]]][[[[w2]]]]。
[0132] 在为w1和w2添加概念标记时,若w1包含w2,w1添加概念标记后,w2已经在概念标记内了。因此,为w2添加概念标记时,先在w1的后面插入w2,再为w2添加四个中括号的概念标记,变为[[[w1]]][[[[w2]]]]。
[0133] 步骤2‑3)根据最大频率词义算法,对步骤2‑2)处理过的基础语料库做进一步的概念标记扩充,具体为:
[0134] 收集经过步骤2‑2)扩充概念的基础语料库中的概念标记信息元组,构建概念标记集合,记作:
[0135]概念标记信息元组包含热点文本(linki)、目标概念集合(Ti)、热点文本的数量 与热点文本一致但未加概念标记的词语的数量 统计每个概念标记的目标概念和及其数量得到目标概念元组集合,记作:Ti={(targeti,1,numi,1),(targeti,2,numi,2),...,(targeti,n,numi,n)};语料库中未加概念标记的词语记作wk。
[0136] 步骤2‑3‑1)遍历LS,按照公式(1)计算词语的概念标注概率Pl(linki);保留结果大于50%的linki生成高频概念标注集合,记为LSH;
[0137]
[0138] 步骤2‑3‑2)遍历LSH,依次对linki中Ti的每个元素按照公式(2)计算目标概念的标注概率Pt(targeti,j);保留标注概率大于90%的目标概念(target),生成高频目标概念集合,记为LSHC={(linki,targeti,j),...},将集合的各个元素按照linki中含有的单词数降序排列;
[0139]
[0140] 步骤2‑3‑3)遍历LSHC,若存在lemma(wk)=lemma(linki),则将wk左右添加五个中括号的概念标记,变为:[[[[[wk]]]]]。
[0141] 需要说明的是,添加概念标记时会出现相交、包含的情况。处理方式与步骤2‑2‑3)的处理方式基本一致;不同之处是,为w1和w2添加概念标记时都用五个中括号,变为[[[[[w1]]]]][[[[[w2]]]]]。
[0142] 步骤103,训练概念向量。
[0143] 根据Wikipedia概念语料库,训练概念向量,具体为:
[0144] 步骤3‑1)对Wikipedia概念语料库进行处理,除去概念标记内词语的lemma信息,其他词语的token信息;
[0145] 步骤3‑2)依次对概念标记进行处理,只保留目标概念并查找目标概念所对应的文档ID,将ID与目标概念之间用“_”连接;去掉概念标记左右两侧的中括号,生成概念语料库。
[0146] 需要说明的是,目标概念所对应的文档ID由Python的Wikipedia库获取。
[0147] 步骤3‑3)使用概念语料库训练概念向量。
[0148] 训练得到的概念向量文件包含两种数据:一是传统的词向量,二是概念向量。比如:states和5585381_states_(_polity_),前者是传统的标准词向量的索引,而后者是本发明专利提出的概念向量的索引。后续步骤对概念向量的查询和计算,均指对后者进行操作处理,不涉及前者。
[0149] 本发明实施例中使用gensim工具包中的word2vec模型训练概念向量,向量的维数是300,最低词频是100,训练算法是Skip‑gram,其他训练参数均使用默认值。
[0150] 步骤104,获取待比较词语对的概念集合。
[0151] 对于待比较词语对,根据Wikipedia查询由用户指定的不同层次的概念集合,获得其词语概念集合,具体为:
[0152] 步骤4‑1)获取Normal、Redirect、Disambig、HatenoteLinkItems、HatenoteLinkDisambigItems各个层次的概念集合;
[0153] 步骤4‑2)由用户指定概念获取层次,构建概念集合。
[0154] 需要说明的是,用户可指定的层次如下所示:
[0155] a)Normal:只查找正常页面的Title;否则,返回None;
[0156] b)Normal_Redirect:只查找正常页面的Title或重定向页的RedirectTitle;若查找失败,则返回None;
[0157] c)Normal_Redirect_Disambig:查找正常页面的Title或重定向页的RedirectTitle,并查找消歧页的DisambigItems;若查找失败,则返回None;
[0158] d)Normal_Redirect_HatenoteLinkItem:查找正常页面的Title或重定向页的RedirectTitle,并查找页面包含的HatenoteLinkItems;若查找失败,则返回None;
[0159] e)Normal_Redirect_Disambig_HatenoteLinkItems:查找正常页面的Title或重定向页的RedirectTitle,并查找消歧页的DisambigItems,并查找页面包含的HatenoteLinkItems;若查找失败,则返回None;
[0160] f)Normal_Redirect_Disambig_HatenoteLinkItems_HatenoteLinkDisambigItems:在Normal_Redirect_Disambig_HatenoteLinkItems的基础上,再增加HatenoteLinkItems所对应的可能DisambigItems;若查找失败,则返回None;
[0161] 上面用到的符号释义:
[0162] Title:当wi所对应的Wikipedia页是一个正常页面(非消歧页,非重定向页)时,其对应概念就是Title;
[0163] RedirectTitle:当wi所对应的Wikipedia页是一个重定向页时,RedirectTitle是wi所对应的最终重定向页面的Title;
[0164] DisambigItems:当wi所对应的Wikipedia页是一个消歧页时,DisambigItems是消歧页所包含的可能的概念(不计与Title重复的);
[0165] HatenoteLinkItems:在Title对应的Wikipedia页面的开始部分的部分中,非歧义的热点文本;
[0166] HatenoteLinkDisambig:在Title对应的Wikipedia页面的开始部分的部分中,有歧义的热点文本;
[0167] HatenoteLinkDisambigItems:依次对HatenoteLinkDisambig各个消歧页提取有可能的概念(不计与Title重复的);
[0168] 步骤105,计算各个概念对的概念向量相似度并选取最大值作为词语相关度。
[0169] 取得待比较词语对的概念集合的笛卡尔积,计算其中每个概念对所对应的概念向量的相似度;取最大的概念向量的相似度作为待比较词语对的相关度,具体为:
[0170] 步骤5‑1)待比较词语对为(w1,w2),w1的概念集合 和w2的概念集合 根据步骤103所得的概念向量文件,查询 和 中各个
概念的概念向量;若某一概念查找失败,则将其由概念集合中剔除。
[0171] 步骤5‑2)根据步骤5‑1)处理过的 和 计算它们的笛卡尔积得待计算概念集合,记作
[0172] 步骤5‑3)由步骤5‑1)和步骤5‑2),按照公式(3)计算每个概念对的概念向量相似度,生成候选结果集合;
[0173]
[0174] 其中 和 表示概念ci和cj的概念向量, 和 表示向量 和 的模。
[0175] 步骤5‑4)从候选结果集中选取概念向量相似度的最大值,作为待比较词语对的相关度。
[0176] 相应地,本发明实施例还提供一种基于Wikipedia概念向量的英文词语相关度计算装置,其结构示意图如图2所示。
[0177] 在该实施例中,所述装置包括:
[0178] Wikipedia基础语料库构建单元201,用于对Wikipedia Dump生语料进行规范化处理,仅保留namespace属性为0的Wikipedia概念文档;对于每个概念文档,只保留其正式文本及概念标注信息;将处理后的概念文档收集起来,作为Wikipedia基础语料库;
[0179] Wikipedia概念语料库构建单元202,用于对Wikipedia基础语料库进行概念标注扩充,构建Wikipedia概念语料库;
[0180] 概念向量训练单元203,用于使用Wikipedia概念语料库,训练概念向量;
[0181] 概念集合提取单元204,用于对待比较词语对,根据Wikipedia查询由用户指定的不同层次的概念集合,获得其词语概念集合;
[0182] 词语相关度计算单元205,用于取得待比较词语对的概念集合的笛卡尔积,计算其中每个概念对所对应的概念向量的相似度;取最大的概念向量的相似度作为待比较词语对的相关度。
[0183] 图2所示装置的Wikipedia基础语料库构建单元201的结构示意图如图3所示,其包括:
[0184] 概念文档提取单元301,用于对Wikipedia Dump生语料提取namespace属性为0的Wikipedia概念文档;
[0185] 单文档规范化处理单元302,用于对文档内容进行如下处理:删除用户编辑记录和外部链接,替换特殊字符,保留概念标注信息,利用标记段落标题;其中,#n={1,2,3...n},代表文档标题的层级,从1到n表示由高到低。
[0186] 图2所示装置的Wikipedia概念语料库构建单元202的结构示意图如图4所示,其包括:
[0187] 词形还原单元401,用于对Wikipedia基础语料库进行词形还原;
[0188] 单文档概念标记扩充单元402,用于根据one sense per discourse假设,对基础语料库中的每篇文档扩充概念标记;
[0189] 全文档概念标记扩充单元403,用于根据最大频率词义算法,对单文档概念标记扩充单元处理过的基础语料库进一步扩充概念标记。
[0190] 图2所示装置的概念向量训练单元203的结构示意图如图5所示,其包括:
[0191] 信息清除单元501,用于对Wikipedia概念语料库进行处理,除去概念标记内词语的lemma信息,其他词语的token信息;
[0192] 概念标记单元502,用于对概念标记进行处理,只保留目标概念并查找目标概念所对应的文档ID,将ID与目标概念之间用“_”连接;去掉概念标记左右两侧的中括号,生成概念语料库;
[0193] 概念向量训练单元503,用于使用概念语料库训练概念向。
[0194] 图2所示装置的概念集合提取单元204的结构示意图如图6所示,其包括:
[0195] 初始概念获取单元601,用于获取Normal、Redirect、Disambig、HatenoteLinkItems、HatenoteLinkDisambigItems各个层次的初始概念集合;
[0196] 概念层次选择单元602,由用户指定概念获取层次,构建概念集合。
[0197] 图2所示装置的词语相关度计算单元205的结构示意图如图7所示,其包括:
[0198] 概念向量查询单元701,用于查询概念集合中各个概念的概念向量;若某一概念查找失败,则将其由概念集合中剔除;
[0199] 笛卡尔积计算单元702,用于对概念向量查询单元处理的概念集合计算笛卡尔积;
[0200] 概念向量相似度计算单元703,用于计算概念集合中每个概念对的概念向量相似度,生成候选结果集合;
[0201] 词语相关度选择单元704,用于从候选结果集中选取概念向量相似度的最大值,作为待比较词语对的相关度。
[0202] 可以将图2~图7所示的基于Wikipedia概念向量的英文词语相关度计算装置集成到各种硬件实体中。比如,可以将基于Wikipedia概念向量的英文词语相关度计算装置集成到:个人电脑、平板电脑、智能手机、工作站等设备之中。
[0203] 可以通过指令或指令集存储的储存方式将本发明实施方式所提出的基于Wikipedia概念向量的英文词语相关度计算方法存储在各种存储介质上。这些存储介质包括但不局限于:软盘、光盘、硬盘、内存、U盘、CF卡、SM卡等。
[0204] 综上所述,在本发明实施方式中,由Wikipedia Dump服务站点获取生语料,进行规范化处理,生成Wikipedia基础语料库;进行概念标注扩充,构建Wikipedia概念语料库;根据Wikipedia概念语料库,训练概念向量;对于待比较词语对,根据Wikipedia,获得其词语概念集合;计算概念集合的笛卡尔积中的每个概念对所对应的概念向量的相似度,取最大值作为待比较词语对的相关度。由此可见,应用本发明实施方式之后,实现了基于Wikipedia概念向量的英文词语相关度计算。本发明实施方式通过充分挖掘Wikipedia知识库的概念信息,进行了概念语料的构建和目标概念的查询获取,可在概念层面上进行词语相关度的计算;充分发挥了深度学习的优势,利用词向量技术生成概念向量,能够较为准确地表达概念,避免了传统词向量无法准确区分不同概念的问题;将普通词语转换为词原形后再训练概念向量,有利于提高概念向量的准确性。本发明提出的基于Wikipedia概念向量的英文词语相关度计算方法和装置,能够自动完成概念知识库的构建,准确选择词语的概念集合,并计算概念相似度,具有较高的词语相关度计算正确率,改善英文词语相关度的计算效果。
[0205] 本说明书中的实施例采用递进的方式描述,彼此相同相似的部分互相参见即可。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
[0206] 以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法和装置;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,故本说明书不应理解为对本发明的限制。