CN110390050B - 一种基于深度语义理解的软件开发问答信息自动获取方法 - Google Patents

一种基于深度语义理解的软件开发问答信息自动获取方法 Download PDF

Info

Publication number
CN110390050B
CN110390050B CN201910620493.1A CN201910620493A CN110390050B CN 110390050 B CN110390050 B CN 110390050B CN 201910620493 A CN201910620493 A CN 201910620493A CN 110390050 B CN110390050 B CN 110390050B
Authority
CN
China
Prior art keywords
question
posts
usefulness
post
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910620493.1A
Other languages
English (en)
Other versions
CN110390050A (zh
Inventor
孙海龙
王旭
张振羽
刘旭东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN201910620493.1A priority Critical patent/CN110390050B/zh
Publication of CN110390050A publication Critical patent/CN110390050A/zh
Application granted granted Critical
Publication of CN110390050B publication Critical patent/CN110390050B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出一种基于深度语义理解的软件开发问答信息自动获取方法,包括以下步骤:步骤1,使用文本搜索引擎从多个开发者问答论坛网站基于帖子的七个特征搜索n条和该问题相关的帖子;步骤2,对于问题Q以及n条与之相关的帖子,构造n条“<Q,帖子>”的数据对,输入一个有用性推理网络KnowNet进行推理预测,此网络输出每个帖子的有用性等级和指示该等级的概率值;步骤3,基于有用性推理网络KnowNet的推理结果,对相同有用性等级内每条帖子按照概率值进行排序,然后将各个等级由高到低排列在一起,最后选择有用性最高的K条帖子返回给提问者。

Description

一种基于深度语义理解的软件开发问答信息自动获取方法
技术领域
本发明涉及一种信息自动获取方法,尤其涉及一种基于深度语义理解的软件开发问答信息自动获取方法。
背景技术
在软件开发的过程中,开发人员通常会遇到Bug调试、如何调用API等各类软件开发问题。为了解决这些问题,人们在互联网上已经建立了博客、在线问答论坛等软件开发社区。例如:Stack Overflow,CSDN等等。在这些社区平台上,任何一个开发者可以进行提问,其他能够回答这些问题的开发者都可以为该问题提供自己的答案,而提问者会标记能够解决问题的答案为被接受答案。
尽管这些社区为开发者提供了一种可以在线讨论问题和分享(获得)答案的平台,但是并无法保证问题可以及时得到回复,所以很多开发者倾向于通过大量浏览相关的社区帖子获取所需要的知识而非直接进行提问。由于大量用户的参与和分享,这些开发社区蕴含着大量解决开发者问题的知识,但是这些知识碎片化严重,社区平台也缺乏对知识间的关联性的分析,缺少有效的信息获取方法帮助开发者快速找到所需信息。
针对上述问题,为了帮助开发者高效获取软件开发问答信息,现有技术主要有以下两类:
1)推荐适合回答某类问题的专家。这类方法一般根据社区开发者回答过的历史问题的特点对开发者进行用户画像刻画,描述他们的专业能力,从而对新问题,根据问题内容分析和开发者画像能力的分析,推荐能够回答该问题的专家。
2)为问题推荐相关信息。例如根据软件开发的领域特征,检索API相关的信息,从而帮助开发者理解并查找所需要的API;某些方法还进行双语检索,为非英文开发者推荐相关信息。最近,不少方法基于深度学习,对社区网站的问答帖子间的关系和帖子特征进行分析,并基于此进行相关信息推荐。
虽然现有技术可以一定程度上帮助开发者获取较为相关的信息,但是却存在以下两方面的问题:
1)针对问题推荐的专家只是具有回答该问题的能力,但并不意味着其有时间和精力去及时处理该问题,这依然可能会导致问题不能及时被回答;
2)目前软件开发领域为问题推荐相关信息时,单纯基于检索的方法缺乏对问题和相关文本的语义的深度理解,而基于深度学习的语义分析方法由于模型欠佳而普遍语义理解能力较弱。此外,“相关信息”不等于“有用信息”,因此这类方法缺乏对检索结果有用性的建模分析。
总之,目前尚不存在一个自动对检索到的相关信息进行有用性进行推理的方法,从而无法有针对性地对问题提供有用信息。
发明内容
本发明提出一种基于深度语义理解的软件开发问答信息自动获取方法,为软件开发自动问答提供有用信息获取的服务。该方法基于软件开发问答社区所积累的大数据,对给定问题进行相关帖子检索,并且推理每条帖子对回答软件开发问题的有用性,将有用性大的帖子返回给提问者。
本发明提出一种基于深度语义理解的软件开发问答信息自动获取方法,包括以下步骤:
步骤1,使用文本搜索引擎从多个开发者问答论坛网站基于帖子的七个特征搜索n条和该问题相关的帖子。针对每条帖子,将其中的问题和答案文本抽取出来构成一个纯文本描述,并将其中数学表达式替换为[NUM],将其中的代码替换为[CODE],从而实现对数学表达式和代码语义的模糊表示,在目前业界研究尚缺乏数学理解和代码理解能力的前提下最大可能的保留文本信息。
步骤2,对于问题Q以及n条与之相关的帖子,构造n条“<Q,帖子>”的数据对,输入一个有用性推理网络(KnowNet)进行推理预测,此网络输出每个帖子的有用性等级(共四个等级分别为0,1,2,3,有用性逐渐降低)和指示该等级的概率值。
步骤3,基于有用性推理网络KnowNet的推理结果,对相同有用性等级内每条帖子按照概率值进行排序,然后将各个等级由高到低排列在一起,最后选择有用性最高的K条帖子返回给提问者。
附图说明
图1为本发明的整体流程图;
图2为有用性推理网络KnowNet的结构图。
图3为本发明一实施例的帖子链接Graph分析图
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明提出一种基于深度语义理解的软件开发问答信息自动获取方法,包括以下步骤:
步骤1,使用文本搜索引擎从多个开发者问答论坛网站基于帖子的七个特征搜索n条和该问题相关的帖子。
步骤2,对于问题Q以及n条与之相关的帖子,构造n条“<Q,帖子>”的数据对,输入一个有用性推理网络(KnowNet)进行推理预测,此网络输出每个帖子的有用性等级(共四个等级分别为0,1,2,3,有用性逐渐降低)和指示该等级的概率值,所述n为正整数。
步骤3,基于有用性推理网络KnowNet的推理结果,对相同有用性等级内每条帖子按照概率值进行排序,然后将各个等级由高到低排列在一起,最后选择有用性最高的K条帖子返回给提问者。
文本搜索引擎针对帖子的进行处理的7个特征包括问题标题、问题主体、答案、代码、Tag信息、投票数和评论数、帖子的时间。
文本搜索引擎针对问题Q的标题和相关帖子的问题的标题进行关键词抽取和匹配;
问题主体是该帖子所讨论的问题的详细描述,文本搜索引擎针采用tf-idf 进行向量化处理,并计算与问题Q的主体的tf-idf向量的余弦相似度;
答案是帖子里讨论如何解决该问题的描述,文本搜索引擎针采用类似问题主体的处理方式。
帖子里包含着和问题Q相关的代码,文本搜索引擎针剔除其中控制符号与常用符合(例如“if,else,while”等等),提取其中的API序列,对处理后的API序列与问题Q中代码的API序列进行关键字匹配;
每个帖子的问题都会被赋予一些描述该问题主题的关键词,文本搜索引擎针对问题Q的主题和相关帖子的主题进行关键词匹配;
一个帖子的投票数代表了该帖子的质量,评论数代表了该帖子的热度,一个质量好热度高的帖子相对而言更加有用,文本搜索引擎针采用“α×投票数+ (1-α)×评论数”来衡量该帖子质量热度特征(α建议设置为0.8);
由于软件更新迭代很快,因此帖子对时间很敏感,文本搜索引擎针采用帖子发布时间和上次活跃时间(修改,回答,评论等等)的平均值与当前问题的时间差来表示时间特征。
问题标题、问题主体、答案、代码、Tag信息、投票数和评论数、帖子的时间等7个特征分值带有量纲,文本搜索引擎针采用z-score标准化方法对每类特征分值进行归一化(x’=(x-mean)/std,其中x是特征原始分值,mean 是该特征的均值,std是该特征的标准差),并采用七个特征分值的总和作为每个帖子的得分,进而对相关帖子进行排序,获得得分最高的n条搜索结果。
图2表示了KnowNet网络结构。该网络基于BERT编码模型,提出一种基于问答 数据语义向量的注意力机制对编码结果进行特征池化,用softmax层来计算有用性结果。模型包括4部分:词嵌入,BERT编码器,异构注意力,和softmax 层。BERT编码器也可采用GPT-2,XLNet等替代。
具体描述如下:
词嵌入中,Position Embedding可以将一个单词的位置索引映射为表示位置的向量。Token Embedding将一个单词映射为表示其单词浅层语义的向量。 Segment Embedding将文本的类型(本模型中问题为类型0,上下文为类型1) 映射到表示类型信息的向量。最终对每个单词的三种表示结果向量进行加和,作为此部分的输出。
BERT编码器在海量文本上进行无监督学习训练所得的权重,进行文本语义描述,每个输入的向量通过BERT编码器的自注意力机制可以捕获到该输入上下文的信息,最终每个输入的单词都可以用来描述该单词在该段文本里的语境语义。KnowNet网络结构使用BERT编码器将问题和上下文的语境语义编码为对应的向量。此外,该编码器还输出一个特殊向量CLS,在KnowNet中CLS可以用来表示问题的语义特征。
基于问答数据语义向量的注意力机制。KnowNet网络结构采用CLS和每个编码结果向量(Q1,…,Qm,P1,…,Pn)的点积值作为CLS和该向量的注意力的得分,并对编码结果向量(Q1,…,Qm,P1,…,Pn)进行注意力得分加权,图2中的⊕表示按注意力加权编码结果向量,以此表示问题Q和帖子之间的语义关系特征CLSAttention,并且将CLS和CLSAttention连接到一起表示输入特征。
Softmax层有4个神经元,并且使用softmax函数对神经元输出做归一化,使得每个神经元的输出分别对应相应的有用性等级的概率。KnowNet网络结构选择最大的概率及其对应的有用性等级作为KnowNet的最终输出。
一实施例中,为了训练KnowNet学习如何预测有用性,构造了一个帖子链接Graph,如图3所示。诸如Stack Overflow一类的开发者问答网站,通常会由用户对帖子之间的关系进行标记:对两个重复帖子的链接标记为权重为0的边;其余则标记为权重为1的边,代表用户认为该帖子对回答问题有用或者回答该问题时引用了被标记帖子的内容。图3中有5个帖子及被标记的链接关系 (实现表示),虚线代表采用Dijkstra算法补全的相关链接;两个帖子距离超过3(即帖子链接Graph中权重大于3的边)的链接则二者无关,故此帖子链接Graph中省略并不做考虑;显然Graph中边的权重越小有用性越高。从这个链接Graph中采样出足够数量的“帖子A+链接+帖子B”样本,使用帖子A 的问题和帖子B的整体内容(或者反之)作为网络的输入,二者的链接数值作为有用性等级标签输入网络,本发明采用Adam优化器进行网络参数训练学习。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (2)

1.一种基于深度语义理解的软件开发问答信息自动获取方法,其特征在于,包括以下步骤:步骤1,使用文本搜索引擎从多个开发者问答论坛网站基于帖子的特征搜索n条和问题相关的帖子;步骤2,对于问题Q以及n条与之相关的帖子,构造n条<Q,帖子>的数据对,输入有用性推理网络KnowNet进行推理预测,输出每个帖子的有用性等级和指示该等级的概率值;步骤3,基于有用性推理网络KnowNet的推理结果,对相同有用性等级内每条帖子按照概率值进行排序,然后将各个等级由高到低排列在一起,选择有用性最高的K条帖子返回给提问者;在所述步骤1中,文本搜索引擎针对帖子进行处理的特征包括问题标题、问题主体、答案、代码、Tag信息、投票数和评论数、帖子的时间;在所述步骤1中,搜索n条和该问题相关的帖子的具体方式为,采用z-score标准化方法对特征分值进行归一化,所述归一化方式为x’=(x-mean)/std,其中x是特征原始分值,mean是该特征的均值,std是该特征的标准差,并采用所述特征分值的总和作为每个帖子的得分,进而对相关帖子进行排序,获得得分最高的n条搜索结果;在所述步骤2中,所述有用性推理网络KnowNet包括词嵌入,BERT编码器,异构注意力和softmax层;所述词嵌入包括Position Embedding,Token Embedding,Segment Embedding;其中Position Embedding将一个单词的位置索引映射为表示位置的向量,Token Embedding将一个单词映射为表示其单词浅层语义的向量,SegmentEmbedding将文本的类型映射到表示类型信息的向量,所述词嵌入对每个单词的三种表示结果向量进行加和,作为所述词嵌入的输出;所述BERT编码器在海量文本上进行无监督学习训练所得的权重,进行文本语义描述,每个输入的向量通过BERT编码器的自注意力机制捕获到该输入上下文的信息,所述BERT编码器将问题和上下文的语境语义编码为对应的向量,输出向量CLS,所述向量CLS表示问题的语义特征;所述BERT编码器的自注意力机制采用CLS和每个编码结果向量的点积值作为CLS和该向量的注意力的得分,并对编码结果向量进行注意力得分加权,得到所述问题Q和帖子之间的语义关系特征CLSAttention,并将CLS和CLSAttention连接到一起作为softmax层的输入特征。
2.如权利要求1所述的方法,其特征在于,所述softmax层有4个神经元,使用softmax函数对神经元输出进行归一化,使得每个神经元的输出分别对应相应的有用性等级的概率,选择最大的概率及其对应的有用性等级作为所述KnowNet的最终输出。
CN201910620493.1A 2019-07-10 2019-07-10 一种基于深度语义理解的软件开发问答信息自动获取方法 Active CN110390050B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910620493.1A CN110390050B (zh) 2019-07-10 2019-07-10 一种基于深度语义理解的软件开发问答信息自动获取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910620493.1A CN110390050B (zh) 2019-07-10 2019-07-10 一种基于深度语义理解的软件开发问答信息自动获取方法

Publications (2)

Publication Number Publication Date
CN110390050A CN110390050A (zh) 2019-10-29
CN110390050B true CN110390050B (zh) 2021-12-07

Family

ID=68286374

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910620493.1A Active CN110390050B (zh) 2019-07-10 2019-07-10 一种基于深度语义理解的软件开发问答信息自动获取方法

Country Status (1)

Country Link
CN (1) CN110390050B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111488441B (zh) * 2020-04-08 2023-08-01 北京百度网讯科技有限公司 问题解析方法、装置、知识图谱问答***和电子设备
CN112765326B (zh) * 2021-01-27 2023-04-21 西安电子科技大学 一种问答社区专家推荐方法、***及应用

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106991161A (zh) * 2017-03-31 2017-07-28 北京字节跳动科技有限公司 一种自动生成开放式问题答案的方法
CN109977428A (zh) * 2019-03-29 2019-07-05 北京金山数字娱乐科技有限公司 一种答案获取的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836611B2 (en) * 2017-07-25 2023-12-05 University Of Massachusetts Method for meta-level continual learning

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106991161A (zh) * 2017-03-31 2017-07-28 北京字节跳动科技有限公司 一种自动生成开放式问题答案的方法
CN109977428A (zh) * 2019-03-29 2019-07-05 北京金山数字娱乐科技有限公司 一种答案获取的方法及装置

Also Published As

Publication number Publication date
CN110390050A (zh) 2019-10-29

Similar Documents

Publication Publication Date Title
CN108021616B (zh) 一种基于循环神经网络的社区问答专家推荐方法
CN110427463B (zh) 搜索语句响应方法、装置及服务器和存储介质
CN109635083B (zh) 一种用于搜索ted演讲中话题式查询的文档检索方法
CN111159485B (zh) 尾实体链接方法、装置、服务器及存储介质
CN110390049B (zh) 一种面向软件开发问题的答案自动生成方法
CN109614480B (zh) 一种基于生成式对抗网络的自动摘要的生成方法及装置
CN111581364B (zh) 一种面向医疗领域的中文智能问答短文本相似度计算方法
CN111666376B (zh) 一种基于段落边界扫描预测与词移距离聚类匹配的答案生成方法及装置
CN112328800A (zh) 自动生成编程规范问题答案的***及方法
CN110597968A (zh) 一种回复选择方法及装置
CN112836027A (zh) 用于确定文本相似度的方法、问答方法及问答***
CN113011172A (zh) 文本处理方法、装置、计算机设备和存储介质
CN112463944A (zh) 一种基于多模型融合的检索式智能问答方法及装置
CN110390050B (zh) 一种基于深度语义理解的软件开发问答信息自动获取方法
CN113282711A (zh) 一种车联网文本匹配方法、装置、电子设备及存储介质
CN113342958A (zh) 问答匹配方法、文本匹配模型的训练方法和相关设备
CN110852071A (zh) 知识点检测方法、装置、设备及可读存储介质
CN114329181A (zh) 一种题目推荐方法、装置及电子设备
CN112035629B (zh) 基于符号化知识与神经网络的问答模型的实现方法
CN117828024A (zh) 一种插件检索方法、装置、存储介质及设备
CN117634615A (zh) 一种基于模态无关对比学习的多任务代码检索方法
CN115795018B (zh) 一种面向电网领域的多策略智能搜索问答方法及***
CN116955558A (zh) 基于知识图谱推理的地学数据集问答方法及***
CN114020871B (zh) 基于特征融合的多模态社交媒体情感分析方法
CN116186220A (zh) 信息检索方法、问答处理方法、信息检索装置及***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant