G06F17/30
1.一种基于词向量的问题路由方法,其特征在于包括以下步骤:
步骤1、用户档案的构建:根据用户的回答历史为用户构建档案,社区 问答中回答过问题的用户都是一个新问题的候选回答者,对于每个用户档案 的构建,具体包括以下子步骤:
步骤(a)、从Stackoverflow网站提供的网址下载从网站建立之初2008 年7月到目前2014年3月为止的所有数据,数据为XML格式,读取XML 文件格式抽取所有问题,其中包括问题的标签tag域、标题title域和内容 body域;
步骤(b)、收集用户回答过的问题中被选为最佳答案的那些问题组成用 户的档案;
步骤(c)、忽略用户回答的问题中被选为最佳答案的数量比较少的用 户,只选择回答的问题中至少包含10个被选为最佳答案的用户作为候选回答 者;
步骤2、数据预处理,具体包括以下子步骤:
步骤(a)、由于该问答社区中的问题都与计算机编程相关,所以用户提 出的问题中body域往往会包含许多代码,而代码中不含有语义信息,对训练 结果没有帮助,甚至可能对训练结果产生不良影响,因而把XML格式文件中 之间的代码信息去除;
步骤(b)、用户档案和测试集中的问题去除停用词及标点符号;
步骤3、词向量的训练,具体包括以下子步骤:
步骤(a)、根据处理好的数据,对特征词进行Huffman编码;
步骤(b)、为了把每个词都用矢量表示,对每个词定义一个一定维度的 实数向量,通过逻辑回归二元分类方法预测Huffman树中词语word路径边值 的概率;
步骤(c)、逻辑回归模型输入变量未知,通过损失函数和求导公式对系 数和输入变量进行更新,更新后的输入变量作为特征词的向量,词向量的维 度可以指定,本发明设置400维来测试词向量维度对结果的影响,训练模型 包括CBOW模型和skip-gram模型,本发明使用CBOW模型;
步骤4、文档向量的表示,具体包括以下子步骤:
步骤(a)、问题标签是问题所属的类别,能代表一个问题的主题,用户 档案中出现次数最多的两个标签词代表用户主题,基于词向量的叠加性,标 签词向量相加代表用户的主题向量;
步骤(b)、计算文档中每个特征词和标签词向量的相似度,根据相似度 大小对特征词进行排序;
步骤(c)、抽取主题词,根据已经排好序的特征词,取前1/2的词作为 用户的主题词,特征词向量叠加代表用户的文档向量,采用公式(1)表示,
式中, 为用户的文档向量,n u为用户的文档中特征词数量, 为第i 个特征词向量;
步骤(d)、测试集中的问题向量,根据标签词进行抽取,采用公式 (2)表示,
式中, 为测试问题的文档向量,n q为测试问题中特征词数量, 为第i 个特征词向量;
步骤(e)、计算测试集中的问题跟每个用户档案的相似度,采用公式 (3)表示,
式中, 为问题向量与用户档案向量的相似度;
步骤5、用户权威度的计算:用户回答的问题中,被选为最佳答案的数 量越多,代表该用户的权威度越大,使用log进行平滑,用户u的权威度采用 公式(4)表示,
authority(u)=log(1+numans u) (4)
式中,authority(u)为用户u的权威度,numans u为用户回答的问题中被选 为最佳答案的数量;
步骤6、用户活跃度的计算:在社区中每个用户活跃时间不同,并且某个 问题被提出时,一些用户已经很久没有回答任何问题或者即使之前回答过很 多问题,但该用户的活跃度仍然比较低,本发明采用问题被提出的时间与提 出问题之前用户最近一次回答问题的时间间隔衡量用户的活跃度,时间相隔 越近,代表用户越活跃,用户u的活跃度采用公式(5)表示,
式中,activity(u)为用户u的活跃度,t q为提问问题的时间,t u为用户 回答的所有问题中,距离提问问题最近的时间,其中:t q和t u单位是天数,如 果用秒、分钟或者小时表示,会造成用户的活跃度非常低、评价用户的活跃 度不合理;
步骤7、候选回答者排序:用户权威度和用户活跃度代表用户的先验概 率,用户的先验概率采用公式(6)表示,
P(u)=authority(u)*activity(u) (6)
式中,P(u)为用户u的先验概率,authority(u)为用户u的权威度, activity(u)为用户u的活跃度,最佳回答者的概率,采用公式(7)表示,
P(u|q)∝P(u)P(q|u) (7)
式中,P(q|u)为相似度,表示从用户u档案中生成问题q的概率,P(u|q) 代表用户u是问题q的最佳回答者的概率,再将该概率从大到小排序,即为 回答者推荐顺序。
本发明涉及一种问题路由方法,更具体地说,涉及一种基于词向量的问题 路由方法。
近年来的问答社区,如Yahoo!Answers、百度知道和Stackoverflow等 已经变得越来越流行,大众在社区分享知识,每天都有海量的用户提问问 题,社区里面的问题回答内容为用户提供了可选的答案。一般社区问答网站 会按照问题类别对问题进行划分,当用户提问问题时会选择一个合适的类 别,即问题标签,等待其他用户回答。提问者必须等待其他用户浏览了该社 区,阅读了该问题才有可能提供答案,并且可能很多用户回答以后方可得到 最佳答案,这个过程一般需要数小时或者数天,这样滞后获得的最佳答案对 于提问者可能已经没有实际意义了。另外一方面,如果用户是专家往往可以 提供比较优质的答案,但是专家用户可能并没有访问该社区,或者在社区中 未发现自己感兴趣的问题,所以没有给出最佳答案。为了改善这种状况,一 种比较好的方法是采用问题路由(Question Routing)方法,把新问题推送给 社区中最适合回答这个问题的人。问题路由如何选择合适的专家,需要考虑 用户的历史信息,即用户之前回答过什么问题或者回答过什么内容,为每个 在社区中回答过问题的用户建立用户档案。本发明对用户提出的问题预测最 佳回答者,即针对用户所提的新问题,到能给予最佳答案的回答者。目前 关于问题路由的方法主要可以分为以下两类:
一类是基于词共现的方法,该方法是在用户给定问题之前,为每个在社区 中注册过的用户构建用户档案,档案中是用户回答过的问题或者提问过的问题, 当有其他用户提出问题时,根据用户档案预测最佳回答者,对问题中的词与出 现过该词的用户档案进行检索并打分。这种方法需要包含用户的查询词,常见 的有VSM、Language Model、BM25和布尔模型等方法。这些方法比较经典, 但它们忽略了那些没有共现词或共现词很少,却语义相关的用户,因而在预测 最佳回答者方面尚存在欠缺。
另一类是基于语义关联方法,这类方法能够利用用户所提问题的语义信息 检索用户档案,丰富查询结果,常见的主要有潜在语义模型(LSA)、概率潜在 语义分析模型(PLSA),以及文档生成模型(LDA)等。这类方法在一定程度 上提高了检索的召回率,但是往往会因引入大量噪音信息而降低准确度。
故此,如何准确、高效地预测最佳回答者成为社区问答亟待解决的问题。
为了克服现有技术中存在的不足,本发明目的是提供一种基于词向量的 问题路由方法。该方法利用词向量满足叠加性这一优点,运用word2vec训练数 据获得词向量,采用词向量来表示文档向量。对于每一篇文档,抽取能代表该 文档特征的词作为主题词,将主题词向量叠加代表文档向量,然后计算用户档 案向量和问题向量之间的相似度,同时融入权威度和活跃度计算用户的先验概 率,最终综合得出用户是最佳回答者的概率,依此排序来预测最佳回答者,从 而提高了预测准确度。
为了实现上述发明目的,解决现有技术中存在的问题,本发明采取的技 术方案是:一种基于词向量的问题路由方法,包括以下步骤:
步骤1、用户档案的构建:根据用户的回答历史为用户构建档案,社区 问答中回答过问题的用户都是一个新问题的候选回答者,对于每个用户档案 的构建,具体包括以下子步骤:
步骤(a)、从Stackoverflow网站提供的网址下载从网站建立之初2008 年7月到目前2014年3月为止的所有数据,数据为XML格式,读取XML 文件格式抽取所有问题,其中包括问题的标签tag域、标题title域和内容 body域;
步骤(b)、收集用户回答过的问题中被选为最佳答案的那些问题组成用 户的档案;
步骤(c)、忽略用户回答的问题中被选为最佳答案的数量比较少的用 户,只选择回答的问题中至少包含10个被选为最佳答案的用户作为候选回答 者;
步骤2、数据预处理,具体包括以下子步骤:
步骤(a)、由于该问答社区中的问题都与计算机编程相关,所以用户提 出的问题中body域往往会包含许多代码,而代码中不含有语义信息,对训练 结果没有帮助,甚至对训练结果产生不良影响,因而把XML格式文件中 之间的代码信息去除;
步骤(b)、用户档案和测试集中的问题去除停用词及标点符号;
步骤3、词向量的训练,具体包括以下子步骤:
步骤(a)、根据处理好的数据,对特征词进行Huffman编码;
步骤(b)、为了把每个词都用矢量表示,对每个词定义一个一定维度的 实数向量,通过逻辑回归二元分类方法预测Huffman树中词语word路径边值 的概率;
步骤(c)、逻辑回归模型输入变量未知,通过损失函数和求导公式对系 数和输入变量进行更新,更新后的输入变量作为特征词的向量,词向量的维 度可以指定,本发明设置400维来测试词向量维度对结果的影响,训练模型 包括CBOW模型和skip-gram模型,本发明采用CBOW模型;
步骤4、文档向量的表示,具体包括以下子步骤:
步骤(a)、问题标签是问题所属的类别,能代表一个问题的主题,用户 档案中出现次数最多的两个标签词代表用户主题,基于词向量的叠加性,标 签词向量相加代表用户的主题向量;
步骤(b)、计算文档中每个特征词和标签词向量的相似度,根据相似度 大小对特征词进行排序;
步骤(c)、抽取主题词,根据已经排好序的特征词,取前1/2的词作为 用户的主题词,特征词向量叠加代表用户的文档向量,采用公式(1)表示,
式中,为用户的文档向量,nu为用户的文档中特征词数量,为第i
个特征词向量;
步骤(d)、测试集中的问题向量,根据标签词进行抽取,采用公式 (2)表示,
式中,为测试问题的文档向量,nq为测试问题中特征词数量,为第i
个特征词向量;
步骤(e)、计算测试集中的问题跟每个用户档案的相似度,采用公式 (3)表示,
式中,为问题向量与用户档案向量的相似度;
步骤5、用户权威度的计算:用户回答的问题中,被选为最佳答案的数 量越多,代表该用户的权威度越大,使用log进行平滑,用户u的权威度采用 公式(4)表示,
authority(u)=log(1+numansu) (4)
式中,authority(u)为用户u的权威度,numansu为用户回答的问题中被选 为最佳答案的数量;
步骤6、用户活跃度的计算:在社区中每个用户活跃时间不同,并且某个 问题被提出时,一些用户已经很久没有回答任何问题或者即使之前回答过很 多问题,但该用户的活跃度仍然比较低,本发明采用问题被提出的时间与提 出问题之前用户最近一次回答问题的时间间隔衡量用户的活跃度,时间相隔 越近,代表用户越活跃,用户u的活跃度采用公式(5)表示,
式中,activity(u)为用户u的活跃度,tq为提问问题的时间,tu为用户 回答的所有问题中,距离提问问题最近的时间,其中:tq和tu单位是天数,如 果用秒、分钟或者小时表示,会造成用户的活跃度非常低、评价用户的活跃 度不合理;
步骤7、候选回答者排序:用户权威度和用户活跃度代表用户的先验概 率,用户的先验概率采用公式(6)表示,
P(u)=authority(u)*activity(u) (6)
式中,P(u)为用户u的先验概率,authority(u)为用户u的权威度, activity(u)为用户u的活跃度,最佳回答者的概率,采用公式(7)表示,
P(u|q)∝P(u)P(q|u) (7)
式中,P(q|u)为相似度,表示从用户u档案中生成问题q的概率,P(u|q) 代表用户u是问题q的最佳回答者的概率,再将该概率从大到小排序,即为 回答者推荐顺序。
本发明有益效果是:一种基于词向量的问题路由方法,包括以下步骤: 步骤1、用户档案的构建;步骤2、数据预处理;步骤3、词向量的训练;步 骤4、文档向量的表示;步骤5、用户权威度的计算;步骤6、用户活跃度的 计算;步骤7、候选回答者排序。与已有技术相比,本发明利用word2vec训 练数据效率高,训练的词向量具有叠加性,克服了文档之间没有共现词相似 度为0的缺点;同时抽取文档主题词,用词向量表示文档向量,综合计算权 威度和活跃度,以及文档向量之间的相似度,既考虑了文档之间的语义信 息,又减少了噪音。在Stackoverflow数据集上,分别与经典的TF_IDF和 Language Model进行了对比实验,采用S@N作为评价指标,实验结果如表1 所示,可以看出采用本发明方法的S@N均高于其他两种方法,其中采用 TF_IDF和Language Model的实验结果的准确率S@1分别为3.1%和3.2%, 而采用本发明提出的方法,结果准确率S@1为6.1%,准确率提高了将近一 倍。
图1为本发明方法步骤流程图。
图2为本发明实验效果对比图。
图中:N代表把问题推送给前N个排序好的专家,如果预测的前N个专家 中包含最佳回答者,则该测试问题结果为1,S@N为所有测试问题结果的平 均值。
下面结合附图对本发明进行说明。
如图1所示,一种基于词向量的问题路由方法,包括以下步骤:
步骤1、用户档案的构建:根据用户的回答历史为用户构建档案,社区 问答中回答过问题的用户都是一个新问题的候选回答者,对于每个用户档案 的构建,具体包括以下子步骤:
步骤(a)、从Stackoverflow网站提供的网址下载从网站建立之初2008 年7月到目前2014年3月为止的所有数据,数据为XML格式,读取XML 文件格式抽取所有问题,其中包括问题的标签tag域、标题title域和内容 body域;
步骤(b)、收集用户回答过的问题中被选为最佳答案的那些问题组成用 户的档案;
步骤(c)、忽略用户回答的问题中被选为最佳答案的数量比较少的用 户,只选择回答的问题中至少包含10个被选为最佳答案的用户作为候选回答 者;
步骤2、数据预处理,具体包括以下子步骤:
步骤(a)、由于该问答社区中的问题都与计算机编程相关,所以用户提 出的问题中body域往往会包含许多代码,而代码中不含有语义信息,对训练 结果没有帮助,甚至对训练结果产生不良影响,因而把XML格式文件中 之间的代码信息去除;
步骤(b)、用户档案和测试集中的问题去除停用词及标点符号;
步骤3、词向量的训练,具体包括以下子步骤:
步骤(a)、根据处理好的数据,对特征词进行Huffman编码;
步骤(b)、为了把每个词都用矢量表示,对每个词定义一个一定维度的 实数向量,通过逻辑回归二元分类方法预测Huffman树中词语word路径边值 的概率;
步骤(c)、逻辑回归模型输入变量未知,通过损失函数和求导公式对系 数和输入变量进行更新,更新后的输入变量作为特征词的向量,词向量的维 度可以指定,本发明设置400维来测试词向量维度对结果的影响,训练模型 包括CBOW模型和skip-gram模型,本发明采用CBOW模型;
步骤4、文档向量的表示,具体包括以下子步骤:
步骤(a)、问题标签是问题所属的类别,能代表一个问题的主题,用户 档案中出现次数最多的两个标签词代表用户主题,基于词向量的叠加性,标 签词向量相加代表用户的主题向量;
步骤(b)、计算文档中每个特征词和标签词向量的相似度,根据相似度 大小对特征词进行排序;
步骤(c)、抽取主题词,根据已经排好序的特征词,取前1/2的词作为 用户的主题词,特征词向量叠加代表用户的文档向量,采用公式(1)表示,
式中,为用户的文档向量,nu为用户的文档中特征词数量,为第i
个特征词向量;
步骤(d)、测试集中的问题向量,根据标签词进行抽取,采用公式 (2)表示,
式中,为测试问题的文档向量,nq为测试问题中特征词数量,为第i
个特征词向量;
步骤(e)、计算测试集中的问题跟每个用户档案的相似度,采用公式 (3)表示,
式中,为问题向量与用户档案向量的相似度;
步骤5、用户权威度的计算:用户回答的问题中,被选为最佳答案的数 量越多,代表该用户的权威度越大,使用log进行平滑,用户u的权威度采用 公式(4)表示,
authority(u)=log(1+numansu) (4)
式中,authority(u)为用户u的权威度,numansu为用户回答的问题中被选 为最佳答案的数量;
步骤6、用户活跃度的计算:在社区中每个用户活跃时间不同,并且某个 问题被提出时,一些用户已经很久没有回答任何问题或者即使之前回答过很 多问题,但该用户的活跃度仍然比较低,本发明采用问题被提出的时间与提 出问题之前用户最近一次回答问题的时间间隔衡量用户的活跃度,时间相隔 越近,代表用户越活跃,用户u的活跃度采用公式(5)表示,
式中,activity(u)为用户u的活跃度,tq为提问问题的时间,tu为用户 回答的所有问题中,距离提问问题最近的时间,其中:tq和tu单位是天数,如 果用秒、分钟或者小时表示,会造成用户的活跃度非常低、评价用户的活跃 度不合理;
步骤7、候选回答者排序:用户权威度和用户活跃度代表用户的先验概 率,用户的先验概率采用公式(6)表示,
P(u)=authority(u)*activity(u) (6)
式中,P(u)为用户u的先验概率,authority(u)为用户u的权威度, activity(u)为用户u的活跃度,最佳回答者的概率,采用公式(7)表示,
P(u|q)∝P(u)P(q|u) (7)
式中,P(q|u)为相似度,表示从用户u档案中生成问题q的概率,P(u|q) 代表用户u是问题q的最佳回答者的概率,再将该概率从大到小排序,即为 回答者推荐顺序。
下面结合一个具体实施例对本发明加以详细说明。
步骤1、用户档案的构建:
假设User1回答过5个问题,其中在两个问题中,他回答的答案被选为 最佳答案,那么User1回答的这两个问题构成其档案。所以User1的用户档案 为:
User1:
Q1:tags:html css
title:content expand on overflow
body:I′m somewhat of a designer but i kind of suck at css,and cannot seem to get the site to expand right when the content changes.
Q2:tags:html css design firefox google-chrome
Title:CSS Resources for cross browser compatibility
Body:Are there any good web resources to explain tips,tricks,and techniques for writing good cross-browser friendly CS S/HTML?After struggling with This Problem for a while I am looking to sharpen my CSS skills.Thanks!
其他用户的档案类似,为每个用户构建档案。
假设测试集问题是:
Q:tags:html ess
Title:Why does my floating div push around other divs?
Body:I have a div which has a table which has a google map.I want to place a info box within the google map external to the map,just floating on top.
步骤2、数据预处理:
把所有数据中之间无意义的代码去除,作为下一步训练的 数据。同时对所有测试集和用户档案进行去除停用词和标点符号处理。处理 后的User1档案和问题Q为:
User1:
Q1:Tags:html css
Title:content expand overflow
Body:designer suck css site expand content
Q2:Tags:html css design firefox google-chrome
Title:css resources cross browser compatibility
Body:web resources explain tips tricks techniques writing cross browser friendly css html struggling sharpen css skills
处理后的问题Q为:
Q:Tags:html css
Title:floating div push divs
Body:div table google map info box google map external map floating top
步骤3、词向量的训练:
利用步骤2处理好的数据使用word2vec训练得到语料中所有词的向量。 比如我们训练5维词向量,特征词html向量为:<-0.370030,-0.039364, 0.060098,-0.058148,-0.107576>,其他词类似均为5维。
步骤4、文档向量的表示:
首先我们挑选出User1回答的问题中出现次数最多的两个标签词,从 User1的档案中可以看出html和css出现次数最多,所以html和css分别代表 User1档案的主题。把User1档案中所有title域和body域中的词分别与html 和css计算相似度,根据相似度大小对User1档案中特征词排序。假设根据与 html的相似度对特征词排序如下:
html css css css css web browser browser site designer overflow content content expand expand suck resources resources techniques writing skills explain tips tricks struggling sharpen compatibility friendly cross cross
根据与CSS的相似度对特征词排序如下:
css css css css html browser browser overflow web site designer content content expand expand techniques suck resources resources explain tips tricks writing struggling sharpen skills compatibility friendly cross cross
分别取前1/2的特征词代表该用户的主题词,根据词向量的叠加性,将 这些词向量叠加表示文档向量,最终User1将得到两个向量分别为:
<-19.793843,-3.156878,11.670619,-0.223189,5.1690369>
<-12.046653,-10.475155,32.190896,24.630659,-0.525426>
测试集问题Q的tag为html和css,标签词向量对应维度相加,代表测 试问题的主题,计算问题title和body域中的每个词与主题向量的相似度,再 根据相似度从大到小排序,排序之后的特征词结果如下:
div div div table floating floating push top google google info box map map map external
取前1/2的特征词向量相加表示问题向量,问题向量如下:
<-5.648727,-4.7858710,18.144379,10.405326,2.413224>
经过该过程每个用户包含两个档案向量,计算问题和每个用户的两个向 量的相似度,取两个相似度较大的作为用户与问题的相似度。
步骤5、用户权威度的计算:
User1回答了5个问题,其中在两个问题中User1被选为最佳回答者, 故numansu等于2,所以User1的权威度为authority(User1)=log(1+numansu)= log(1+2);
步骤6、用户活跃度的计算:
假设问题Q被提问的时间为“2011-01-05T14:29:22.120”,在问题被提出
时User1最近一次活跃的时间为“2011-01-04T00:12:21.643”,根据
且指数以天为单位,所以分别把上述时间转化
为秒,tq=1294208962.120s,tu=1294071141.643;则activity(u)=exp-
1.595144。
步骤7、候选回答者排序:根据权威度、活跃度、相似度计算用户回答 问题Q的概率P(u|q)∝P(u)P(q|u),根据概率从大到小排序,得到用户 的推荐列表User1,User2,User3......,最终User1为问题Q的最佳回答者。
为了检验本发明的有效性,实验数据中包含13000多个候选回答者,选 取10000个问题作为测试集,这些问题都存在最佳回答者。在相同的测试集 上,本发明还同时实现了TF_IDF和Language Model两种方法,它们测试结 果的准确率S@1均为3%,而采用本发明的方法,测试结果S@1达到了 6%,提高了将近一倍。从表中可以看出,本发明的方法S@N值均高于另外 两种方法。表1为本发明与TF-IDF和Language Model实验准确率对比表。
表1
本文发布于:2023-04-01 04:35:16,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/2/84630.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |