CN116701531A - 代码块分享方法、装置、计算机设备和存储介质 - Google Patents
代码块分享方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116701531A CN116701531A CN202310491489.6A CN202310491489A CN116701531A CN 116701531 A CN116701531 A CN 116701531A CN 202310491489 A CN202310491489 A CN 202310491489A CN 116701531 A CN116701531 A CN 116701531A
- Authority
- CN
- China
- Prior art keywords
- feature
- code
- embedded
- information
- training
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000003860 storage Methods 0.000 title claims abstract description 27
- 238000000605 extraction Methods 0.000 claims abstract description 91
- 238000004590 computer program Methods 0.000 claims abstract description 41
- 238000012549 training Methods 0.000 claims description 255
- 230000008569 process Effects 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 239000013598 vector Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
-
- 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/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种代码块分享方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将需求代码特征信息转化为对应的第一嵌入特征;根据第一嵌入特征和各预存嵌入特征之间的特征相似度,在各预存嵌入特征中选取各目标预存嵌入特征;向区块链申请获取各目标预存嵌入特征对应的简要代码信息;确定客户端在各简要代码信息中选取的目标简要代码信息;通过区块链将目标简要代码信息对应的真实代码块分享至客户端。采用本方法能够兼顾提升代码分享的效率以及安全性。
Description
技术领域
本申请涉及人工智能技术领域,特别是涉及一种代码块分享方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,代码版权也越来越得到重视,人们对于代码块的需求也日益增加。
传统技术中,代码需求方通常是向代码提供方提出代码需求,然后代码需求方会根据代码需求定制相对应的代码块,并将代码块分享给代码需求方,而代码需求方在拿到代码块后通常会再次向代码提供方提出修改需求,以此往复,直至修改后的代码块符合代码需求方的要求。
然而,在该代码块分享过程中,代码需求方与代码提供方之间的交涉过程较为复杂,会导致代码块分享的效率较低,且由于代码块的版权通常在代码注释中进行声明,一旦代码块发生泄漏,代码块很容易被盗用,影响代码块分享的安全性。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升代码块分享的效率和安全性的代码块分享方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种代码块分享方法。所述方法包括:
获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征;
根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征;
向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息;
确定所述客户端在各所述简要代码信息中选取的目标简要代码信息;
通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
在其中一个实施例中,所述确定所述客户端在各所述简要代码信息中选取的目标简要代码信息,包括:
基于所述预设特征提取模型,将各所述简要代码信息转化为对应的第二嵌入特征;根据所述第一嵌入特征和各所述第二嵌入特征之间的特征相似度,在各所述简要代码信息中确定各预选简要代码信息;将各所述预选简要代码信息反馈至所述客户端,根据所述客户端针对于各所述预选简要代码信息的反馈信息,在各所述预选简要代码信息中确定所述目标简要代码信息。
在其中一个实施例中,在所述获取客户端上传的需求代码特征信息之前,所述方法还包括:
接收分享方上传的真实代码块以及所述真实代码块对应的真实代码特征信息;基于预设特征提取模型,将所述真实代码特征信息转化为对应的真实代码嵌入特征;将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块以及所述真实代码块对应的简要代码信息进行上链存储。
在其中一个实施例中,在所述将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块以及所述真实代码块对应的简要代码信息进行上链存储之前,包括:
获取所述真实代码块的全局特征信息以及细节特征信息;对所述全局特征信息和所述细节特征信息进行特征提取,得到代码内容特征;根据所述代码内容特征与各已上链存储代码块的预存代码内容特征之间的相似度,检测各所述已上链存储代码块与所述真实代码块之间是否存在相似盗用;若不存在,则执行所述将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块进行上链存储的步骤。
在其中一个实施例中,所述预设特征提取模型的训练过程包括:
获取各训练代码特征信息、各所述训练代码特征信息对应的简要训练代码信息以及各所述训练代码特征信息对应的样本标签;基于所述预设特征提取模型,分别将各所述训练代码特征信息转化为对应的第一训练嵌入特征,以及分别将各所述简要训练代码信息转化为对应的第二训练嵌入特征;基于各所述样本标签、各所述第一训练嵌入特征以及各所述第二训练嵌入特征,确定每一所述第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征;根据各所述第一训练嵌入特征、各所述第一训练嵌入特征对应的正样本嵌入特征以及对应的负样本嵌入特征,构建所述预设特征提取模型对应的对比学习损失;根据所述对比学习损失,对所述预设特征提取模型进行训练优化。
在其中一个实施例中,述基于各所述样本标签、各所述第一训练嵌入特征以及各所述第二训练嵌入特征,确定每一所述第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征,包括:
将各所述第一训练嵌入特征中具备相同样本标签的嵌入特征作为第一目标训练嵌入特征,以及将各所述第一训练嵌入特征中不具备相同样本标签的嵌入特征作为第二目标训练嵌入特征;根据各所述训练代码特征信息与各所述简要代码信息之间的一一对应关系,在各所述第二训练嵌入特征确定所述第一目标训练嵌入特征对应的第三目标训练嵌入特征,以及确定所述第二目标训练嵌入特征对应的第四目标训练嵌入特征;将所述第一目标训练嵌入特征和所述第三目标训练嵌入特征作为所述正样本嵌入特征,以及将所述第二目标训练嵌入特征和所述第四目标训练嵌入特征作为所述负样本嵌入特征。
第二方面,本申请还提供了一种代码块分享装置。所述装置包括:
嵌入特征模块,用于获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征。
特征选取模块,用于根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征。
简要代码获取模块,用于向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息。
确定模块,用于确定所述客户端在各所述简要代码信息中选取的目标简要代码信息。
分享模块,用于通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征;根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征;向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息;确定所述客户端在各所述简要代码信息中选取的目标简要代码信息;通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征;根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征;向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息;确定所述客户端在各所述简要代码信息中选取的目标简要代码信息;通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征;根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征;向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息;确定所述客户端在各所述简要代码信息中选取的目标简要代码信息;通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
上述代码块分享方法、装置、计算机设备、存储介质和计算机程序产品,通过代码特征信息转化为对应的第一嵌入特征;根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征,向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息,这样可以从区块链中高效率地初步定位出客户端存在需求意向的简要代码信息;进而确定所述客户端在各所述简要代码信息中选取的目标简要代码信息,这样可以根据客户端对于简要代码信息的反馈信息,快速定位出用户存在最终需求意向的目标简要代码信息,从而通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端,这样可以避免代码分享过程中代码需求方和代码提供方之间的复杂交涉过程,可以快速且准确地筛选出代码需求方存在需求意向的真实代码块,且真实代码块一直是存储在区块链中,具备去中心化以及公开透明等特点,可以保证代码分享过程的安全性,因此本申请实现了兼顾提升代码分享的效率以及安全性。
附图说明
图1为一个实施例中代码块分享方法的应用环境图;
图2为一个实施例中代码块分享方法的流程示意图;
图3为一个实施例中选取目标简要代码信息的流程示意图;
图4为一个实施例中对客户端上传的真实代码块进行相似盗用检测的流程示意图;
图5为另一个实施例中训练预设特征提取模块的流程示意图;
图6为一个实施例中代码块分享装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的代码块分享方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。
服务器104获取终端102上传的需求代码特征信息,并基于预设特征提取模块,将需求代码特征信息转化为对应的第一嵌入特征;服务器104根据第一嵌入特征和各预存嵌入特征之间的特征相似度,在各预存嵌入特征中选取各目标预存嵌入特征;服务器104向区块链申请获取各目标预存嵌入特征对应的简要代码信息;服务器104确定终端102在各简要代码信息中选取的目标简要代码信息;服务器104通过区块链将目标简要代码信息对应的真实代码块分享至终端102。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种代码块分享方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
步骤202,获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将需求代码特征信息转化为对应的第一嵌入特征。
其中,客户端可以为代码需求方,服务器104可以为代码分享平台,客户端可以通过在代码分享平台上传需求代码特征信息来获取所需求的真实代码块。
作为一种示例,需求代码特征信息可以为表征客户端需求的代码块特征的信息,例如可以为代码块的代码量、代码主题、代码语言类型、代码功能以及代码关键部分片段等信息。
作为一种示例,预设特征提取模型为训练好的嵌入特征提取模型,用于将高维稀疏特征转化为低维稠密特征。
作为一种示例,步骤202包括:获取客户端上传的需求代码特征信息;通过对需求代码特征信息进行独热编码,将需求代码特征信息转化为高维稀疏特征,得到需求代码编码特征;基于预设特征提取模型对需求代码编码特征进行特征提取,将需求代码编码特征映射为对应的第一嵌入特征,其中,第一嵌入特征为低维稠密特征。
步骤204,根据第一嵌入特征和各预存嵌入特征之间的特征相似度,在各预存嵌入特征中选取各目标预存嵌入特征。
其中,第一嵌入特征和预存嵌入特征均可以为嵌入特征向量,特征相似度可以使用嵌入特征向量之间的距离进行表示,嵌入特征向量之间的距离越远,则特征相似度越低,嵌入特征向量之间的距离越近,则特征相似度越高。
作为一种示例,步骤204包括:分别计算第一嵌入特征与各预存嵌入特征之间的特征相似度;在各预存嵌入特征中选取特征相似度大于第一预设相似度阈值的嵌入特征作为目标预存嵌入特征。
作为一种示例,步骤204包括:分别计算第一嵌入特征与各预存嵌入特征之间的特征相似度;按照特征相似度从大到小的顺序,对各预存嵌入特征进行排序,得到预存嵌入特征列表;在预存嵌入特征列表中选取第一预设数量排序前列的嵌入特征作为目标预存嵌入特征。例如假设预存嵌入特征列表中存在100的嵌入特征,则可以选取排序前10的嵌入特征作为目标预存嵌入特征。
步骤206,向区块链申请获取各目标预存嵌入特征对应的简要代码信息。
其中,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护以及公开透明等特点。简要代码信息可以为真实代码块的简要代码片段信息,用于在保证不暴露真实代码块的情况下展示真实代码块的信息,例如该简要代码信息可以为真实代码块的代码片段本身,也可以为真实代码块的代码片段本身、代码主题、代码功能以及代码语言类型等信息的聚合体。
作为一种示例,步骤206包括:以各目标预存嵌入特征为索引,分别查询各目标预存嵌入特征对应的唯一身份标识;根据各唯一身份标识,向区块链申请获取各简要代码信息。
作为一种示例,唯一身份标识可以为NFT令牌。
步骤208,确定客户端在各简要代码信息中选取的目标简要代码信息。
作为一种示例,步骤208包括:将各简要代码信息发送至客户端,并接收客户端针对于各简要代码信息的反馈信息;根据客户端针对于各简要代码信息的反馈信息,在各简要代码信息中确定目标简要代码信息。
作为一种示例,可以在客户端的显示界面上展示各简要代码信息。
步骤210,通过区块链将目标简要代码信息对应的真实代码块分享至客户端。
作为一种示例,步骤210包括:根据目标简要代码信息对应的唯一身份标识,向区块链申请将目标简要代码信息对应的真实代码块交易给客户端,以实现真实代码块的分享。
作为一种示例,在获取客户端上传的需求代码特征信息之前,方法还包括:
接收分享方上传的真实代码块以及真实代码块对应的真实代码特征信息;基于预设特征提取模型,将真实代码特征信息转化为对应的真实代码嵌入特征;将真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将真实代码块以及真实代码块对应的简要代码信息进行上链存储。
其中,分享方可以为分享真实代码块的分享客户端,真实代码特征信息可以为表征真实代码块的代码特征的信息,例如可以为真实代码块的代码量、代码主题、代码语言类型、代码功能以及代码关键部分片段等信息。
作为一种示例,接收分享方上传的真实代码块以及真实代码块对应的真实代码特征信息;通过对真实代码特征信息进行独热编码,将真实代码特征信息转化为高维稀疏特征,得到真实代码编码特征;基于预设特征提取模型对真实代码编码特征进行特征提取,将真实代码编码特征映射为对应的真实代码嵌入特征,其中,真实代码嵌入特征为低维稠密特征;将真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将真实代码块以及真实代码块对应的简要代码信息进行上传至区块链进行存储。
上述代码块分享方法通过代码特征信息转化为对应的第一嵌入特征;根据第一嵌入特征和各预存嵌入特征之间的特征相似度,在各预存嵌入特征中选取各目标预存嵌入特征,向区块链申请获取各目标预存嵌入特征对应的简要代码信息,这样可以从区块链中高效率地初步定位出客户端存在需求意向的简要代码信息;进而确定客户端在各简要代码信息中选取的目标简要代码信息,这样可以根据客户端对于简要代码信息的反馈信息,快速定位出用户存在最终需求意向的目标简要代码信息,从而通过区块链将目标简要代码信息对应的真实代码块分享至客户端,这样可以避免代码分享过程中代码需求方和代码提供方之间的复杂交涉过程,可以快速且准确地筛选出代码需求方存在需求意向的真实代码块,且真实代码块一直是存储在区块链中,具备去中心化以及公开透明等特点,可以保证代码分享过程的安全性,因此实现了兼顾提升代码分享的效率以及安全性。
在一个实施例中,如图3所示,确定客户端在各简要代码信息中选取的目标简要代码信息,包括:
步骤302,基于预设特征提取模型,将各简要代码信息转化为对应的第二嵌入特征。
作为一种示例,步骤302包括:通过分别对各简要代码信息进行独热编码,分别将各简要代码信息转化为高维稀疏特征,得到各简要代码编码特征;基于预设特征提取模型分别对各简要代码编码特征进行特征提取,分别将各简要代码编码特征转化为低维稠密特征,得到各第二嵌入特征。
步骤304,根据第一嵌入特征和各第二嵌入特征之间的特征相似度,在各简要代码信息中确定各预选简要代码信息。
作为一种示例,步骤304包括:分别计算第一嵌入特征与各第二嵌入特征之间的特征相似度;在各第二嵌入特征中选取特征相似度大于第二预设相似度阈值的嵌入特征作为目标第二嵌入特征;将目标第二嵌入特征对应的简要代码信息作为预选简要代码信息。
作为一种示例,步骤304包括:分别计算第一嵌入特征与各第二嵌入特征之间的特征相似度;按照特征相似度从大到小的顺序,对各第二嵌入特征进行排序,得到第二嵌入特征列表;在第二嵌入特征列表中选取第二预设数量排序前列的嵌入特征作为目标第二嵌入特征,其中,第二预设数量小于第一预设数量;将目标第二嵌入特征对应的简要代码信息作为预选简要代码信息。
步骤306包括:将各预选简要代码信息反馈至客户端,根据客户端针对于各预选简要代码信息的反馈信息,在各预选简要代码信息中确定目标简要代码信息。
作为一种示例,可以在客户端的显示界面上展示各预选简要代码信息。
本实施例中,通过预设特征提取模型,将各简要代码信息转化为对应的第二嵌入特征;根据第一嵌入特征和各第二嵌入特征之间的特征相似度,在各简要代码信息中确定各预选简要代码信息,这样可以在将简要代码信息发送给客户端之前,进一步筛选掉一些客户端需求意向不强的简要代码信息;将各预选简要代码信息反馈至客户端,可以保证发送给客户端的预选简要代码信息的数量不会过多,使得客户端可以更快地对各预选简要代码信息进行反馈,进而根据客户端针对于各预选简要代码信息的反馈信息,在各预选简要代码信息中确定目标简要代码信息,可以降低确定目标简要代码信息需要花费的时间,为提升代码分享的效率奠定基础。
在一个实施例中,如图4所示,在将真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将真实代码块以及真实代码块对应的简要代码信息进行上链存储之前,包括:
步骤402,获取真实代码块的全局特征信息以及细节特征信息。
其中,全局特征信息为表征真实代码块的全局特征的信息,例如可以为代码功能、代码主题、代码量以及代码语言类型等信息;细节特征信息为表征真实代码块的细节特征的信息,例如可以为真实代码块所有变量的类型、取值以及位置等信息,也可以为真实代码块所有调用的函数的类型、调用次数以及位置等信息。
步骤404,对全局特征信息和细节特征信息进行特征提取,得到代码内容特征。
作为一种示例,步骤404包括:通过对全局特征信息和细节特征信息进行独热编码,将全局特征信息和细节特征信息转化为高维稀疏特征,得到代码内容编码特征;基于预设特征提取模型对代码内容编码特征进行特征提取,将代码内容编码特征转化低维稠密特征,得到代码内容特征。
步骤406,根据代码内容特征与各已上链存储代码块的预存代码内容特征之间的相似度,检测各已上链存储代码块与真实代码块之间是否存在相似盗用。
步骤408,若不存在,则执行将真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将真实代码块进行上链存储的步骤。
作为一种示例,步骤406至步骤408包括:获取各已上链存储代码块的预存代码内容特征;分别计算代码内容特征和各预存代码内容特征之间的特征相似度;若代码内容特征和预存代码内容特征之间的特征相似度大于第三预设相似度阈值,则确定已上链存储代码块与真实代码块之间存在相似盗用;若代码内容特征和预存代码内容特征之间的特征相似度不大于第三预设相似度阈值,则确定已上链存储代码块与真实代码块之间不存在相似盗用。
本实施例中,通过获取真实代码块的全局特征信息以及细节特征信息;对全局特征信息和细节特征信息进行特征提取,得到代码内容特征;根据代码内容特征与各已上链存储代码块的预存代码内容特征之间的相似度,检测各已上链存储代码块与真实代码块之间是否存在相似盗用;从而可以实现利用真实代码块的全局特征和细节特征,检测真实代码块是否存在盗用其他代码块的情况,若不存在,则执行将真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将真实代码块进行上链存储的步骤,实现了对真实代码块的版权保护。
在一个实施例中,如图5所示,预设特征提取模型的训练过程包括:
步骤502,获取各训练代码特征信息、各训练代码特征信息对应的简要训练代码信息以及各训练代码特征信息对应的样本标签。
其中,样本标签用于标识代码块的类别,同一类别地代码块对应相同类型的代码需求,不同的代码需求对应不同的代码块类别。
步骤504,基于预设特征提取模型,分别将各训练代码特征信息转化为对应的第一训练嵌入特征,以及分别将各简要训练代码信息转化为对应的第二训练嵌入特征。
作为一种示例,步骤504包括:通过分别对各训练代码特征信息进行独热编码,分别将各训练代码特征信息转化为高维稀疏特征,得到各训练代码编码特征;通过分别对各简要训练代码信息进行独热编码,分别将各简要训练代码信息转化为高维稀疏特征,得到各简要训练代码编码特征;基于预设特征提取模型,分别将各训练代码编码特征转化为低维稠密特征,得到各第一训练嵌入特征;基于预设特征提取模型,分别将各简要训练代码编码特征转化为低维稠密特征,得到各第二训练嵌入特征。
步骤506,基于各样本标签、各第一训练嵌入特征以及各第二训练嵌入特征,确定每一第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征。
作为一种示例,步骤506包括:将与第一训练嵌入特征具备相同样本标签的第一训练嵌入特征,以及具备相同样本标签的第一训练嵌入特征对应的第二训练嵌入特征共同作为正样本嵌入特征;将与第一训练嵌入特征不具备相同样本标签的第一训练嵌入特征,以及不具备相同样本标签的第一训练嵌入特征对应的第二训练嵌入特征共同作为负样本嵌入特征。
作为一种示例,基于各样本标签、各第一训练嵌入特征以及各第二训练嵌入特征,确定每一第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征,包括:
将各第一训练嵌入特征中具备相同样本标签的嵌入特征作为第一目标训练嵌入特征,以及将各第一训练嵌入特征中不具备相同样本标签的嵌入特征作为第二目标训练嵌入特征;根据各训练代码特征信息与各简要代码信息之间的一一对应关系,在各第二训练嵌入特征确定第一目标训练嵌入特征对应的第三目标训练嵌入特征,以及确定第二目标训练嵌入特征对应的第四目标训练嵌入特征;将第一目标训练嵌入特征和第三目标训练嵌入特征作为正样本嵌入特征,以及将第二目标训练嵌入特征和第四目标训练嵌入特征作为负样本嵌入特征。这样可以实现从真实代码特征信息对应的嵌入特征和简要代码特征信息对应的嵌入特征选取每一第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征的目的,从而为实现利用训练代码特征信息和简要训练代码信息进行对比学习训练预设特征提取模型奠定基础。
步骤508,根据各第一训练嵌入特征、各第一训练嵌入特征对应的正样本嵌入特征以及对应的负样本嵌入特征,构建预设特征提取模型对应的对比学习损失。
步骤510,根据对比学习损失,对预设特征提取模型进行训练优化。
作为一种示例,步骤508至步骤510包括:根据第一训练嵌入特征和第一训练嵌入特征对应的正样本嵌入特征之间的第一相似度,以及第一训练嵌入特征和第一训练嵌入特征对应的至少一个负样本嵌入特征之间的第二相似度,计算预设特征提取模型对应的对比学习损失;根据对比学习损失计算的梯度信息,更新预设特征提取模型;若更新后的预设特征提取模型满足预设迭代训练结束条件,则确定预设特征提取模型训练完毕,若更新后的预设特征提取模型不满足预设迭代训练结束条件,则返回执行步骤502。其中,预设迭代训练结束条件可以为迭代次数达到预设次数或者对比学习损失收敛等。
作为一种示例,在计算预设特征提取模型对应的对比学习损失之后,包括:获取第一训练嵌入特征对应的分类结果和对应的样本标签,计算分类损失;将分类损失和对比学习损失进行聚合,得到模型总损失,其中,聚合的方式可以为求和,也可以为加权求平均等;根据模型总损失计算的梯度信息,更新预设特征提取模型;若更新后的预设特征提取模型满足预设迭代训练结束条件,则确定预设特征提取模型训练完毕,若更新后的预设特征提取模型不满足预设迭代训练结束条件,则返回执行步骤502。其中,预设迭代训练结束条件可以为迭代次数达到预设次数或者对比学习损失收敛等。
作为一种示例,根据第一训练嵌入特征和第一训练嵌入特征对应的正样本嵌入特征之间的第一相似度,以及第一训练嵌入特征和第一训练嵌入特征对应的至少一个负样本嵌入特征之间的第二相似度,计算预设特征提取模型对应的对比学习损失的具体过程如下:
其中,f(x)为第一训练嵌入特征,f(x+)为正样本嵌入特征,f(x-)为负样本嵌入特征,N为负样本嵌入特征的数量,X表示各训练代码特征信息以及各简要训练代码信息组成的训练样本集合。
本实施例中利用对比学习损失训练预设特征提取模型,使得预设特征提取模型具备拉近第一训练嵌入特征和正样本嵌入特征之间的距离,以及拉远第一训练嵌入特征和负样本嵌入特征之间的距离的能力,从而在利用预设特征提取模型进行特征提取时,预设特征提取模型针对于相同代码需求的代码特征信息以及简要代码信息,会输出相似度极高的嵌入特征,针对于不同代码需求的代码特征信息以及简要代码信息,会输出相似度极低的嵌入特征,因此可以提升预设特征提取模型的准确度,从而在代码分享时,可以保证向客户端推送的简要代码信息符合客户端的代码需求,提升代码分享的准确度。
在一个实施例中,获取客户端上传的需求代码特征信息;通过对需求代码特征信息进行独热编码,将需求代码特征信息转化为高维稀疏特征,得到需求代码编码特征;基于预设特征提取模型对需求代码编码特征进行特征提取,将需求代码编码特征映射为对应的第一嵌入特征,其中,第一嵌入特征为低维稠密特征;分别计算第一嵌入特征与各预存嵌入特征之间的特征相似度;在各预存嵌入特征中选取特征相似度大于第一预设相似度阈值的嵌入特征作为目标预存嵌入特征;向区块链申请获取各目标预存嵌入特征对应的简要代码信息,这样可以实现利用作为低维稠密特征维度低的特点,通过计算第一嵌入特征与各预存嵌入特征之间的特征相似度,快速检索到符合客户端代码需求的各真实代码块对应的简要代码信息。
进一步的,在检索到各简要代码信息之后,通过分别对各简要代码信息进行独热编码,分别将各简要代码信息转化为高维稀疏特征,得到各简要代码编码特征;基于预设特征提取模型分别对各简要代码编码特征进行特征提取,分别将各简要代码编码特征转化为低维稠密特征,得到各第二嵌入特征;分别计算第一嵌入特征与各第二嵌入特征之间的特征相似度;在各第二嵌入特征中选取特征相似度大于第二预设相似度阈值的嵌入特征作为目标第二嵌入特征;将目标第二嵌入特征对应的简要代码信息作为预选简要代码信息;分别计算第一嵌入特征与各第二嵌入特征之间的特征相似度;按照特征相似度从大到小的顺序,对各第二嵌入特征进行排序,得到第二嵌入特征列表;在第二嵌入特征列表中选取第二预设数量排序前列的嵌入特征作为目标第二嵌入特征;这样可以实现进一步筛选掉一些客户端需求意向不强的简要代码信息。
进而将各预选简要代码信息反馈至客户端,根据客户端针对于各预选简要代码信息的反馈信息,在各预选简要代码信息中确定目标简要代码信息,可以保证发送给客户端的预选简要代码信息的数量不会过多,使得客户端可以更快地对各预选简要代码信息进行反馈,进而根据客户端针对于各预选简要代码信息的反馈信息,在各预选简要代码信息中确定目标简要代码信息,可以降低确定目标简要代码信息需要花费的时间,为提升代码分享的效率奠定基础。
进一步的,在根据客户端的反馈信息确定目标简要代码信息之后,即可通过区块链将目标简要代码信息对应的真实代码块分享至客户端,这样可以避免代码分享过程中代码需求方和代码提供方之间的复杂交涉过程,可以快速且准确地筛选出代码需求方存在需求意向的真实代码块,且真实代码块一直是存储在区块链中,具备去中心化以及公开透明等特点,可以保证代码分享过程的安全性,因此实现了兼顾提升代码分享的效率以及安全性。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的代码块分享方法的代码块分享装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个代码块分享装置实施例中的具体限定可以参见上文中对于代码块分享方法的限定,在此不再赘述。
在一个实施例中,如图6所示,提供了一种代码块分享装置,包括:嵌入特征模块602、特征选取模块604、简要代码获取模块606、确定模块608和分享模块610,其中:
嵌入特征模块602,用于获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征。
特征选取模块604,用于根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征。
简要代码获取模块606,用于向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息。
确定模块608,用于确定所述客户端在各所述简要代码信息中选取的目标简要代码信息。
分享模块610,用于通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
在一个实施例中,所述确定模块608还用于:
基于所述预设特征提取模型,将各所述简要代码信息转化为对应的第二嵌入特征;根据所述第一嵌入特征和各所述第二嵌入特征之间的特征相似度,在各所述简要代码信息中确定各预选简要代码信息;将各所述预选简要代码信息反馈至所述客户端,根据所述客户端针对于各所述预选简要代码信息的反馈信息,在各所述预选简要代码信息中确定所述目标简要代码信息。
在一个实施例中,所述代码块分享装置还包括:
信息接收模块,用于接收分享方上传的真实代码块以及所述真实代码块对应的真实代码特征信息。
真实代码嵌入特征获取模块,用于基于预设特征提取模型,将所述真实代码特征信息转化为对应的真实代码嵌入特征。
存储模块,用于将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块以及所述真实代码块对应的简要代码信息进行上链存储。
在一个实施例中,所述代码块分享装置还包括:
全局与细节特征获取模块,用于获取所述真实代码块的全局特征信息以及细节特征信息。
全局与细节特征提取模块,用于对所述全局特征信息和所述细节特征信息进行特征提取,得到代码内容特征。
相似盗用检测模块,用于根据所述代码内容特征与各已上链存储代码块的预存代码内容特征之间的相似度,检测各所述已上链存储代码块与所述真实代码块之间是否存在相似盗用。
执行模块,用于若不存在,则执行所述将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块进行上链存储的步骤。
在一个实施例中,所述代码块分享装置还包括:
训练样本以及标签获取模块,用于获取各训练代码特征信息、各所述训练代码特征信息对应的简要训练代码信息以及各所述训练代码特征信息对应的样本标签。
训练嵌入特征获取模块,用于基于所述预设特征提取模型,分别将各所述训练代码特征信息转化为对应的第一训练嵌入特征,以及分别将各所述简要训练代码信息转化为对应的第二训练嵌入特征。
正负样本嵌入特征确定模块,用于基于各所述样本标签、各所述第一训练嵌入特征以及各所述第二训练嵌入特征,确定每一所述第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征。
对比学习损失构建模块,用于根据各所述第一训练嵌入特征、各所述第一训练嵌入特征对应的正样本嵌入特征以及对应的负样本嵌入特征,构建所述预设特征提取模型对应的对比学习损失。
模型训练优化模块,用于根据所述对比学习损失,对所述预设特征提取模型进行训练优化。
在一个实施例中,所述正负样本嵌入特征确定模块还用于:
将各所述第一训练嵌入特征中具备相同样本标签的嵌入特征作为第一目标训练嵌入特征,以及将各所述第一训练嵌入特征中不具备相同样本标签的嵌入特征作为第二目标训练嵌入特征;根据各所述训练代码特征信息与各所述简要代码信息之间的一一对应关系,在各所述第二训练嵌入特征确定所述第一目标训练嵌入特征对应的第三目标训练嵌入特征,以及确定所述第二目标训练嵌入特征对应的第四目标训练嵌入特征;将所述第一目标训练嵌入特征和所述第三目标训练嵌入特征作为所述正样本嵌入特征,以及将所述第二目标训练嵌入特征和所述第四目标训练嵌入特征作为所述负样本嵌入特征。
上述代码块分享装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储代码块分享数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码块分享方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征;根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征;向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息;确定所述客户端在各所述简要代码信息中选取的目标简要代码信息;通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
基于所述预设特征提取模型,将各所述简要代码信息转化为对应的第二嵌入特征;根据所述第一嵌入特征和各所述第二嵌入特征之间的特征相似度,在各所述简要代码信息中确定各预选简要代码信息;将各所述预选简要代码信息反馈至所述客户端,根据所述客户端针对于各所述预选简要代码信息的反馈信息,在各所述预选简要代码信息中确定所述目标简要代码信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
接收分享方上传的真实代码块以及所述真实代码块对应的真实代码特征信息;基于预设特征提取模型,将所述真实代码特征信息转化为对应的真实代码嵌入特征;将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块以及所述真实代码块对应的简要代码信息进行上链存储。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取所述真实代码块的全局特征信息以及细节特征信息;对所述全局特征信息和所述细节特征信息进行特征提取,得到代码内容特征;根据所述代码内容特征与各已上链存储代码块的预存代码内容特征之间的相似度,检测各所述已上链存储代码块与所述真实代码块之间是否存在相似盗用;若不存在,则执行所述将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块进行上链存储的步骤。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取各训练代码特征信息、各所述训练代码特征信息对应的简要训练代码信息以及各所述训练代码特征信息对应的样本标签;基于所述预设特征提取模型,分别将各所述训练代码特征信息转化为对应的第一训练嵌入特征,以及分别将各所述简要训练代码信息转化为对应的第二训练嵌入特征;基于各所述样本标签、各所述第一训练嵌入特征以及各所述第二训练嵌入特征,确定每一所述第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征;根据各所述第一训练嵌入特征、各所述第一训练嵌入特征对应的正样本嵌入特征以及对应的负样本嵌入特征,构建所述预设特征提取模型对应的对比学习损失;根据所述对比学习损失,对所述预设特征提取模型进行训练优化。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将各所述第一训练嵌入特征中具备相同样本标签的嵌入特征作为第一目标训练嵌入特征,以及将各所述第一训练嵌入特征中不具备相同样本标签的嵌入特征作为第二目标训练嵌入特征;根据各所述训练代码特征信息与各所述简要代码信息之间的一一对应关系,在各所述第二训练嵌入特征确定所述第一目标训练嵌入特征对应的第三目标训练嵌入特征,以及确定所述第二目标训练嵌入特征对应的第四目标训练嵌入特征;将所述第一目标训练嵌入特征和所述第三目标训练嵌入特征作为所述正样本嵌入特征,以及将所述第二目标训练嵌入特征和所述第四目标训练嵌入特征作为所述负样本嵌入特征。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征;根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征;向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息;确定所述客户端在各所述简要代码信息中选取的目标简要代码信息;通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
基于所述预设特征提取模型,将各所述简要代码信息转化为对应的第二嵌入特征;根据所述第一嵌入特征和各所述第二嵌入特征之间的特征相似度,在各所述简要代码信息中确定各预选简要代码信息;将各所述预选简要代码信息反馈至所述客户端,根据所述客户端针对于各所述预选简要代码信息的反馈信息,在各所述预选简要代码信息中确定所述目标简要代码信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
接收分享方上传的真实代码块以及所述真实代码块对应的真实代码特征信息;基于预设特征提取模型,将所述真实代码特征信息转化为对应的真实代码嵌入特征;将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块以及所述真实代码块对应的简要代码信息进行上链存储。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取所述真实代码块的全局特征信息以及细节特征信息;对所述全局特征信息和所述细节特征信息进行特征提取,得到代码内容特征;根据所述代码内容特征与各已上链存储代码块的预存代码内容特征之间的相似度,检测各所述已上链存储代码块与所述真实代码块之间是否存在相似盗用;若不存在,则执行所述将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块进行上链存储的步骤。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取各训练代码特征信息、各所述训练代码特征信息对应的简要训练代码信息以及各所述训练代码特征信息对应的样本标签;基于所述预设特征提取模型,分别将各所述训练代码特征信息转化为对应的第一训练嵌入特征,以及分别将各所述简要训练代码信息转化为对应的第二训练嵌入特征;基于各所述样本标签、各所述第一训练嵌入特征以及各所述第二训练嵌入特征,确定每一所述第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征;根据各所述第一训练嵌入特征、各所述第一训练嵌入特征对应的正样本嵌入特征以及对应的负样本嵌入特征,构建所述预设特征提取模型对应的对比学习损失;根据所述对比学习损失,对所述预设特征提取模型进行训练优化。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将各所述第一训练嵌入特征中具备相同样本标签的嵌入特征作为第一目标训练嵌入特征,以及将各所述第一训练嵌入特征中不具备相同样本标签的嵌入特征作为第二目标训练嵌入特征;根据各所述训练代码特征信息与各所述简要代码信息之间的一一对应关系,在各所述第二训练嵌入特征确定所述第一目标训练嵌入特征对应的第三目标训练嵌入特征,以及确定所述第二目标训练嵌入特征对应的第四目标训练嵌入特征;将所述第一目标训练嵌入特征和所述第三目标训练嵌入特征作为所述正样本嵌入特征,以及将所述第二目标训练嵌入特征和所述第四目标训练嵌入特征作为所述负样本嵌入特征。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征;根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征;向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息;确定所述客户端在各所述简要代码信息中选取的目标简要代码信息;通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
基于所述预设特征提取模型,将各所述简要代码信息转化为对应的第二嵌入特征;根据所述第一嵌入特征和各所述第二嵌入特征之间的特征相似度,在各所述简要代码信息中确定各预选简要代码信息;将各所述预选简要代码信息反馈至所述客户端,根据所述客户端针对于各所述预选简要代码信息的反馈信息,在各所述预选简要代码信息中确定所述目标简要代码信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
接收分享方上传的真实代码块以及所述真实代码块对应的真实代码特征信息;基于预设特征提取模型,将所述真实代码特征信息转化为对应的真实代码嵌入特征;将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块以及所述真实代码块对应的简要代码信息进行上链存储。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取所述真实代码块的全局特征信息以及细节特征信息;对所述全局特征信息和所述细节特征信息进行特征提取,得到代码内容特征;根据所述代码内容特征与各已上链存储代码块的预存代码内容特征之间的相似度,检测各所述已上链存储代码块与所述真实代码块之间是否存在相似盗用;若不存在,则执行所述将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块进行上链存储的步骤。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取各训练代码特征信息、各所述训练代码特征信息对应的简要训练代码信息以及各所述训练代码特征信息对应的样本标签;基于所述预设特征提取模型,分别将各所述训练代码特征信息转化为对应的第一训练嵌入特征,以及分别将各所述简要训练代码信息转化为对应的第二训练嵌入特征;基于各所述样本标签、各所述第一训练嵌入特征以及各所述第二训练嵌入特征,确定每一所述第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征;根据各所述第一训练嵌入特征、各所述第一训练嵌入特征对应的正样本嵌入特征以及对应的负样本嵌入特征,构建所述预设特征提取模型对应的对比学习损失;根据所述对比学习损失,对所述预设特征提取模型进行训练优化。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将各所述第一训练嵌入特征中具备相同样本标签的嵌入特征作为第一目标训练嵌入特征,以及将各所述第一训练嵌入特征中不具备相同样本标签的嵌入特征作为第二目标训练嵌入特征;根据各所述训练代码特征信息与各所述简要代码信息之间的一一对应关系,在各所述第二训练嵌入特征确定所述第一目标训练嵌入特征对应的第三目标训练嵌入特征,以及确定所述第二目标训练嵌入特征对应的第四目标训练嵌入特征;将所述第一目标训练嵌入特征和所述第三目标训练嵌入特征作为所述正样本嵌入特征,以及将所述第二目标训练嵌入特征和所述第四目标训练嵌入特征作为所述负样本嵌入特征。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种代码块分享方法,其特征在于,所述方法包括:
获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征;
根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征;
向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息;
确定所述客户端在各所述简要代码信息中选取的目标简要代码信息;
通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述确定所述客户端在各所述简要代码信息中选取的目标简要代码信息,包括:
基于所述预设特征提取模型,将各所述简要代码信息转化为对应的第二嵌入特征;
根据所述第一嵌入特征和各所述第二嵌入特征之间的特征相似度,在各所述简要代码信息中确定各预选简要代码信息;
将各所述预选简要代码信息反馈至所述客户端,根据所述客户端针对于各所述预选简要代码信息的反馈信息,在各所述预选简要代码信息中确定所述目标简要代码信息。
3.根据权利要求1所述的方法,其特征在于,在所述获取客户端上传的需求代码特征信息之前,所述方法还包括:
接收分享方上传的真实代码块以及所述真实代码块对应的真实代码特征信息;
基于预设特征提取模型,将所述真实代码特征信息转化为对应的真实代码嵌入特征;
将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块以及所述真实代码块对应的简要代码信息进行上链存储。
4.根据权利要求3所述的方法,其特征在于,在所述将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块以及所述真实代码块对应的简要代码信息进行上链存储之前,包括:
获取所述真实代码块的全局特征信息以及细节特征信息;
对所述全局特征信息和所述细节特征信息进行特征提取,得到代码内容特征;
根据所述代码内容特征与各已上链存储代码块的预存代码内容特征之间的相似度,检测各所述已上链存储代码块与所述真实代码块之间是否存在相似盗用;
若不存在,则执行所述将所述真实代码嵌入特征作为预存嵌入特征进行本地存储,以及将所述真实代码块进行上链存储的步骤。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述预设特征提取模型的训练过程包括:
获取各训练代码特征信息、各所述训练代码特征信息对应的简要训练代码信息以及各所述训练代码特征信息对应的样本标签;
基于所述预设特征提取模型,分别将各所述训练代码特征信息转化为对应的第一训练嵌入特征,以及分别将各所述简要训练代码信息转化为对应的第二训练嵌入特征;
基于各所述样本标签、各所述第一训练嵌入特征以及各所述第二训练嵌入特征,确定每一所述第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征;
根据各所述第一训练嵌入特征、各所述第一训练嵌入特征对应的正样本嵌入特征以及对应的负样本嵌入特征,构建所述预设特征提取模型对应的对比学习损失;
根据所述对比学习损失,对所述预设特征提取模型进行训练优化。
6.根据权利要求5所述的方法,其特征在于,所述基于各所述样本标签、各所述第一训练嵌入特征以及各所述第二训练嵌入特征,确定每一所述第一训练嵌入特征对应的正样本嵌入特征和负样本嵌入特征,包括:
将各所述第一训练嵌入特征中具备相同样本标签的嵌入特征作为第一目标训练嵌入特征,以及将各所述第一训练嵌入特征中不具备相同样本标签的嵌入特征作为第二目标训练嵌入特征;
根据各所述训练代码特征信息与各所述简要代码信息之间的一一对应关系,在各所述第二训练嵌入特征确定所述第一目标训练嵌入特征对应的第三目标训练嵌入特征,以及确定所述第二目标训练嵌入特征对应的第四目标训练嵌入特征;
将所述第一目标训练嵌入特征和所述第三目标训练嵌入特征作为所述正样本嵌入特征,以及将所述第二目标训练嵌入特征和所述第四目标训练嵌入特征作为所述负样本嵌入特征。
7.一种代码块分享装置,其特征在于,所述装置包括:
嵌入特征模块,用于获取客户端上传的需求代码特征信息,并基于预设特征提取模块,将所述需求代码特征信息转化为对应的第一嵌入特征;
特征选取模块,用于根据所述第一嵌入特征和各预存嵌入特征之间的特征相似度,在各所述预存嵌入特征中选取各目标预存嵌入特征;
简要代码获取模块,用于向区块链申请获取各所述目标预存嵌入特征对应的简要代码信息;
确定模块,用于确定所述客户端在各所述简要代码信息中选取的目标简要代码信息;
分享模块,用于通过所述区块链将所述目标简要代码信息对应的真实代码块分享至所述客户端。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310491489.6A CN116701531A (zh) | 2023-05-04 | 2023-05-04 | 代码块分享方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310491489.6A CN116701531A (zh) | 2023-05-04 | 2023-05-04 | 代码块分享方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116701531A true CN116701531A (zh) | 2023-09-05 |
Family
ID=87822945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310491489.6A Pending CN116701531A (zh) | 2023-05-04 | 2023-05-04 | 代码块分享方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116701531A (zh) |
-
2023
- 2023-05-04 CN CN202310491489.6A patent/CN116701531A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111428457B (zh) | 数据表的自动格式化 | |
CN112418292B (zh) | 一种图像质量评价的方法、装置、计算机设备及存储介质 | |
CN110880006B (zh) | 用户分类方法、装置、计算机设备和存储介质 | |
CN111581926A (zh) | 文案生成方法、装置、设备和计算机可读存储介质 | |
CN115795000A (zh) | 基于联合相似度算法对比的围标识别方法和装置 | |
Zhang et al. | Deep unsupervised self-evolutionary hashing for image retrieval | |
CN114297509A (zh) | 用户兴趣向量生成方法、产品推荐方法、装置、设备、介质 | |
CN116629435A (zh) | 风险预测方法、装置、计算机设备和存储介质 | |
CN110162689B (zh) | 信息推送方法、装置、计算机设备和存储介质 | |
CN117131222A (zh) | 基于开放世界大模型的半自动化标注方法和装置 | |
CN116703598A (zh) | 交易行为检测方法、装置、计算机设备和存储介质 | |
CN116701531A (zh) | 代码块分享方法、装置、计算机设备和存储介质 | |
CN111091198A (zh) | 一种数据处理方法及装置 | |
CN116702024B (zh) | 流水数据类型识别方法、装置、计算机设备和存储介质 | |
CN117612181A (zh) | 图像识别方法、装置、计算机设备和存储介质 | |
CN116932761A (zh) | 文本数据标注模型的构建方法、装置和计算机设备 | |
CN116910604A (zh) | 用户分类方法、装置、计算机设备、存储介质和程序产品 | |
CN116257624A (zh) | 文本标注方法、装置、计算机设备、存储介质 | |
CN117495191A (zh) | 服务质量评估方法、装置、计算机设备及存储介质 | |
CN117473149A (zh) | 产品推荐方法、装置、计算机设备和存储介质 | |
CN117094828A (zh) | 金融产品推荐方法、装置、计算机设备和存储介质 | |
CN117333255A (zh) | 产品推荐方法、装置、计算机设备、存储介质和程序产品 | |
CN117151873A (zh) | 异常提示方法、装置、计算机设备和存储介质 | |
CN117592123A (zh) | 签名检验方法、装置、计算机设备和存储介质 | |
CN117194710A (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 |