CN116910646A - So网站中知识单元的内部链接目的分类方法 - Google Patents
So网站中知识单元的内部链接目的分类方法 Download PDFInfo
- Publication number
- CN116910646A CN116910646A CN202310815348.5A CN202310815348A CN116910646A CN 116910646 A CN116910646 A CN 116910646A CN 202310815348 A CN202310815348 A CN 202310815348A CN 116910646 A CN116910646 A CN 116910646A
- Authority
- CN
- China
- Prior art keywords
- data
- code
- natural language
- enhancement
- data set
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000012549 training Methods 0.000 claims abstract description 39
- 238000012360 testing method Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 9
- 230000002708 enhancing effect Effects 0.000 claims description 6
- 230000006870 function Effects 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 claims description 4
- 230000003068 static effect Effects 0.000 claims description 3
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 claims description 2
- 238000003780 insertion Methods 0.000 claims 1
- 230000037431 insertion Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/217—Validation; Performance evaluation; Active pattern learning techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种SO网站中知识单元的内部链接目的分类方法,该方法首先将SO知识单元内容拆分为自然语言和代码语言,然后分别采用不同的数据增强方法进一步提升数据增强的效果,再利用课程学习的方法将增强后的数据输入到RoBERTa模型中进行训练,缓解了数据集量少、模型学习种类复杂而导致的分类结果准确度低的问题,提高了整体鲁棒性。本发明方法只需少量数据即能够实现对SO知识单元链接目的准确分类。本发明方法为自动化的链接目的分类方法,使得SO中的链接目的将能够更加准确地进行分类。本发明能够帮助寻求帮助的开发者了解链接的目的,进而快速判断是否需要点击链接以获取相关的知识。
Description
技术领域
本发明涉及一种SO网站中知识单元的内部链接目的分类方法,主要应用于知识问答网站SO中对知识单元与知识单元的链接目的进行分类。
背景技术
在SO的知识问答网站中,存在着大量由特定问题、答案和评论组成的知识单元。用户在问题、答案或评论中使用内部链接的目的各不相同,例如补充自己的回答、解释相关的知识单元重复、或者指向其他知识单元以获取更详细的解决方法等等。
然而,不同链接目的的内部链接对于后来寻求帮助的开发者来说具有不同的帮助程度。
例如,当链接目的是为了提供特定问题的子步骤的具体解决方法时,开发者必须点击链接才能获取到相关的知识。而当链接目的是为了提供回答内容的参考出处时,开发者无需点击链接即可获取到原本知识单元中的知识,而链接中的知识单元的内容则属于扩充内容,对于原本知识单元的理解并非必要,因此需要对SO知识单元中内部链接目的进行分类。
然而,在SO社区中存在着数以百万计的内部链接。若要采用人工方法对SO知识单元中所有链接目的进行分类,不仅是一项不切实际的任务,而且由于SO作为一个编程热门社区,其内容一直在不断更新,导致分类工作成为一项持续性的挑战。从头开始对一个大型模型进行预训练的开销很大,因此应充分利用预训练模型适应分类任务。
针对知识单元中内部链接的分类的准确度的提升,传统的方法往往是直接将训练数据输入到BERT模型中或输入到改良模型后的RoBERTa模型中,但是此种方法没有充分地利用预训练模型的潜力,未能解决特定训练数据数据量少而网络结构复杂的过拟合问题。
发明内容
本发明的目的在于提出一种SO网站中知识单元的内部链接目的分类方法,旨在解决数据集量少、模型学习种类复杂而导致的分类结果准确度低的问题,提高识别精度。
本发明为了实现上述目的,采用如下技术方案:
SO网站中知识单元的内部链接目的分类方法,包括如下步骤:
步骤1.将原始数据集经过预处理,得到自然语言数据集和代码数据集;
步骤2.将自然语言数据集中的自然语言以及代码数据集中的代码分别进行数据增强,然后将增强后的自然语言以及代码重新组合成为增强数据集;
将增强数据集分为训练集以及测试集,分别用于RoBERTa模型训练和测试;
步骤3.将训练集中的数据通过课程学习的方法输入到RoBERTa模型中进行训练,得到训练好的RoBERTa模型,并利用测试集对训练好的RoBERTa模型测试;
利用训练以及测试好的RoBERTa模型对输入的内部链接目的进行分类预测。
本发明具有如下优点:
如上所述,本发明述及了一种SO网站中知识单元的内部链接目的分类方法,该内部链接目的分类方法首先将SO知识单元内容拆分为自然语言和代码语言,然后分别采用不同的数据增强方法,进一步提升数据增强的效果,再采用课程学习的方法,将增强后的数据输入到RoBERTa模型中进行训练,从而缓解了数据集量少、模型学习种类复杂而导致的分类结果准确度低的问题,提高了整体鲁棒性。本发明方法只需少量数据即能够实现对SO知识单元链接目的准确分类。本发明方法能够帮助后来寻求帮助的开发者了解链接的目的,从而能够快速判断是否需要点击链接以获取相关的知识,进而提升阅读效率。
附图说明
图1为本发明实施例中SO网站中知识单元的内部链接目的分类方法的流程图。
具体实施方式
下面结合附图以及具体实施方式对本发明作进一步详细说明:
本发明实施例提出了一种SO网站中知识单元的内部链接目的分类方法,该方法旨在通过使用数据增强、课程学习的方法来对预训练模型进行改进,并最终对StackOverflow网站(以下简称SO)中链接知识单元与知识单元的链接目的进行分类预测,具体构思如下:
在将数据输入预训练模型之前,通过数据增强,即通过语义保持变换来丰富数据的多样性;并且通过引入课程学习,以从易到难的方式组织语义保持变换后的数据,从而达到改进预训练模型的目的,有效地缓解分类过程中的过拟合问题、提高分类过程的准确性。
如图1所示,本实施例中SO网站中知识单元的内部链接目的分类方法,包括如下步骤:
步骤1.将原始数据集经过预处理,得到自然语言数据集和代码数据集。
所述步骤1具体为:
步骤1.1.为了获取Stack Overflow社区中的所有内部链接,从SO网站官方的转储库中下载posts数据表和postlinks数据表。
其中,posts数据表记录了所有知识单元的各种信息,包括知识单元的ID号和文本内容;而postlinks数据表记录了由内部链接关联起来的两个知识单元的ID号。
通过这些数据,本实施例可以获取到所有的内部链接以及它们所关联的内容。一旦获取了数据,接下来的步骤是将知识单元的内容拆分为自然语言和代码,以便后续处理。
步骤1.2.通过数据表posts的文本内容的格式说明字符,定位知识单元中自然语言部分以及代码部分,并将知识单元内容拆分为自然语言和代码。
在posts数据表中,记录文本内容时采用了不同的标记方式;其中,对于代码,使用<code></code>进行标记,而对于自然语言,则使用<p></p>进行标记。
因此,本实施例使用正则表达式将自然语言部分和代码部分区分开来。具体的,通过正则表达式,将<p></p>与<code></code>中的部分识别出来。
由于每个知识单元中可能有多个自然语言区域和代码区域,因此,本实施例采用\pm和\cm分别对不同的自然语言和代码进行标记,其中,m为自然数。
将所有的\pm代表的自然语言合并,所有的\cm代表的代码合并,并分别作为自然语言数据集中的自然语言和代码数据集中的代码,并赋予ID号。
每个知识单元都有唯一的ID编号,将ID编号分别赋予拆分后的自然语言和代码,作为拆分后的自然语言和代码在自然语言数据集和代码数据集中的ID号。
在进行数据增强后,再次将它们组合起来。通过这样的数据预处理过程,成功将原始数据集分为自然语言数据集和代码数据集,为后续的处理和分析打下了基础。
下面是一个具体示例。假设原知识单元在数据库中的ID为“10001”,其内容如下:
<p>Complete example:</p>
<pre><code>#include<stdio.h>
void test(int arr[]){
int arrSize=(int)(sizeof(arr)/sizeof(arr[0]));
printf("%d\n",arrSize);//2(wrong?!)
}
int main(int argc,const char*argv[]){
int point[3]={50,30,12};
int arrSize=(int)(sizeof(point)/sizeof(point[0]));
printf("%d\n",arrSize);//3(correct:-))
test(point);
return 0;
</code></pre>
<p>Before passing it to a function,sizeof gives me the correctvalue.Doing the exact same thing on the exact same array in the functiongives weird results.There's one element missing.Why?</p>。
在上述示例中,通过正则表达式将<p></p>与<code></code>中的部分识别出来,并分别作为自然语言数据集中的内容和代码数据集中的内容,并赋予ID号。代码数据集中的…指代上述示例中的实际部分,其内容过长此处采用…代替。其结果如表1所示:
表1数据预处理结果示例
步骤2.将自然语言数据集中的自然语言以及代码数据集中的代码分别进行数据增强,然后将增强后的自然语言以及代码重新组合成为增强数据集。
为了减小模型的过拟合问题,本发明采用数据增强的方法对数据集进行扩充。而针对于由数据预处理得到的自然语言数据集和代码数据集,采用不同的方式进行数据增强。
自然语言进行数据增强的过程如下:
步骤2.1.1.检测自然语言数据集中的自然语言数据中的词语的词性;对于关键词进行保留;对于非关键词,使用同义词或近义词替代原有词汇,得到第一次增强后的自然语言数据。
nltk语料库中存在与同义词替换适配的包,因此通过在代码中加入nltk语料库,将自然语言数据集中的自然语言输入,能够得到同义词替换后的增强结果。
步骤2.1.2.将第一次增强后的自然语言数据通过翻译程序翻译为其他语言,再通过相同的翻译程序翻译回原语言类型,得到第二次增强后的自然语言数据。
此需求例如可以由谷歌翻译库googletrans(此处只是示例性的)等实现。通过翻译库将输入的原文翻译为其他语言,如法语,再将翻译结果回译为原语言。
步骤2.1.3.在第二次增强后的自然语言数据中随机插入至少一个与第二次增强后的自然语言数据无关紧要的词语,得到第三次增强后的自然语言数据。
随机插入一些无关紧要的词语。这些插入的单词可以是真实的单词或是人工合成的单词,这取决于实际应用场景。这种方法可以增加原始自然语言中的单词数量,并且引入新的语言结构和语法规则,从而扩展数据集的多样性。
此需求同样可以通过nltk语料库实现。通过输入nltk语料库,产生一些同义单词,并通过随机函数添加到自然语言数据的随机位置。
对于数据增强,本发明采用第一次增强的对象为原数据,第二次增强的对象为第一次增强后的数据,第三次增强的对象为第二次增强后的数据。
如此可保证不同增强次数的数据与原数据的形式越来越不同,即增强次数越多,与原文差距越大,模型学习起来越困难,为后续的课程学习打下基础。
对于得到的不同增强次数的增强对象,本发明采用不同的ID号以标识它们。例如,对于增强前知识单元自然语言部分ID号为“10001”的内容,对其增强一次获得的新的数据的ID号赋值为“10001_1”。同理对其增强两次获得的新的数据的ID号赋值为“10001_2”,以此类推。
下面的表2是以上文中提供的自然语言数据进行增强,并展示了数据增强后的结果。
表2数据增强实例
其中,步骤2.1.1中的方法即针对自然语言的第一次增强规则,步骤2.1.2中的方法即针对自然语言的第二次增强规则,步骤2.1.3中的方法即针对自然语言的第三次增强规则。
代码进行数据增强的过程如下:
步骤2.2.1.变更代码数据集中的原始代码的控制结构,得到第一次增强后的代码数据。
例如,对于循环结构和条件结构,可采用不同的关键词去实现相同的功能,将for等效替换为while,将switch等效替换为if,反之亦然。
目前,一些专门的代码重构工具可以帮助自动执行常见的代码重构操作,包括循环结构的转换。例如,Eclipse、IntelliJ IDEA等集成开发环境提供了代码重构功能。
利用这些已有的代码重构工具,可以帮助自动执行代码重构操作。
步骤2.2.2.变更第一次增强后的代码数据中代码的顺序,得到第二次增强后的代码数据。
例如,对于顺序结构,如初始的变量定义顺序并不影响语义,因此通过合并、拆分和交换声明语句来生成不同的等效声明语句,帮助模型忽略语法形式的干扰,并专注于语义。
本实施例使用静态分析工具来解析代码识别出声明语句;然后通过修改分析结果中的声明顺序来实现调换;同时在声明处加入一些没有意义的声明改变代码内容而不改变代码含义。
其中,静态分析工具例如AST分析工具。
步骤2.2.3.变更第二次增强后的代码数据的API,得到第三次增强后的代码数据。
例如,对于C++语言的输出接口而言,输出APIcout转换为printf等。
IntelliJ IDEA和Eclipse这些集成开发环境提供了强大的重构功能,包括改变代码的API。
本实施例使用这些工具来自动重命名、提取接口、更改函数签名等,以实现API的改变而同时不改变代码的功能。以下述原代码为例,给出三次代码增强后的示例。
a.源代码如下:
b.第一次增强后的代码:
c.第二次增强后的代码:
d.第三次增强后的代码:
对于代码数据集的增强,其规则与自然语言数据集相同。例如,对于增强前知识单元代码部分ID号为“10001”的内容,对其增强一次获得的新的数据的ID号赋值为“10001_1”,其余以此类推。
在完成文本以及代码的数据增强后,将具有相同ID编号的文本数据以及代码数据组合形成增强数据集,具体组合方式为:
将第n次增强后的文本与代码组合作为第n次增强数据集中的数据,n为自然数。
其中,步骤2.2.1中的方法即针对代码的第一次增强规则,步骤2.2.2中的方法即针对代码的第二次增强规则,步骤2.2.3中的方法即针对代码的第三次增强规则。
在对原始数据集的文本部分和代码部分依次进行了数据集增强以后,获得了知识单元粒度下的增强文本数据和增强代码数据。
为了平衡增强的文本数据与代码数据之间的难度,因此本实施例使用同一增强次数下的文本数据与代码数据相结合,并合并成新的数据。
例如,对于在文本部分ID号为“10001_1”的数据,在增强代码数据集中寻找相同的ID号“10001_1”,其含义分别为知识单元ID号为“10001”的数据的文本部分和代码部分进行一次数据增强后的结果,将其内容拼接起来作为增强数据集中的一份数据。
由于SO中的知识单元的内容带有格式标识符,即用于标注代码段的<code></code>和用于标注文本内容的<p></p>,因此在ID为“10001”的知识单元中,使用文本数据集中ID为“10001_1”中\pm:后面的内容替换知识单元“10001”中第m个<p>…</p>中间的…部分,使用代码数据集中ID为“10001_1”中\cm:后面的内容替换知识单元“10001”中第m个<code>…</code>中间的…部分,即可实现对知识单元的文本内容、代码部分依次进行数据增强,并将增强次数一致的数据重新整合回原来的格式。
将增强数据集分为训练集以及测试集,分别用于RoBERTa模型训练和测试。对训练集增强是为了避免数据量过少造成的过拟合问题;对测试集增强在一定程度地避免分类错误的偶然性。对测试用例的原数据以及增强数据均进行分类预测,小概率得到多个结果类别,此时将预测结果数最多的类别作为最终的分类结果,避免由于偶然性造成的原数据的预测错误。
步骤3.将训练集中的数据通过课程学习的方法输入到RoBERTa模型中进行训练,得到训练好的RoBERTa模型,并利用测试集对训练好的RoBERTa模型测试。
由于经过数据增强,进行过1、2、3次转换的数据的形式与原始数据的形式相差越来越大,因此在RoBERTa模型训练中也会越来越复杂,即更难学习。因此本发明采用了基于增强的课程策略,首先只在原始数据上进行训练,然后逐步引入增强数据,并逐渐增加其比例和难度,以确保模型在训练过程中接触更多的数据,并逐渐适应增强数据的难度。
RoBERTa模型训练的过程如下:
步骤3.1.使用η存放原始数据集以及增强数据集,η初始等同于原始数据集D;
步骤3.2.使用RoBERTa模型对η中原始数据集的数据进行训练;
步骤3.3.根据训练结果更新RoBERTa模型参数;
步骤3.4.定义当前迭代次数为n,迭代总次数为N,n的初始值为1;
第一迭代时,将原始数据集D拆分得到自然语言数据集和代码数据集,对自然语言数据集和代码数据集中的自然语言和代码分别进行增强并合并,得到第一次迭代时的增强数据集;
以后每次迭代时,分别采用第n次增强规则对即第n-1次迭代后得到的增强后的自然语言和代码分别进行增强并合并,得到第n次迭代时的增强数据集Dn;
步骤3.5.更新η,令η=η∪{Dn}。第n次迭代时,η的内容应包括原始数据集以及第1次至第n次增强得到的总共1+n个数据集;
步骤3.6.使用RoBERTa模型对η中所有数据集的数据进行训练;
步骤3.7.根据训练结果更新第n次迭代时RoBERTa模型参数;
步骤3.8.判断n是否小于迭代总次数;
若n小于迭代总次数N,则令n=n+1,并返回步骤3.4;否则,进入步骤3.9;
其中,N等于增强次数,在本实施例中等于3。
步骤3.9.得到优化后的RoBERTa模型参数,即RoBERTa模型训练好。RoBERTa模型训练好之后,利用测试集中的数据对RoBERTa模型进行测试。
步骤4.利用训练以及测试好的RoBERTa模型对输入的内部链接目的进行分类预测。
本发明的课程学习,通过在初始阶段只使用原始数据进行训练,RoBERTa模型可以建立起对基本模式和常见情况的理解,这使得模型能够掌握基本的任务要求和解决方法,并在初期训练中构建起稳定的基础。随后,逐渐引入增强数据,并逐步提高其比例和难度,增强数据是通过对原始数据应用各种变换、扩充和增加噪声等技术来生成的,通过引入增强数据,使得RoBERTa模型可以更好地应对各种复杂情况和边缘情况,并提高其泛化能力。
逐渐增加增强数据的比例和难度的过程有助于模型逐步适应更加复杂的任务和数据分布。RoBERTa模型在每个训练阶段都会面对更具挑战性的数据,从而推动其学习和进步。通过此种方式,让RoBERTa模型循序渐进地学习数据,达到由易到难的目的。
本发明分类方法为自动化的链接目的分类方法,通过本发明能够使得SO中的链接目的将能够更加准确地进行分类,从而为用户提供更高效的知识获取体验。
当然,以上说明仅仅为本发明的较佳实施例,本发明并不限于列举上述实施例,应当说明的是,任何熟悉本领域的技术人员在本说明书的教导下,所做出的所有等同替代、明显变形形式,均落在本说明书的实质范围之内,理应受到本发明的保护。
Claims (10)
1.SO网站中知识单元的内部链接目的分类方法,其特征在于,包括如下步骤:
步骤1.将原始数据集经过预处理,得到自然语言数据集和代码数据集;
步骤2.将自然语言数据集中的自然语言以及代码数据集中的代码分别进行数据增强,然后将增强后的自然语言以及代码重新组合成为增强数据集;
将增强数据集分为训练集以及测试集,分别用于RoBERTa模型训练和测试;
步骤3.将训练集中的数据通过课程学习的方法输入到RoBERTa模型中进行训练,得到训练好的RoBERTa模型,并利用测试集对训练好的RoBERTa模型测试;
步骤4.利用训练以及测试好的RoBERTa模型对输入的内部链接目的进行分类预测。
2.根据权利要求1所述的SO网站中知识单元的内部链接目的分类方法,其特征在于,
所述步骤1具体为:
步骤1.1.从SO网站的转储库中下载posts数据表和postlinks数据表;
其中,posts数据表记录了所有知识单元的各种信息,包括知识单元的ID号和文本内容;而postlinks数据表记录了由内部链接关联起来的两个知识单元的ID号;
步骤1.2.通过数据表posts的文本内容的格式说明字符,定位知识单元中自然语言部分以及代码部分,并将知识单元内容拆分为自然语言和代码;
在posts数据表中,记录文本内容时采用了不同的标记方式;其中,对于代码,使用<code></code>进行标记,而对于自然语言,则使用<p></p>进行标记;
通过正则表达式,将<p></p>与<code></code>中的部分识别出来,并分别作为自然语言数据集中的自然语言和代码数据集中的代码,并赋予ID号;
每个知识单元都有唯一的ID编号,将ID编号分别赋予拆分后的自然语言和代码,作为拆分后的自然语言和代码在自然语言数据集和代码数据集中的ID号;
至此,将原始数据集划分为自然语言数据集和代码数据集。
3.根据权利要求1所述的SO网站中知识单元的内部链接目的分类方法,其特征在于,
所述步骤2中,自然语言进行数据增强的过程如下:
步骤2.1.1.检测自然语言数据集中的自然语言数据中的词语的词性;对于关键词进行保留;对于非关键词,使用同义词或近义词替代原有词汇,得到第一次增强后的自然语言数据;
步骤2.1.2.将第一次增强后的自然语言数据通过翻译程序翻译为其他语言,再通过相同的翻译程序翻译回原语言类型,得到第二次增强后的自然语言数据;
步骤2.1.3.在第二次增强后的自然语言数据中随机插入至少一个与第二次增强后的自然语言数据无关紧要的词语,得到第三次增强后的自然语言数据。
4.根据权利要求3所述的SO网站中知识单元的内部链接目的分类方法,其特征在于,
所述步骤2.1.1中,nltk语料库中存在与同义词替换适配的包,因此通过在代码中加入nltk语料库,将自然语言数据集中的自然语言输入,能够得到同义词替换后的增强结果。
5.根据权利要求3所述的SO网站中知识单元的内部链接目的分类方法,其特征在于,
所述步骤2.1.3中,通过nltk语料库实现随机插入无关紧要的词语,具体如下:通过输入nltk语料库产生一些同义单词,并通过随机函数添加到自然语言数据的随机位置。
6.根据权利要求1所述的SO网站中知识单元的内部链接目的分类方法,其特征在于,
所述步骤2中,代码进行数据增强的过程如下:
步骤2.2.1.变更代码数据集中的原始代码的控制结构,得到第一次增强后的代码数据;
步骤2.2.2.变更第一次增强后的代码数据中代码的顺序,得到第二次增强后的代码数据;
步骤2.2.3.变更第二次增强后的代码数据的API,得到第三次增强后的代码数据。
7.根据权利要求6所述的SO网站中知识单元的内部链接目的分类方法,其特征在于,
所述步骤2.2.1中,利用代码重构工具帮助自动执行代码重构操作。
8.根据权利要求6所述的SO网站中知识单元的内部链接目的分类方法,其特征在于,
所述步骤2.2.2具体为:
使用静态分析工具来解析代码识别出声明语句;通过修改分析结果中的声明顺序来实现调换;在声明处加入一些没有意义的声明改变代码内容而不改变代码含义。
9.根据权利要求2所述的SO网站中知识单元的内部链接目的分类方法,其特征在于,
所述步骤2中,在完成自然语言以及代码的数据增强后,将具有相同ID编号的自然语言数据以及代码数据组合形成增强数据集,具体组合方式为:
将第n次增强后的自然语言与代码组合作为第n次增强数据集中的数据,n为自然数。
10.根据权利要求1所述的SO网站中知识单元的内部链接目的分类方法,其特征在于,
所述步骤3中,RoBERTa模型训练的过程如下:
步骤3.1.使用η存放原始数据集以及增强数据集,η初始等同于原始数据集D;
步骤3.2.使用RoBERTa模型对η中原始数据集的数据进行训练;
步骤3.3.根据训练结果更新RoBERTa模型参数;
步骤3.4.定义当前迭代次数为n,迭代总次数为N,n的初始值为1;
第一迭代时,将原始数据集D拆分得到自然语言数据集和代码数据集,对自然语言数据集和代码数据集中的自然语言和代码分别进行增强并合并,得到第一次迭代时的增强数据集;
以后每次迭代时,分别采用第n次增强规则对即第n-1次迭代后得到的增强后的自然语言和代码分别进行增强并合并,得到第n次迭代时的增强数据集Dn;
步骤3.5.更新η,令η=η∪{Dn};其中,第n次迭代时,η中包括原始数据集以及第1次至第n次增强数据集,得到总共1+n个数据集;
步骤3.6.使用RoBERTa模型对η中所有数据集的数据进行训练;
步骤3.7.根据训练结果更新第n次迭代的RoBERTa模型参数;
步骤3.8.判断n是否小于迭代总次数N;
若n小于迭代总次数N,则令n=n+1,并返回步骤3.4;否则,进入步骤3.9;
步骤3.9.得到优化后的RoBERTa模型参数,即RoBERTa模型训练好。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310815348.5A CN116910646B (zh) | 2023-07-04 | 2023-07-04 | So网站中知识单元的内部链接目的分类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310815348.5A CN116910646B (zh) | 2023-07-04 | 2023-07-04 | So网站中知识单元的内部链接目的分类方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116910646A true CN116910646A (zh) | 2023-10-20 |
CN116910646B CN116910646B (zh) | 2024-02-09 |
Family
ID=88354199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310815348.5A Active CN116910646B (zh) | 2023-07-04 | 2023-07-04 | So网站中知识单元的内部链接目的分类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116910646B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275789B1 (en) * | 1998-12-18 | 2001-08-14 | Leo Moser | Method and apparatus for performing full bidirectional translation between a source language and a linked alternative language |
US20190324744A1 (en) * | 2019-06-28 | 2019-10-24 | Intel Corporation | Methods, systems, articles of manufacture, and apparatus for a context and complexity-aware recommendation system for improved software development efficiency |
CN112149421A (zh) * | 2020-09-23 | 2020-12-29 | 云南师范大学 | 一种基于bert嵌入的软件编程领域实体识别方法 |
CN113011461A (zh) * | 2021-02-19 | 2021-06-22 | 中国科学院软件研究所 | 通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置 |
CN113139054A (zh) * | 2021-04-21 | 2021-07-20 | 南通大学 | 一种基于Transformer的代码编程语言分类方法 |
CN113642330A (zh) * | 2021-07-19 | 2021-11-12 | 西安理工大学 | 基于目录主题分类的轨道交通规范实体识别方法 |
CN114356990A (zh) * | 2021-12-30 | 2022-04-15 | 中国人民解放军海军工程大学 | 基于迁移学习的基地命名实体识别系统及方法 |
WO2022164613A1 (en) * | 2021-01-28 | 2022-08-04 | Microsoft Technology Licensing, Llc | Ml using n-gram induced input representation |
CN115048944A (zh) * | 2022-08-16 | 2022-09-13 | 之江实验室 | 一种基于主题增强的开放域对话回复方法及系统 |
CN115687595A (zh) * | 2022-11-15 | 2023-02-03 | 浙江大学 | 一种面向常识问答的基于模版提示的对比解释生成方法 |
KR20230050673A (ko) * | 2021-10-08 | 2023-04-17 | 주식회사 리니토 | 자연어이해 학습 모델을 위한 학습데이터의 이중 증강 방법 및 장치 |
-
2023
- 2023-07-04 CN CN202310815348.5A patent/CN116910646B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275789B1 (en) * | 1998-12-18 | 2001-08-14 | Leo Moser | Method and apparatus for performing full bidirectional translation between a source language and a linked alternative language |
US20190324744A1 (en) * | 2019-06-28 | 2019-10-24 | Intel Corporation | Methods, systems, articles of manufacture, and apparatus for a context and complexity-aware recommendation system for improved software development efficiency |
CN112149421A (zh) * | 2020-09-23 | 2020-12-29 | 云南师范大学 | 一种基于bert嵌入的软件编程领域实体识别方法 |
WO2022164613A1 (en) * | 2021-01-28 | 2022-08-04 | Microsoft Technology Licensing, Llc | Ml using n-gram induced input representation |
CN113011461A (zh) * | 2021-02-19 | 2021-06-22 | 中国科学院软件研究所 | 通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置 |
CN113139054A (zh) * | 2021-04-21 | 2021-07-20 | 南通大学 | 一种基于Transformer的代码编程语言分类方法 |
CN113642330A (zh) * | 2021-07-19 | 2021-11-12 | 西安理工大学 | 基于目录主题分类的轨道交通规范实体识别方法 |
KR20230050673A (ko) * | 2021-10-08 | 2023-04-17 | 주식회사 리니토 | 자연어이해 학습 모델을 위한 학습데이터의 이중 증강 방법 및 장치 |
CN114356990A (zh) * | 2021-12-30 | 2022-04-15 | 中国人民解放军海军工程大学 | 基于迁移学习的基地命名实体识别系统及方法 |
CN115048944A (zh) * | 2022-08-16 | 2022-09-13 | 之江实验室 | 一种基于主题增强的开放域对话回复方法及系统 |
CN115687595A (zh) * | 2022-11-15 | 2023-02-03 | 浙江大学 | 一种面向常识问答的基于模版提示的对比解释生成方法 |
Non-Patent Citations (5)
Title |
---|
PETAR AFRIC ET.AL.: ""Empirical Study: How Issue Classification Influences Software Defect Prediction"", 《IEEE ACCESS 》, vol. 11, pages 11732 * |
徐菲菲;冯东升;: "文本词向量与预训练语言模型研究", 上海电力大学学报, no. 04, pages 12 - 20 * |
杨万灵: ""基于RoBERTa的数据增强与代码词嵌入代码补全模型"", 《软件》, vol. 43, no. 11, pages 111 - 116 * |
石鼎等: ""强化学习驱动的海战场多智能体协同作战仿真算法"", 《系统仿真学报》, vol. 355, no. 4, pages 786 - 796 * |
罗贤昌: ""软件需求文档的自动化建模分析与分类研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》, vol. 2023, no. 03, pages 138 - 100 * |
Also Published As
Publication number | Publication date |
---|---|
CN116910646B (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shin et al. | A survey of automatic code generation from natural language | |
Wang et al. | A comprehensive survey of grammar error correction | |
CN109871322B (zh) | 一种基于机器学习的程序题自动评分方法 | |
Ge et al. | Discriminative reranking for semantic parsing | |
Stancheva et al. | A model for generation of test questions | |
CN113836895A (zh) | 一种基于大规模问题自学习的无监督机器阅读理解方法 | |
Wax | Automated grammar engineering for verbal morphology | |
CN117194258A (zh) | 一种代码大模型的评测方法和装置 | |
Mao et al. | Fact-driven abstractive summarization by utilizing multi-granular multi-relational knowledge | |
Alexandru et al. | Replicating parser behavior using neural machine translation | |
CN116910646B (zh) | So网站中知识单元的内部链接目的分类方法 | |
He et al. | [Retracted] Application of Grammar Error Detection Method for English Composition Based on Machine Learning | |
Li et al. | Word segmentation and morphological parsing for sanskrit | |
CN112965909A (zh) | 测试数据、测试用例生成方法及系统、存储介质 | |
Bonnell et al. | Rule-based Adornment of Modern Historical Japanese Corpora using Accurate Universal Dependencies. | |
Wachtel et al. | Natural language user interface for software engineering tasks | |
Rehbein et al. | Sprucing up the trees–error detection in treebanks | |
Gao et al. | Dynamic specification mining based on transformer | |
Mohan | Automatic repair and type binding of undeclared variables using neural networks | |
Zamaraeva et al. | Spanish Resource Grammar version 2023 | |
Rai et al. | Accurate module name prediction using similarity based and sequence generation models | |
Vayadande et al. | Converting Pseudo Code to Code: A Review | |
Jain | Deep Learning for Code Generation using Snippet Level Parallel Data | |
Strich | Improving Large Language Models in Repository Level Programming through Self-Alignment and Retrieval-Augmented Generation | |
Iyer | Learning to Map Natural Language to General Purpose Source Code |
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 |