CN110569353B - 一种基于注意力机制的Bi-LSTM的标签推荐方法 - Google Patents

一种基于注意力机制的Bi-LSTM的标签推荐方法 Download PDF

Info

Publication number
CN110569353B
CN110569353B CN201910593644.9A CN201910593644A CN110569353B CN 110569353 B CN110569353 B CN 110569353B CN 201910593644 A CN201910593644 A CN 201910593644A CN 110569353 B CN110569353 B CN 110569353B
Authority
CN
China
Prior art keywords
word
label
text
lstm
software
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
CN201910593644.9A
Other languages
English (en)
Other versions
CN110569353A (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.)
Hubei Central China Technology Development Of Electric Power Co ltd
Original Assignee
Chongqing 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 Chongqing University filed Critical Chongqing University
Priority to CN201910593644.9A priority Critical patent/CN110569353B/zh
Publication of CN110569353A publication Critical patent/CN110569353A/zh
Application granted granted Critical
Publication of CN110569353B publication Critical patent/CN110569353B/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/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种基于注意力机制的Bi‑LSTM的标签推荐方法,该基于注意力机制的Bi‑LSTM的标签推荐方法包括以下步骤:采集实验数据集;从实验数据集中解析出特定的文本数据;对文本数据进行预处理;从预处理后的问题文本描述中提取语义特征;构建多标签分类模型;通过构建的多标签分类模型为新问题推荐合适的标签;对标签推荐的结果进行评估与分析。本发明的有益效果为:通过基于注意力机制的Bi‑LSTM模型主要将标签推荐任务转化为多标签分类问题,根据问题的文本描述内容自动推荐标签,提高标签推荐的准确性。

Description

一种基于注意力机制的Bi-LSTM的标签推荐方法
技术领域
本发明涉及标签推荐技术领域,具体来说,涉及一种基于注意力机制的Bi-LSTM的标签推荐方法。
背景技术
如今,人类科学技术的迅猛发展不仅显著地提高了人们的生活水平,同时也给人们的日常生活带来了极大的便利。日新月异的互联网技术更是二十一世纪以来科学技术的重要组成部分,它从无到有,已经逐渐成为了人们生活的必需品。相比于电话机、收音机、电视、广播等获取信息的传统方式,通过互联网传递信息具有信息传递量大、信息多样化、信息传递速度快等优点。正是因为互联网技术传递信息的多样性,便捷性和时效性,它给人们的信息获取带来了极大的便利。同时,人们在日常生活中对于信息的需求也在逐渐增长。当人们想要主动通过互联网技术查找自己需要的信息时,上网搜索就成为了第一选择,各个信息站点也都提供了自己的搜索引擎帮助用户获取需要的信息。然而随着信息站点后台维护数据量的显著提高,简单的使用信息站点自带的搜索引擎越来越难以在效率和便捷性上满足人们的需求。因为这些信息站点不仅维护着海量的数据,而且其中的数据质量又参差不齐,简单的使用搜索引擎势必会得到大量错误或者不相关的结果,用户不得不在得到这些信息后进行人为筛选,这很大程度上影响了获取信息的效率。目前搜索引擎技术的发展遇到瓶颈,很难再短时间内取得准确性和效率上的显著提升,又因为大量广告在信息站点中出现,用户对信息获取的满意程度也逐渐降低。
随着StackOverflow、Freecode、AskUbuntu等软件信息站点的日益流行,其中的问题都会随着时间的推移日益增多,在Stack Overflow中,每天都有成千上万的问题被开发者提出。数量庞大的问题为这些信息站点的使用和维护都带来了极大的挑战。在站点的使用方面,如何为提出的问题找到合适的专业回答者以及开发者如何通过站点提供的搜索引擎准确定位他们所需要解决问题的回答?在站点的维护方面,如何对数量众多的问题进行管理,以便于用户的搜索,查找以及回答?为了解决以上两个方面的问题,软件信息站点引入了一种全新的站点元素-标签。标签,通常只由几个单词或缩写组成,它们提供了一种元数据类型,用于搜索、描述、标识、分类和组织软件信息站点上的软件项目项目。标签不仅可以作为问题描述的关键词,能够准确而又简洁地描述问题,又可以作为连接不同问题之间的纽带,相似的问题通常都具有相似的标签,通过标签用户可以轻而易举地找到相似的问题,获得更加全面的信息。软件信息站点通常要求用户在提出问题的时候为问题打上几个标签,这有效地解决了问题检索和资源管理的问题,因此用户可以快捷准确地定位遇到的问题以及答案。与此同时,网站也可以通过问题的标签,将问题推荐给专业的回答者,缩短问题的解决时间,提高解决问题的效率和准确性。如今,这些网站都依靠标签对其中的内容进行分类,以提高用户在这些站点上各种操作的性能和准确性。因此,标签的质量对于软件信息站点是至关重要的。高质量的标签应该简洁,并且能够描述软件项目最重要的特性。目前软件信息站点的问题标签主要由提问者手工添加,在StackOverflow中,当用户提出自己遇到的问题时,他们被要求从网站已有的标签集合中挑选或者自定义一到五个标签来描述自己的问题。然而,由于用户之间有着不同的知识背景,或者对提出的问题缺乏足够的理解,他们或许就不能准确地挑选出合适标签。又因为不同的用户之间存在表达习惯上的差异,对于相同的问题,他们可能会给出意思相近但描述不同的标签,例如C#又经常被表示为Cshape,.NET又被表示为DotNET.以上的两个问题,都会导致软件信息站点需要维护的标签集合显著扩展。为了帮助用户对自己的问题给出合适的标签,并且有效地重用已有的标签,本发明提出一种基于注意力机制的Bi-LSTM的标签推荐方法。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出一种基于注意力机制的Bi-LSTM(基于注意力机制的双向长短期记忆网络模型)的标签推荐方法,以克服现有相关技术所存在的上述技术问题。
为此,本发明采用的具体技术方案如下:
一种基于注意力机制的Bi-LSTM的标签推荐方法,该基于注意力机制的Bi-LSTM的标签推荐方法包括以下步骤:
采集实验数据集;
从实验数据集中解析出特定的文本数据;
对文本数据进行预处理;
从预处理后的问题文本描述中提取语义特征;
构建多标签分类模型;
通过构建的多标签分类模型为新问题推荐合适的标签;
对标签推荐的结果进行评估与分析。
进一步的,采集实验数据集的步骤包括:
在软件信息站点的数据库中下载Post文件作为数据集;
通过预先设定的阈值过滤数据集中的低频标签得到实验数据集;
其中,通过预先设定的阈值过滤数据集中的低频标签得到实验数据集的步骤还包括:
统计所有软件项目的标签,得到每个标签相应的词频;
建立词典,保存标签的词频信息,词典的键和值分别是标签的名称以及标签的出现词频;
检索词典,若当前标签对应的词频低于相应的阈值,则删去当前标签;
筛选软件项目,若当前软件项目对应的所有标签均为低频标签,则删去当前软件项目。
进一步的,从实验数据集中解析出特定的文本数据的步骤包括:
利用DOM解析方式或SAX解析方式解析出实验数据集的标签Tag、标题Title及描述Body三个属性,并把标题Title与描述Body组合得到完整的问题文本描述;
利用HTML解析工具对描述Body进行进一步解析提取,得到原始问题文本描述TitleBody与标签Tags,并将原始问题文本描述TitleBody与标签Tags逐条存储为TXT文件;
其中,HTML解析工具包括Jsoup工具和BeautifulSoup工具;
原始问题文本描述TitleBody与标签Tags一一对应。
进一步的,对文本数据进行预处理的步骤包括:
文本分词处理:将问题文本中的单词分成单个独立的单词进行处理;
去除停用词处理:去删除对问题描述中没有实际意义的虚词;
词干提取处理:将不同形式的单词转化成相同的形式;
单词转小写处理:将所有的单词统一为小写写法;
其中,所述文本分词处理的步骤包括:
读取问题文本中的文档;
利用NLTk工具包将单词按照空格分开,得到单个独立单词;
将所有的单个独立单词与Stack Overflow标签集进行比对,得到预处理单词白名单;
利用Python的正则表达式进行分词,并去除非标签单词中的特殊符号;
将分词结果进行储存;
其中,所述去除停用词处理的步骤包括:
读取分词结果;
读取文本中的每个单词;
将文本中的每个单词与停用词表里的单词一一比对判断停用词;
若当前单词在停用词表中,则删去当前单词,反之保留;
加入结果字符串,判断是否为最后一个单词;
将去除停用词结果进行储存;
其中,所述词干提取处理的步骤包括:
读取停用词处理结果;
读取文本中的每个单词;
将文本中的每个单词进行词干化处理;
加入结果字符串串,判断是否为最后一个单词;
将词干提取结果进行储存。
进一步的,从预处理后的问题文本描述中提取语义特征的步骤包括:
通过预设方法将问题文本中的标签向量化;
通过预先配置的Word2vec模型实现问题文本向量化;
其中,通过预设方法将问题文本中的标签向量化的步骤还包括:
读取每一个软件项目以及它对应的标签信息;
查看当前软件项目的每个在候选标签列表中的索引位置,并把当前位置赋值为1,将其余位置赋值为0。
进一步的,构建多标签分类模型的步骤包括:
通过历史问题与标签之间的关系构建基于注意力机制的双向长短期记忆网络模型;
其中,所述基于注意力机制的双向长短期记忆网络模型由词嵌入层、Bi-LSTM层及Attention层构成;
所述词嵌入层通过查询每一个单词的词向量并把它们组合成句向量。
进一步的,所述Bi-LSTM层提取每一个单词的词向量的特征;
所述Bi-LSTM层处理后输出第i个时间步的单词向量隐藏层单元状态hi
hi由前向LSTM处理得到的
Figure GDA0002212174400000051
以及反向LSTM处理得到的
Figure GDA0002212174400000052
结合而成,其中
Figure GDA0002212174400000053
由前一个LSTM单元的细胞状态
Figure GDA0002212174400000054
隐藏层状态
Figure GDA0002212174400000055
以及当前的词向量输入xi计算得到,而
Figure GDA0002212174400000056
由后一个LSTM单元的细胞状态
Figure GDA0002212174400000057
隐藏层状态
Figure GDA0002212174400000058
以及当前的词向量输入得到,
Figure GDA0002212174400000059
Figure GDA00022121744000000510
的计算公式如下:
Figure GDA00022121744000000511
Figure GDA00022121744000000512
f(LSTM)指的是LSTM的算法,第i个时间步的隐藏层单元状态可以由
Figure GDA00022121744000000513
Figure GDA00022121744000000514
拼接得到,即
Figure GDA00022121744000000515
进一步的,所述Attention层将权重αi{1≤i≤n}附加到隐藏层状态hi,其计算公式如下所示:
Figure GDA00022121744000000516
其中n是隐藏状态的数量,h0是随机初始化的关注矩阵,ai表示由隐藏状态hi确定的能量值,ai的值越大,hi可以得到注意力权重就越大;
且权重ai公式的推导公式为:
ai=tanh(Wh·hi+bh);
其中Wh是权重矩阵,bh是偏置向量;
基于隐藏状态hi及其对应的权重αi,每个问题通过特征提取后的表示向量Q,表示向量Q的公式为:
Figure GDA0002212174400000061
进一步的,通过构建的多标签分类模型为新问题推荐合适的标签的步骤包括:
所述基于注意力机制的双向长短期记忆网络模型训练时使用Sigmoid作为激活函数计算每个标签的置信概率;
设置加权二元交叉熵损失函数来平衡置信概率中正类别和负类别之间的损失;
其中,加权二元交叉熵损失函数为:
Figure GDA0002212174400000062
Figure GDA0002212174400000063
是实际置信概率列表,
Figure GDA0002212174400000064
是预先设定的置信概率列表,而β是附加到正样本的权重;
置信概率列表
Figure GDA0002212174400000065
为:
Figure GDA0002212174400000066
输入Q=[q1,...,qn]和权重向量W=[w1,···,wn],i是Q的第i个元素,b是偏置向量,n是候选标签集中的标签数量。
进一步的,对标签推荐的结果进行评估与分析的步骤包括:
使用召回率Recall@k、精确度Precision@k和F1值F1-score@k三个评估指标进行对比;
使用Recall@k、Precision@k和F1-score@k进行性能评估与分析;
使用StackOverflow@small对多标签分类模型的内部进行结构分析;
其中,所述召回率Recall@k是从标签推荐列表TLitopk中选择的标签占软件项目真实标签的百分比;
对于一个软件项目oi,Recall@k是验证集V中软件项目Recall@ki的平均值;
Recall@k为:
Figure GDA0002212174400000071
Recall@ki为:
Figure GDA0002212174400000072
其中n为验证集V中含有的软件项目数量,
Figure GDA0002212174400000073
是验证集V中软件项目oi真实的标签,
Figure GDA0002212174400000074
是预测得到的标签,k代表推荐标签的数量,模运算符号用于计算各集合的数量;
所述精确度Precision@k是推荐列表TLitopk中软件项目的真值标签的百分比;
对于一个软件项目oi,Precision@k是验证集V中软件项目Precision@ki的平均值;
Precision@k为:
Figure GDA0002212174400000075
Precision@ki为:
Figure GDA0002212174400000076
其中n为验证集V中含有的软件项目数量,
Figure GDA0002212174400000077
是验证集V中软件项目oi真实的标签,
Figure GDA0002212174400000078
是预测得到的标签,k代表推荐标签的数量,模运算符号用于计算各集合的数量;
所述F1值F1-score@k是Precision@k和Recall@k二者的结合调和平均数;
对于一个软件项目oi,F1-score@k是验证集V中软件项目F1-score@ki的平均值;
F1-score@k为:
Figure GDA0002212174400000079
F1-score@ki为:
Figure GDA00022121744000000710
其中n为验证集V中含有的软件项目数量,Precision@k和Recall@k分别是召回率和精确度。
本发明的有益效果为:通过基于注意力机制的Bi-LSTM模型主要将标签推荐任务转化为多标签分类问题,根据问题的文本描述内容自动推荐标签,将标签分类问题转化为多标签分类问题,采用基于注意力机制的Bi-LSTM模型建模,从预处理后的问题文本描述中提取语义特征,并通过学习历史问题和标签之间的关系构建多标签分类模型,得到每一个候选标签的置信概率,并把这些置信概率进行排序,将概率最大的几个标签作为最终的top-k标签推荐给用户,提高标签推荐的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的流程图;
图2是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的基于注意力机制的双向长短期记忆网络模型的系统框图;
图3是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的预处理的流程图;
图4是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的文本分词处理的流程图;
图5是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的去停用词处理的流程图;
图6是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的提取词干处理的流程图;
图7是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的LSTM隐藏层单元数对Recall@5的影响曲线图;
图8是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的LSTM隐藏层单元数对Recall@10的影响曲线图;
图9是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的LSTM隐藏层单元数对Precision@5的影响曲线图;
图10是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的LSTM隐藏层单元数对Precision@10的影响曲线图;
图11是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的LSTM隐藏层单元数对F1-score@5的影响曲线图;
图12是根据本发明实施例的一种基于注意力机制的Bi-LSTM的标签推荐方法的LSTM隐藏层单元数对F1-score@10的影响曲线图。
具体实施方式
为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
根据本发明的实施例,提供了一种基于注意力机制的Bi-LSTM的标签推荐方法。
现结合附图和具体实施方式对本发明进一步说明,如图1-6所示,根据本发明实施例的基于注意力机制的Bi-LSTM的标签推荐方法,该基于注意力机制的Bi-LSTM的标签推荐方法包括以下步骤:
步骤S101,采集实验数据集;
步骤S102,从实验数据集中解析出特定的文本数据;
步骤S103,对文本数据进行预处理;
步骤S104,从预处理后的问题文本描述中提取语义特征;
步骤S105,构建多标签分类模型;
步骤S106,通过构建的多标签分类模型为新问题推荐合适的标签;
步骤S107,对标签推荐的结果进行评估与分析。
在一个实施例中,采集实验数据集的步骤包括:
在软件信息站点的数据库中下载Post文件作为数据集;
通过预先设定的阈值过滤数据集中的低频标签得到实验数据集;
其中,通过预先设定的阈值过滤数据集中的低频标签得到实验数据集的步骤还包括:
统计所有软件项目的标签,得到每个标签相应的词频;
建立词典,保存标签的词频信息,词典的键和值分别是标签的名称以及标签的出现词频;
检索词典,若当前标签对应的词频低于相应的阈值,则删去当前标签;
筛选软件项目,若当前软件项目对应的所有标签均为低频标签,则删去当前软件项目。
具体的,阈值是一个预先设定的标签词频,对于软件信息站点,我们把软件项目数量低于10w的软件信息站点称为小型站点,10w-100w的软件信息站点称为中型站点,超过100w的软件信息站点称为大型站点。为了避免低频标签对于推荐结果的误导作用,将预先设定阈值来过滤低频标签。本发明分别设置50、500、10000作为小型,中型以及大型软件信息站点的阈值。
具体的,数据集选取是是针对软件信息站点进行标签推荐的第一步,国内外的软件信息站点众多,不同的网站之间也有差异。为了使得本文的实验结果具有更好的说服力,本文选取了三种不同规模的六个数据集,其中包括一个大规模数据集StackOverflow@large,两个中等规模数据集AskUbuntu、Unix,以及三个小规模数据集StackOverflow@small、Freecode、Askdifferent,所有的数据集都可以在软件信息站点的Stack Exchange数据库中找到然后下载Post文件作为实验数据集,Post文件为XML格式,保存组织了软件信息站点中的所有内容,用户在网站中的发帖都会被记录在XML文件内。
软件信息站点是一个集合S={o1,…,on},其中oi(1≤i≤n)表示软件项目。对于StackOverflow这样的开发人员问答站点,oi的属性包括标识符id、标题tti、主体bi、一组标记Ti等。对于开放源码站点,比如Freecode,oi的属性包括项目名称ni、项目描述bi、一组标记Ti等。对于开放源码站点,比如Freecode,oi的属性包括项目名称ni、项目描述bi、一组标记Ti等。如果我们将问答站点中软件项目的题目tt和主体b的组合视为项目描述d,那么我们可以假设任何软件项目oi都包含一个描述oi.d和一组标签oi.T。信息站点S中的标记是一个集合T={t1,…,tn}与项目oi(即oi.T)相关联的标记是T的子集。本文试图回答的解决的研究问题是:给定一组带有标签的现有软件项目,如何为一个新的软件项目准确分配一组合适的标签oi.T。
在Stack Overflow等软件信息站点中,标签是推荐使用而不是必须的。通常来讲,在软件信息网站中可能存在没有标签的软件项目。显然,为了保证实验结果的准确性,本实验则必须删除这些软件项目,因为本文的标签推荐是重用现有的标签。如果一个标签出现的频率非常低,通常有两种可能性:(1)、这个标签是一个糟糕的选择,很少人使用它。例如,它的拼写不正确。在这种情况下,不应该推荐使用这个标签。(2)、软件项目含有包含一个罕见的主题,关于这个主题的标签数量很少,虽然新的软件项目也有可能包含这个罕见的主题,尽管如此,由于这个话题还没有得到广泛的认同,简单使用这个标签来表示当前主题或许并不合适。在这种情况下,软件开发人员最好自己创建合适的标签。过滤掉低频标签,通常可以去除不合适标签对实验结果的不良影响。
因此,我们设定一个预先设定好的阈值。如果标签的出现频率低于这个阈值,实验的标签集就不会包含这个标签。如果一个软件项目的所有标签的出现频率都低于这个阈值,我们将删除当前软件项目。
本实验使用的数据集在过滤掉低频标签之后的描述如表1所示。表1展示了每个数据集的名称以及对应的网站网址。表中的软件项目数量以及标签数量指的是过滤掉低频标签之后得到的数量。
表1
Figure GDA0002212174400000111
在一个实施例中,从实验数据集中解析出特定的文本数据的步骤包括:
利用DOM解析方式或SAX解析方式解析出实验数据集的标签Tag、标题Title及描述Body三个属性,并把标题Title与描述Body组合得到完整的问题文本描述;
利用HTML解析工具对描述Body进行进一步解析提取,得到原始问题文本描述TitleBody与标签Tags,并将原始问题文本描述TitleBody与标签Tags逐条存储为TXT文件;
其中,HTML解析工具包括Jsoup工具和BeautifulSoup工具;
原始问题文本描述TitleBody与标签Tags一一对应。
具体的,软件信息站点以XML格式存储数据,是一系列软件项目的集合,本发明的研究对象为软件信息站点中的问题和对应的标签,所以在实验过程中金辉提取出问题。例如在StackOverflow中,我们仅提取出PostTypeId值为1的软件项目。本发明利用SAX解析技术解析出一个软件项目的标签Tag,标题Title以及描述Body三个属性,并把Title和Body组合得到问题完整的的文本描述。值得注意的是,描述Body是以HTML格式储存和组织的内容,包含了一些结构化信息例如如链接、日期、代码以及截图等),因此本发明还需对描述Body进行进一步解析提取,常用的HTML解析工具有Java的Jsoup工具以及Python的BeautifulSoup工具。在经过以上两步解析步骤后,我们就得到了原始的问题得文本描述TitleBody与标签Tags,并把它们逐条存储为TXT文件,其中问题的文本描述和标签一一对应。
如图3所示,在一个实施例中,对文本数据进行预处理的步骤包括:
文本分词处理:将问题文本中的单词分成单个独立的单词进行处理;
去除停用词处理:去删除对问题描述中没有实际意义的虚词;
词干提取处理:将不同形式的单词转化成相同的形式;
单词转小写处理:将所有的单词统一为小写写法;
其中,所述文本分词处理的步骤包括:
读取问题文本中的文档;
利用NLTk工具包将单词按照空格分开,得到单个独立单词;
将所有的单个独立单词与Stack Overflow标签集进行比对,得到预处理单词白名单;
利用Python的正则表达式进行分词,并去除非标签单词中的特殊符号;
将分词结果进行储存;
其中,所述去除停用词处理的步骤包括:
读取分词结果;
读取文本中的每个单词;
将文本中的每个单词与停用词表里的单词一一比对判断停用词;
若当前单词在停用词表中,则删去当前单词,反之保留;
加入结果字符串,判断是否为最后一个单词;
将去除停用词结果进行储存;
其中,所述词干提取处理的步骤包括:
读取停用词处理结果;
读取文本中的每个单词;
将文本中的每个单词进行词干化处理;
加入结果字符串串,判断是否为最后一个单词;
将词干提取结果进行储存。
具体的,如图4所示,StackOverflow的问题文本由自然文本描述,由一系列的单词组成,为了在单词层面理解语义,预处理最首要的步骤便是分词。在文本表示时,英文文本通常以单词为单位映射到向量空间,然后通过求和平均得到最终的句子向量表达。因此分词显得尤为重要。本实验主要采用Python的NLTk工具包以及正则表达式进行分词。首先利用Python的NLTk工具包将单词按照空格粗略分开,再得到所有单词与Stack Overflow的标签集进行比对,如果单词为标签集中存在的标签,就把它加入预处理白名单。在得到单词白名单之后,便利用Python的正则表达式进行分词,去除非标签单词中的特殊符号。本实验的白名单主要由问题文本中同时在标签集中的单词,白名单的使用,可以在处理特殊符号的时候保留标签的完整性。例如C#、.NET这样的单词中的特殊符号就不会被处理。而version-control这样的单词中的特殊符号则会被删去。
如图5所示,StackOverflow中的问题描述经过分词后得到的词语维度很高,其中包含了很多对文本理解没有意义的停用词。因此本实验中需要对停用词进行删除,以达到文数据降维以及减少算法复杂度的目的。
在传统停用词表的基础上加入了一些软件工程领域内特有的无意义单词,例如代码块中的public、int等常规操作符。扩展之后的停用词表包含了1031个单词。
本实验的停用词处理步骤主要包括:检索每个文档中的所有单词;将这些单词与停用词表里的单词一一比对,看当前单词是否在停用词表中;如果当前单词在停用词表中,则删去当前单词,反之保留;处理下一个文档,直到全部结束。
如图6所示,在信息检索和文本挖掘中,词干提取即是去除词缀最终得到单词最基本形式的过程。在文本预处理的过程中,需要对不同形态相同词根的单词进行词根归并,得到规范化成型表示,从而降低文本噪音,提高计算速率和准确性。
常见的词干提取算法主要有Poter Stemming,Lancaster Stemming,LovinsStemming三种。本实验选用复杂度降低的Poter Stemming提取文本词干。Python的NLTk工具包封装了Poter Stemming算法。
在进行完文本分词处理、去除停用词处理及词干提取处理三个步骤后,实验已经得到了处理较为完善的问题文本。但是其中不乏有大小写形态不同的单词,在计算机理解中,大小写形态不同将会被理解成两个单词,为了减少实验数据语料规模,本实验在基本预处理步骤完成之后,将所有单词的形式统一为小写形式。
实验的具体设置为在Stack Overflow、AskUbuntu、Askdifferent、Freecode以及Unix这五个软件信息站点上评估我们的实验方法。我们进一步将StackOverflow分成了两个不同大小的数据集:其中StackOverflow@small包括了发布时间在2008年7月1日至2008年12月10日之间的软件项目。Stackoverflow@large包括了2012年7月1日前发布的所有软件项目。对于AskUbuntu和AskDifferent,我们考虑了所有在2012年4月30日之前发布的软件。最后,对于Freecode和Unix,我们考虑了所有已发布的软件对项目。因为通常认为比较老的数据具有更高的可靠性,为了确保本实验使用的软件项目以及它们的标签都是稳定的,本实验所有被选择的数据都已经发布了相当长的时间,。这样的实验设置使得本实验得到了了六个不同规模的数据集,其中包括三个小规模数据集StackOverflow@small、Freecode以及AskDifferent,连个中等规模数据集AskUbuntu和Unix,以及一个大规模数据集StackOverflow@large,它们都可以从StackExchange Data Explorer收集得到,Freecode则是可以通过爬取Freecode网站的web数据获得。
对于这三个小型数据集,我们删除那些出现次数小于等于50次的标签,为了保持阈值与软件信息站点大小之间的相似比例,我们将更大的数据集StackOverflow@large的阈值设置为10000。如果一个软件项目所有标签的频率都低于阈值,则删除该软件项目。
实验环境及配置如表2所示:
表2
Figure GDA0002212174400000151
在一个实施例中,从预处理后的问题文本描述中提取语义特征的步骤包括:
通过预设方法将问题文本中的标签向量化;
通过预先配置的Word2vec模型实现问题文本向量化;
其中,通过预设方法将问题文本中的标签向量化的步骤还包括:
读取每一个软件项目以及它对应的标签信息;
查看当前软件项目的每个在候选标签列表中的索引位置,并把当前位置赋值为1,将其余位置赋值为0。
具体的,通常计算机不能理解自然文本,估需要将标签转化为向量形式。每一个软件项目的标签向量的维度为过滤掉低频标签之后的候选标签数量,标签的向量表示也仅有0和1组成,其中1表示当前索引对应的标签确实为当前软件项目的标签,而0表示当前软件项目并没有当前标签。
具体的,计算机并不能识别英语单词,对于标签,我们同样需要把它转化为向量表示形式。通常情况下,一个软件项目的标签集合被表现为形如T=[t1,...,tn]的向量,其中n表示数据集候选标签集中标签的数量,ti的值只能是0和1,其中1的位置表示当前软件项目标签在标签的索引值。
词向量是神经网络模型的输入,其中包含了文本数据的底层特征,简洁准确地描述了文本的原始信息。本实验采用Python的gensim工具包中的Word2vec模型来实现问题文本向量化过程。
本实验中的语料库由每一个数据集预处理后的所有单词组成,这些单词经过Word2vec训练,都能得到自己的词向量表达。本实验根据经验值对Word2vec进行词向量维度设置,对于6个小数据集设置词向量的维度为100,3个中等数据集(AskUbuntu)设置为200,以及大数据集StackOverflow@large设置为300。训练算法用的是Word2vec的Skip-Gram模型。其中min_count设置为1,不删去预处理之后的每一个单词。其余参数全部设置为默认值。最后,本实验需要把每个数据集的词向量模型存储到本地,模型包括三个文件,其中w2indx.pkl文件包含了每一个单词及其对应的索引值,w2vec.pkl文件包含了每一个单词及其词向量,word2vec.model文件为一个反向训练的Word2vec模型。
如图2所示,在一个实施例中,构建多标签分类模型的步骤包括:
通过历史问题与标签之间的关系构建基于注意力机制的双向长短期记忆网络模型;
其中,所述基于注意力机制的双向长短期记忆网络模型由词嵌入层、Bi-LSTM层及Attention层构成;
所述词嵌入层通过查询每一个单词的词向量并把它们组合成句向量。
具体的,很烦采用的基于注意力机制的Bi-LSTM模型本质上是一个多标签分类算法,它可以通过学习历史的软件项目问题描述以及它们对应的标签之间的语义联系,得到训练良好的多标排序算法。Attention-Based Bi-LSTM模型可以对于候选集中的每一个标签都计算出它们的独立置信概率,置信概率值最大的几个标签将会作为Top-k标签推荐给用户。
在一个实施例中,所述Bi-LSTM层提取每一个单词的词向量的特征;
具体的,在训练的时候,可以设置Embedding层的参数Trainable为True来对词向量进行反向传播更新。这一设置虽然会显著提高实验结果,却同样也会使得实验参数剧增。在实验室需要综合考虑实验数据集以及实验设备,选择合适的参数。
所述Bi-LSTM层处理后输出第i个时间步的单词向量隐藏层单元状态hi
hi由前向LSTM处理得到的
Figure GDA0002212174400000171
以及反向LSTM处理得到的
Figure GDA0002212174400000172
结合而成,其中
Figure GDA0002212174400000173
由前一个LSTM单元的细胞状态
Figure GDA0002212174400000174
隐藏层状态
Figure GDA0002212174400000175
以及当前的词向量输入xi计算得到,而
Figure GDA0002212174400000176
由后一个LSTM单元的细胞状态
Figure GDA0002212174400000177
隐藏层状态
Figure GDA0002212174400000178
以及当前的词向量输入得到,
Figure GDA0002212174400000179
Figure GDA00022121744000001710
的计算公式如下:
Figure GDA00022121744000001711
Figure GDA00022121744000001712
f(LSTM)指的是LSTM的算法,第i个时间步的隐藏层单元状态可以由
Figure GDA00022121744000001713
Figure GDA00022121744000001714
拼接得到,即
Figure GDA00022121744000001715
在一个实施例中,所述Attention层将权重αi{1≤i≤n}附加到隐藏层状态hi,其计算公式如下所示:
Figure GDA00022121744000001716
其中n是隐藏状态的数量,h0是随机初始化的关注矩阵,ai表示由隐藏状态hi确定的能量值,ai的值越大,hi可以得到注意力权重就越大;
且权重ai公式的推导公式为:
ai=tanh(Wh·hi+bh);
其中Wh是权重矩阵,bh是偏置向量;
基于隐藏状态hi及其对应的权重αi,每个问题通过特征提取后的表示向量Q,表示向量Q的公式为:
Figure GDA00022121744000001717
具体的,软件项目的标签仅与问题描述文本中的小部分信息相关。例如“BinaryData in MySQL,How do I store binary data in MySQL?”这个问题描述,它对应的标签集是{mysql,binary-data}。尽管这个问题描述中包含了很多个单词,然而这些单词中和标签相关的只有mysql和binary,而其它的单词对于文本理解却没有太它的意义。为了捕获问题描述文本的关键部分,我们应用注意机制来更加关注与标签密切相关的信息。
在一个实施例中,通过构建的多标签分类模型为新问题推荐合适的标签的步骤包括:
所述基于注意力机制的双向长短期记忆网络模型训练时使用Sigmoid作为激活函数计算每个标签的置信概率;
设置加权二元交叉熵损失函数来平衡置信概率中正类别和负类别之间的损失;
其中,加权二元交叉熵损失函数为:
Figure GDA0002212174400000181
Figure GDA0002212174400000182
是实际置信概率列表,
Figure GDA0002212174400000183
是预先设定的置信概率列表,而β是附加到正样本的权重;
置信概率列表
Figure GDA0002212174400000184
为:
Figure GDA0002212174400000185
输入Q=[q1,...,qn]和权重向量W=[w1,···,wn],i是Q的第i个元素,b是偏置向量,n是候选标签集中的标签数量。
具体的,将TagDeepRec在六个软件信息站点上与其他两种最先进的方法进行比较:TagMulRec和FastTagRec。其中TagMulRec是一种基于语义相似性的信息检索工具,FastTagRec是一种基于神经网络的分类技术。我们通过Recall@k,Precision@k和F1-score@k评估它们的性能,其中k的取值为5和10。本发明采用十折交叉验证来评估实验结果。对于每一个数据集,我们将它随机分成十个子样本。其中的九份用作训练数据,一个子样本用于测试。我们重复这个过程十次并计算均值以获得更可靠的结果。
表3给出了针对这三种方法的实验结果,对于每一个数据集和评价指标,三者中最好的实验结果都以粗体突出显示。结果表明,除了Freecode软件信息站点外,TagDeepRec的性能都优于另外两种方法。与TagMulRec相比,针对所有站点在Recall@5,Precision@5,F1-score@5,Recall@10,Precision@10和F1-score@10的平均提升分别为8.3%,9.0%,8.4%,9.1%,2.5%和2.5%。与FastTagRec相比,针对所有站点在Recall@5,Precision@5,F1-score@5,Recall@10,Precision@10和F1-score@10的平均提升分别为5.1%,2.6%,1.9%,6.6%,1.8%和2.1%。通过对比实验方法在的表现StacOverflow@small和StackOverflow@large上的表现,可以得出软件信息站点规模越大,我们的方法TagDeepRec的效果越好的结论。
此外,为了验证TagDeepRec是否与其他方法在在相关的统计学上具有显着的差异,我们采用Wilcoxon方法进行检验,在95%的置信水平下评估了36对配对值。在六个数据集中,相应的p值也非常小(p<0.01),这证实了我们的方法在标签推荐方面具有有效的提升。
表3
Figure GDA0002212174400000191
Figure GDA0002212174400000201
在一个实施例中,对标签推荐的结果进行评估与分析的步骤包括:
使用召回率Recall@k、精确度Precision@k和F1值F1-score@k三个评估指标进行对比;
使用Recall@k、Precision@k和F1-score@k进行性能评估与分析;
使用StackOverflow@small对多标签分类模型的内部进行结构分析;
其中,所述召回率Recall@k是从标签推荐列表TLitopk中选择的标签占软件项目真实标签的百分比;
对于一个软件项目oi,Recall@k是验证集V中软件项目Recall@ki的平均值;
Recall@k为:
Figure GDA0002212174400000202
Recall@ki为:
Figure GDA0002212174400000203
其中n为验证集V中含有的软件项目数量,
Figure GDA0002212174400000204
是验证集V中软件项目oi真实的标签,
Figure GDA0002212174400000205
是预测得到的标签,k代表推荐标签的数量,模运算符号用于计算各集合的数量;
所述精确度Precision@k是推荐列表TLitopk中软件项目的真值标签的百分比;
对于一个软件项目oi,Precision@k是验证集V中软件项目Precision@ki的平均值;
Precision@k为:
Figure GDA0002212174400000206
Precision@ki为:
Figure GDA0002212174400000207
其中n为验证集V中含有的软件项目数量,
Figure GDA0002212174400000208
是验证集V中软件项目oi真实的标签,
Figure GDA0002212174400000209
是预测得到的标签,k代表推荐标签的数量,模运算符号用于计算各集合的数量;
所述F1值F1-score@k是Precision@k和Recall@k二者的结合调和平均数;
对于一个软件项目oi,F1-score@k是验证集V中软件项目F1-score@ki的平均值;
F1-score@k为:
Figure GDA0002212174400000211
F1-score@ki为:
Figure GDA0002212174400000212
其中n为验证集V中含有的软件项目数量,Precision@k和Recall@k分别是召回率和精确度。
具体的,为了评估注意机制以及加权二元交叉熵的的有效性,我们设计了四个不同的实验,它们分别是原始的Bi-LSTM模型,仅包含注意力的Bi-LSTM模型,仅含有加权二元交叉熵损失函数的Bi-LSTM模型以及同时结合注意力机制和加权二元交叉熵损失函数的Bi-LSTM模型。这组实验在StackOverflow@small进行,这是标签推荐领域中最常用的数据集。实验结果如表4所示。
表4
Figure GDA0002212174400000213
如表4所示,基于注意力的Bi-LSTM模型明显优于原始Bi-LSTM模型。实验结果在Recall@5,Precision@5,F1-score@5,Recall@10,Precision@10和F1-score@10的改进分别为0.9%,0.5%,0.8%,1.0%,0.4%和0.2%。结果证实了我们的方法中使用的基于注意力的Bi-LSTM模型的有效性。表5.2还表明,与原始Bi-LSTM模型相比,具有加权二元交叉熵损失函数的增强的Bi-LSTM模型相对于原始的Bi-LSTM模型也有更好的结果。它在Recall@5,Precision@5,F1-score@5,Recall@10,Precision@10和F1-score@10这六个评价指标上的改进分别为0.8%,0.5%,0.7%,0.8%,0.4%和0.1%。结果证实了加权二元交叉熵的的有效性。此外,结合这两种技术的TagDeepRec实现了比另外三种模型更好的性能。
为了研究基于注意力机制的Bi-LSTM模型的重要参数-lstm隐藏层单元数目对实验结果的影响,我们选择三个小规模软件信息站点,包括StackOverflow@small,AskDifferent和Freecode来进行实验,以更好地捕获实验结果在数值上的微小变化。我们逐渐将LSTM隐藏层单元的数目从50慢慢增大到1000,并观察实验结果在六个评价指标上的变化趋势。
如图7-12所示,分别反映了随着LSTM隐藏层单元数值的增大,实验结果在Recall@5、Recall@10、Precision@5,Precision@10、F1-score@5、F1-score@10这六个评价指标上的变化趋势。其中1代表FreeCode,2代表AskDifferent,而3代表StackOverflow@large。
实验结果清晰地表明了LSTM隐藏层的数量会影响在所有的评估指标上影响我们的实现效果。对于每个评估指标,存在最佳隐藏层范围。随着LSTM隐藏层数量的增加,这些评估指标的值首先稳步上升,然后逐渐下降。因此,对于小规模数据集,更多隐藏层并不总是对应于更好的性能。因此,在进行深度模型参数调试的时候,我们应该多次实验,找到最优的参数范围,既提高了实验准确度,又节省了进行实验所需的内存和时间。
综上所述,借助于本发明的上述技术方案,通过基于注意力机制的Bi-LSTM模型主要将标签推荐任务转化为多标签分类问题,根据问题的文本描述内容自动推荐标签,将标签分类问题转化为多标签分类问题,采用基于注意力机制的Bi-LSTM模型建模,从预处理后的问题文本描述中提取语义特征,并通过学习历史问题和标签之间的关系构建多标签分类模型,得到每一个候选标签的置信概率,并把这些置信概率进行排序,将概率最大的几个标签作为最终的top-k标签推荐给用户,提高标签推荐的准确性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种基于注意力机制的Bi-LSTM的标签推荐方法,其特征在于,该基于注意力机制的Bi-LSTM的标签推荐方法包括以下步骤:
采集实验数据集,具体步骤包括:在软件信息站点的数据库中下载Post文件作为数据集;
通过预先设定的阈值过滤数据集中的低频标签得到实验数据集;
其中,通过预先设定的阈值过滤数据集中的低频标签得到实验数据集的步骤还包括:
统计所有软件项目的标签,得到每个标签相应的词频;
建立词典,保存标签的词频信息,词典的键和值分别是标签的名称以及标签的出现词频;
检索词典,若当前标签对应的词频低于相应的阈值,则删去当前标签;
筛选软件项目,若当前软件项目对应的所有标签均为低频标签,则删去当前软件项目;
从实验数据集中解析出特定的文本数据,具体步骤包括:利用DOM解析方式或SAX解析方式解析出实验数据集的标签Tag、标题Title及描述Body三个属性,并把标题Title与描述Body组合得到完整的问题文本描述;
利用HTML解析工具对描述Body进行进一步解析提取,得到原始问题文本描述TitleBody与标签Tags,并将原始问题文本描述TitleBody与标签Tags逐条存储为TXT文件;
其中,HTML解析工具包括Jsoup工具和BeautifulSoup工具;
原始问题文本描述TitleBody与标签Tags一一对应;
对文本数据进行预处理,具体步骤包括:
文本分词处理:将问题文本中的单词分成单个独立的单词进行处理;
去除停用词处理:去删除对问题描述中没有实际意义的虚词;
词干提取处理:将不同形式的单词转化成相同的形式;
单词转小写处理:将所有的单词统一为小写写法;
其中,所述文本分词处理的步骤包括:
读取问题文本中的文档;
利用NLTk工具包将单词按照空格分开,得到单个独立单词;
将所有的单个独立单词与Stack Overflow标签集进行比对,得到预处理单词白名单;
利用Python的正则表达式进行分词,并去除非标签单词中的特殊符号;
将分词结果进行储存;
其中,所述去除停用词处理的步骤包括:
读取分词结果;
读取文本中的每个单词;
将文本中的每个单词与停用词表里的单词一一比对判断停用词;
若当前单词在停用词表中,则删去当前单词,反之保留;
加入结果字符串,判断是否为最后一个单词;
将去除停用词结果进行储存;
其中,所述词干提取处理的步骤包括:
读取停用词处理结果;
读取文本中的每个单词;
将文本中的每个单词进行词干化处理;
加入结果字符串串,判断是否为最后一个单词;
将词干提取结果进行储存;
从预处理后的问题文本描述中提取语义特征,具体步骤包括:
通过预设方法将问题文本中的标签向量化;
通过预先配置的Word2vec模型实现问题文本向量化;
其中,通过预设方法将问题文本中的标签向量化的步骤还包括:
读取每一个软件项目以及它对应的标签信息;
查看当前软件项目的每个在候选标签列表中的索引位置,并把当前位置赋值为1,将其余位置赋值为0;
构建多标签分类模型,具体步骤包括:通过历史问题与标签之间的关系构建基于注意力机制的双向长短期记忆网络模型;
其中,所述基于注意力机制的双向长短期记忆网络模型由词嵌入层、Bi-LSTM层及Attention层构成:
所述Bi-LSTM层提取每一个单词的词向量的特征;
所述Bi-LSTM层处理后输出第i个时间步的单词向量隐藏层单元状态hi
hi由前向LSTM处理得到的
Figure FDA0004043020840000021
以及反向LSTM处理得到的
Figure FDA0004043020840000022
结合而成,其中
Figure FDA0004043020840000023
由前一个LSTM单元的细胞状态
Figure FDA0004043020840000024
隐藏层状态
Figure FDA0004043020840000025
以及当前的词向量输入xi计算得到,而
Figure FDA0004043020840000026
由后一个LSTM单元的细胞状态
Figure FDA0004043020840000031
隐藏层状态
Figure FDA0004043020840000032
以及当前的词向量输入得到,
Figure FDA0004043020840000033
Figure FDA0004043020840000034
的计算公式如下:
Figure FDA0004043020840000035
Figure FDA0004043020840000036
f(LSTM)指的是LSTM的算法,第i个时间步的隐藏层单元状态可以由
Figure FDA0004043020840000037
Figure FDA0004043020840000038
拼接得到,即
Figure FDA0004043020840000039
所述Attention层将权重αi{1≤i≤n}附加到隐藏层状态hi,其计算公式如下所示:
Figure FDA00040430208400000310
其中n是隐藏状态的数量,h0是随机初始化的关注矩阵,ai表示由隐藏状态hi确定的能量值,ai的值越大,hi可以得到注意力权重就越大;
且权重ai公式的推导公式为:
ai=tanh(Whi+bh);
其中Wh是权重矩阵,bh是偏置向量;
基于隐藏状态hi及其对应的权重αi,每个问题通过特征提取后的表示向量Q,表示向量Q的公式为:
Figure FDA00040430208400000311
所述词嵌入层通过查询每一个单词的词向量并把它们组合成句向量;
通过构建的多标签分类模型为新问题推荐合适的标签,具体步骤包括:所述基于注意力机制的双向长短期记忆网络模型训练时使用Sigmoid作为激活函数计算每个标签的置信概率;
设置加权二元交叉熵损失函数来平衡置信概率中正类别和负类别之间的损失;
其中,加权二元交叉熵损失函数为:
Figure FDA00040430208400000312
Figure FDA00040430208400000313
是实际置信概率列表,
Figure FDA00040430208400000314
是预先设定的置信概率列表,而β是附加到正样本的权重;
置信概率列表
Figure FDA0004043020840000041
为:
Figure FDA0004043020840000042
输入Q=[q1,...,qn]和权重向量W=[w1,···,wn],i是Q的第i个元素,b是偏置向量,n是候选标签集中的标签数量;
对标签推荐的结果进行评估与分析。
2.根据权利要求1所述的基于注意力机制的Bi-LSTM的标签推荐方法,其特征在于,对标签推荐的结果进行评估与分析的步骤包括:
使用召回率Recall@k、精确度Precision@k和F1值F1-score@k三个评估指标进行对比;
使用Recall@k、Precision@k和F1-score@k进行性能评估与分析;
使用StackOverflow@small对多标签分类模型的内部进行结构分析;
其中,所述召回率Recall@k是从标签推荐列表TLitopk中选择的标签占软件项目真实标签的百分比;
对于一个软件项目oi,Recall@k是验证集V中软件项目Recall@ki的平均值;
Recall@k为:
Figure FDA0004043020840000043
Recall@ki为:
Figure FDA0004043020840000044
其中n为验证集V中含有的软件项目数量,
Figure FDA0004043020840000045
是验证集V中软件项目oi真实的标签,
Figure FDA0004043020840000046
是预测得到的标签,k代表推荐标签的数量,模运算符号用于计算各集合的数量;
所述精确度Precision@k是推荐列表TLitopk中软件项目的真值标签的百分比;
对于一个软件项目oi,Precision@k是验证集V中软件项目Precision@ki的平均值;
Precision@k为:
Figure FDA0004043020840000051
Precision@ki为:
Figure FDA0004043020840000052
其中n为验证集V中含有的软件项目数量,
Figure FDA0004043020840000053
是验证集V中软件项目oi真实的标签,
Figure FDA0004043020840000054
是预测得到的标签,k代表推荐标签的数量,模运算符号用于计算各集合的数量;
所述F1值F1-score@k是Precision@k和Recall@k二者的结合调和平均数;
对于一个软件项目oi,F1-score@k是验证集V中软件项目F1-score@ki的平均值;
F1-score@k为:
Figure FDA0004043020840000055
F1-score@ki为:
Figure FDA0004043020840000056
其中n为验证集V中含有的软件项目数量,Precision@k和Recall@k分别是召回率和精确度。
CN201910593644.9A 2019-07-03 2019-07-03 一种基于注意力机制的Bi-LSTM的标签推荐方法 Active CN110569353B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910593644.9A CN110569353B (zh) 2019-07-03 2019-07-03 一种基于注意力机制的Bi-LSTM的标签推荐方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910593644.9A CN110569353B (zh) 2019-07-03 2019-07-03 一种基于注意力机制的Bi-LSTM的标签推荐方法

Publications (2)

Publication Number Publication Date
CN110569353A CN110569353A (zh) 2019-12-13
CN110569353B true CN110569353B (zh) 2023-04-07

Family

ID=68772885

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910593644.9A Active CN110569353B (zh) 2019-07-03 2019-07-03 一种基于注意力机制的Bi-LSTM的标签推荐方法

Country Status (1)

Country Link
CN (1) CN110569353B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111274494B (zh) * 2020-01-20 2022-09-23 重庆大学 结合深度学习和协同过滤技术的复合标签推荐方法
CN111259281B (zh) * 2020-01-20 2023-04-07 腾讯科技(深圳)有限公司 商户标签的确定方法、装置及存储介质
CN111461174B (zh) * 2020-03-06 2023-04-07 西北大学 多层次注意力机制的多模态标签推荐模型构建方法及装置
CN111461175B (zh) * 2020-03-06 2023-02-10 西北大学 自注意与协同注意机制的标签推荐模型构建方法及装置
CN111488524B (zh) * 2020-04-08 2022-08-16 吉林大学 一种面向注意力的语义敏感的标签推荐方法
CN111523410B (zh) * 2020-04-09 2022-08-26 哈尔滨工业大学 一种基于注意力机制的视频显著性目标检测方法
CN111915395A (zh) * 2020-07-07 2020-11-10 云境商务智能研究院南京有限公司 一种基于多视图注意力机制的旅游包推荐方法
CN112732871B (zh) * 2021-01-12 2023-04-28 上海畅圣计算机科技有限公司 一种机器人催收获取客户意向标签的多标签分类方法
CN112800223A (zh) * 2021-01-26 2021-05-14 上海明略人工智能(集团)有限公司 基于长文本标签化的内容召回方法及系统
CN112861443B (zh) * 2021-03-11 2022-08-30 合肥工业大学 一种融入先验知识的深度学习故障诊断方法
CN113220876B (zh) * 2021-04-16 2022-12-06 山东师范大学 一种用于英文文本的多标签分类方法及系统
CN113626557A (zh) * 2021-05-17 2021-11-09 四川大学 一种基于要素标注与bert和rcnn算法的智能法条推荐辅助系统
CN113360643A (zh) * 2021-05-27 2021-09-07 重庆南鹏人工智能科技研究院有限公司 一种基于短文本分类的电子病历数据质量评价方法
CN113379167B (zh) * 2021-08-02 2022-09-23 刘德喜 一种网络论坛用户心理危机程度预测方法
CN113420154B (zh) * 2021-08-25 2021-12-10 成都索贝数码科技股份有限公司 基于层次注意的分层多标签文本分类模型的构建方法
CN114493535B (zh) * 2022-01-28 2022-09-06 北京乐开科技有限责任公司 一种基于资产模型的数据驱动用数据中台系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933804A (zh) * 2017-03-10 2017-07-07 上海数眼科技发展有限公司 一种基于深度学习的结构化信息抽取方法
CN107798624A (zh) * 2017-10-30 2018-03-13 北京航空航天大学 一种软件问答社区中的技术标签推荐方法
CN108021616A (zh) * 2017-11-06 2018-05-11 大连理工大学 一种基于循环神经网络的社区问答专家推荐方法
WO2018131405A1 (ja) * 2017-01-12 2018-07-19 Kddi株式会社 情報処理装置、方法及びコンピュータ可読記憶媒体
CN109545302A (zh) * 2018-10-22 2019-03-29 复旦大学 一种基于语义的医学影像报告模板生成方法
CN109923557A (zh) * 2016-11-03 2019-06-21 易享信息技术有限公司 使用连续正则化训练联合多任务神经网络模型

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109923557A (zh) * 2016-11-03 2019-06-21 易享信息技术有限公司 使用连续正则化训练联合多任务神经网络模型
WO2018131405A1 (ja) * 2017-01-12 2018-07-19 Kddi株式会社 情報処理装置、方法及びコンピュータ可読記憶媒体
CN106933804A (zh) * 2017-03-10 2017-07-07 上海数眼科技发展有限公司 一种基于深度学习的结构化信息抽取方法
CN107798624A (zh) * 2017-10-30 2018-03-13 北京航空航天大学 一种软件问答社区中的技术标签推荐方法
CN108021616A (zh) * 2017-11-06 2018-05-11 大连理工大学 一种基于循环神经网络的社区问答专家推荐方法
CN109545302A (zh) * 2018-10-22 2019-03-29 复旦大学 一种基于语义的医学影像报告模板生成方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Transfer Learning Using Bi-LSTM With Attention Mechanism On Stack Exchange Data;Maheep Singh et.al;《2019 International Conference on Machine Learning,Big Data,Cloud and Parallel Computing》;20190216;全文 *
在线问答社区推荐算法研究;薛浩;《中国优秀硕士论文全文数据库信息科技辑》;20180815;正文第2.5节、第3.3.1节、第5.2-5.5节 *

Also Published As

Publication number Publication date
CN110569353A (zh) 2019-12-13

Similar Documents

Publication Publication Date Title
CN110569353B (zh) 一种基于注意力机制的Bi-LSTM的标签推荐方法
CN111027327B (zh) 机器阅读理解方法、设备、存储介质及装置
CN111639171A (zh) 一种知识图谱问答方法及装置
CN110765247B (zh) 一种用于问答机器人的输入提示方法及装置
CN113360616A (zh) 自动问答处理方法、装置、设备及存储介质
CN110175334A (zh) 基于自定义的知识槽结构的文本知识抽取系统和方法
CN112287069B (zh) 基于语音语义的信息检索方法、装置及计算机设备
CN111783394A (zh) 事件抽取模型的训练方法、事件抽取方法和系统及设备
CN111143507B (zh) 一种基于复合式问题的阅读理解方法
CN110008473B (zh) 一种基于迭代方法的医疗文本命名实体识别标注方法
CN115687647A (zh) 公证文书生成方法、装置、电子设备及存储介质
CN111857660B (zh) 一种基于查询语句的情境感知api推荐方法及终端
CN113806548A (zh) 基于深度学习模型的信访要素抽取方法及抽取系统
CN109753517A (zh) 一种信息查询的方法、装置、计算机存储介质及终端
CN111680506A (zh) 数据库表的外键映射方法、装置、电子设备和存储介质
CN115357904A (zh) 一种基于程序切片和图神经网络的多类漏洞检测方法
CN117520503A (zh) 基于llm模型的金融客服对话生成方法、装置、设备及介质
CN113704420A (zh) 文本中的角色识别方法、装置、电子设备及存储介质
CN115545035B (zh) 一种文本实体识别模型及其构建方法、装置及应用
CN116244277A (zh) 一种nlp识别与知识库构建方法及系统
CN114580533A (zh) 特征提取模型的训练方法、装置、设备、介质及程序产品
CN111538914A (zh) 地址信息的处理方法和装置
CN116662523B (zh) 一种基于gpt模型的生化知识问答方法、系统及存储介质
CN117609419A (zh) 基于元学习与知识增强的领域检索方法
CN116680422A (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
TR01 Transfer of patent right

Effective date of registration: 20231218

Address after: No. 546, Luoyu Road, Hongshan District, Wuhan, Hubei Province, 430000

Patentee after: HUBEI CENTRAL CHINA TECHNOLOGY DEVELOPMENT OF ELECTRIC POWER Co.,Ltd.

Address before: 400044 No. 174 Sha Jie street, Shapingba District, Chongqing

Patentee before: Chongqing University

TR01 Transfer of patent right