CN116893809A - 用于代码可解释性的代码富集的方法、存储介质和系统 - Google Patents
用于代码可解释性的代码富集的方法、存储介质和系统 Download PDFInfo
- Publication number
- CN116893809A CN116893809A CN202310195540.9A CN202310195540A CN116893809A CN 116893809 A CN116893809 A CN 116893809A CN 202310195540 A CN202310195540 A CN 202310195540A CN 116893809 A CN116893809 A CN 116893809A
- Authority
- CN
- China
- Prior art keywords
- code
- executable
- computer
- file
- executable code
- 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 40
- 230000006870 function Effects 0.000 claims description 104
- 238000010801 machine learning Methods 0.000 claims description 68
- 230000008859 change Effects 0.000 claims description 31
- 238000012549 training Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 10
- 239000003607 modifier Substances 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 238000007637 random forest analysis Methods 0.000 description 25
- 238000004891 communication Methods 0.000 description 22
- 238000012360 testing method Methods 0.000 description 12
- 238000013473 artificial intelligence Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000002085 persistent effect Effects 0.000 description 6
- 238000003066 decision tree Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 208000025174 PANDAS Diseases 0.000 description 2
- 208000021155 Paediatric autoimmune neuropsychiatric disorders associated with streptococcal infection Diseases 0.000 description 2
- 240000004718 Panda Species 0.000 description 2
- 235000016496 Panda oleosa Nutrition 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000012488 sample solution Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 208000003174 Brain Neoplasms Diseases 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000009635 antibiotic susceptibility testing Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- 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/73—Program documentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- 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/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
提供了用于代码可解释性的代码富集的方法、存储介质和系统。根据实施方式的一方面,操作包括接收作为代码生成工具的输出的文件,该文件包括计算机可执行代码和不可执行描述。操作还包括将计算机可执行代码的块修改成模块化代码块并根据所修改的计算机可执行代码和不可执行描述确定触发条件集。操作还包括将触发条件集与修订规则集中的模板条件匹配,并且基于匹配来确定适用于所修改的计算机可执行代码和不可执行描述的一部分的改变集。操作还包括基于改变集来更新所修改的计算机可执行代码和不可执行描述,并生成指导型代码文件,该指导型代码文件包括所更新的计算机可执行代码和所更新的不可执行描述。
Description
相关申请的交叉引用
本申请基于2022年3月31日提交的美国专利申请第17/657,601号并要求该美国专利申请的优先权权益,该美国专利申请的全部内容通过引用并入本文。
技术领域
本公开内容中讨论的实施方式涉及用于针对代码可解释性的代码富集的系统和方法。
背景技术
自动代码生成工具正日益被学生、研究者和工程师等用于解决各种类型的工程和科学问题。自动机器学习工具是代码生成工具的一种形式,其提供可以用于使将机器学习应用于现实世界问题的任务自动化的处理。例如,自动机器学习工具可以在机器学习项目开发的不同阶段,即从原始数据集开始到构建用于部署的机器学习模型,为用户提供便利。初学者用户可以使用自动机器学习工具来学习用于数据处理和训练机器学习模型的机器学习方法。另一方面,数据科学家或专家用户可以使用自动机器学习工具,通过应用不同的方法和各种流水线利用来提高机器学习模型的准确性。自动机器学习工具通常可以生成用于给定任务和由工具的用户提供的数据集的计算机可执行代码。
本文要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的实施方式。相反,提供该背景仅为了说明可以实践本文中所描述的一些实施方式的一个示例技术领域。
发明内容
根据实施方式的一个方面,操作可以包括接收作为诸如自动机器学习工具的代码生成工具的输出的文件。文件可以包括计算机可执行代码和与计算机可执行代码相关联的不可执行描述。操作还可以包括通过将计算机可执行代码的块转换成模块化代码块来修改计算机可执行代码并根据所修改的计算机可执行代码和不可执行描述确定触发条件集。操作还可以包括将触发条件集与包括在修订规则集中的模板条件匹配,并且基于匹配条件集来确定改变集。改变集可以适用于所修改的计算机可执行代码的一部分和不可执行描述的一部分。操作还可以包括基于改变集来更新所修改的计算机可执行代码和不可执行描述,并生成包括所更新的计算机可执行代码和所更新的不可执行描述的指导型代码文件。
实施方式的目的和优点将至少通过权利要求中特别指出的元素、特征以及组合来实现和完成。
应当理解的是,前述一般描述和以下详细描述两者是示例性的和说明性的,而并非是对所要求保护的本发明进行限制。
附图说明
将通过使用附图以附加的特征和细节来描述和解释示例实施方式,在附图中:
图1是表示与用于代码可解释性的代码富集相关的示例环境的图;
图2是示出用于代码可解释性的代码富集的系统的框图;
图3示出了用于代码可解释性的代码富集的示例方法的流程图;
图4示出了包括用于更新代码的修订规则集的示例性模板文件;
图5示出了用于自动生成可以用于更新代码的修订规则集的示例方法的流程图;
图6示出了用于自动生成可以用于更新代码的修订规则集的示例性流水线;以及
图7是用于生成将被包括在所更新的代码中的文本解释的示例性流水线;
图8A和图8B共同示出了基于从代码生成工具接收的文件生成指导型代码文件的示例;
全部是根据本公开内容所述的至少一个实施方式。
具体实施方式
本公开内容中描述的一些实施方式涉及用于针对代码可解释性来富集计算机可执行代码的方法和非暂态计算机可读介质。本公开内容涉及从代码生成工具接收的代码文件的富集。可以通过更新所接收的代码文件中的计算机可执行代码、添加/更新所接收的代码文件中的不可执行描述,以及为所更新的计算机可执行代码添加不可执行描述(例如,自然语言描述或指导型描述)来实现富集。最初,计算机可执行代码可以被分段成块。可以通过将每个块转换成模块化代码块来修改计算机可执行代码的块。可以根据所修改的计算机可执行代码和不可执行描述来确定触发条件集。触发条件集可以与包括在修订规则集中的模板条件匹配。基于该匹配,可以确定改变集。这样的改变可以适用于所修改的计算机可执行代码的一部分和不可执行描述的一部分。所修改的计算机可执行代码和不可执行描述可以基于改变集来更新。此外,可以生成包括所更新的计算机可执行代码和更新的不可执行描述的指导型代码文件。
代码生成工具正日益被学生、研究者和工程师等用于解决各种类型的工程和科学问题。自动机器学习(ML)工具是一种形式的代码生成工具,其提供可以用于使将ML应用于现实世界问题的任务自动化的处理。例如,自动ML工具可以在ML项目开发的不同阶段,即从原始数据集开始到构建用于部署的ML模型,为用户提供便利。在AI/ML中具有各种专业水平的用户可以使用自动ML工具来为他们的项目生成计算机可执行代码。作为示例,自动机器学习工具可以使初学者人工智能(AI)用户能够学习用于设计、构建和部署AI/ML模型的机器学习方法。自动机器学习工具还可以使AI专家或研究人员(例如数据科学家)能够通过使用各种方法和利用各种流水线来提高现有AI/ML模型的准确性。方法可以增强所生成的代码和所生成的代码中所提及的指令的可读性。
尽管自动ML工具使得ML可访问(针对初学者用户)并且节省在建立用于解决复杂问题的基于ML的解决方案中通常所需的时间和资源(针对专家),但是通过使用ML工具生成的代码可能在各种级别上是抽象的。例如,一些自动机器学习工具可以包括对所生成的代码行的解释或描述。解释可以极大地帮助最小化理解所生成的代码所需的努力。否则,由于所生成的代码的抽象性质,可能需要努力来理解所生成的代码。然而,在大多数情况下,针对初学者以及专家用户来说,对所生成的代码的解释可能显得有限。例如,解释虽然对初学者AI用户有价值,但是对专家AI用户而言可能是明显的。解释的局限性可能是明显的,特别是如果解释不包括专家的观察或专家AI用户想要的特征。针对初学者AI用户,解释可能缺少开发对所生成的代码的理解所需的细节和/或清晰度。
根据本发明的一个或更多个实施方式,软件开发和机器学习的技术领域可以通过以下操作来改进:配置系统来富集由代码生成工具生成的代码,使得在AI中具有各种专业水平的用户能够利用代码生成工具所生成的代码。所生成的代码可以包括计算机可执行代码和与该计算机可执行代码相关联的不可执行描述。计算机可执行代码和不可执行描述可以通过模板条件和机器学习模型来富集。模板条件可以包括规则集,其中每个规则可以包括条件、动作和值中的一个或更多个。规则集可以手动产生或通过自动规则生成器产生。系统可以检测计算机可执行代码中的触发条件集,并且可以确定触发条件集与代码文件的一部分之间的匹配,并且可以基于模板更新代码文件。此后,系统可以基于匹配以结构化格式修改或更新计算机可执行代码。可以根据规则集中的一个或更多个规则的内容来执行更新。机器学习模型可以为计算机可执行代码的给定行生成不可执行描述。文本描述可以增强所更新的计算机可执行代码的可解释性。
富集的代码可以通过使用户能够在各种数据集和跨机器学习平台上执行富集的代码来定义代码生成工具的可扩展性。富集的代码可以产生指导型代码文件,其增强了代码的可用性和可解释性。与依赖于用户在AI和机器学习中的技能和经验的现有代码生成工具相比,由本公开内容中所描述的系统生成的指导型代码文件通过基于所定义的规则和所修改的代码的解释来修改代码以确保代码的可解释性。指导型代码文件可以由专家用户和非专家用户二者使用。这些解释可以扩展对给定数据集的机器学习模型的理解,并增加对机器学习模型的使用的信任。本公开内容还可以使得能够将指导型代码文件输出至托管类似指导型代码文件的平台。这些平台的用户可以查看和执行指导型代码文件。
参照附图解释本公开内容的实施方式。
图1是表示根据本公开内容中描述的至少一个实施方式布置的与用于代码可解释性的代码富集相关的示例环境的图。参照图1,示出了示例环境100。在示例环境100中,示出了系统102、用户设备104、数据源106和通信网络108。系统102和用户设备104可以经由通信网络108彼此通信地耦接。类似地,系统102和数据源106可以经由通信网络108彼此通信地耦接。还示出了可以与用户设备104相关联的用户112。
系统102可以包括可以被配置成富集由代码生成工具生成的计算机可执行代码和相关联的文本(即,不可执行描述)的合适的逻辑、电路和接口。系统102可以从代码生成工具110接收示例性文件116。所接收的文件116可以包括示例性计算机可执行代码118和与示例性计算机可执行代码118相关联的示例性不可执行描述120(例如,注解或简短注释形式的自然语言描述)。
代码生成工具110可以是在远程系统(例如,可以生成文件116的服务器)上可执行的软件,或者可以包括在系统102中(作为安装在系统102上的软件)。系统102可以被配置成在用户设备104上呈现电子用户界面(UI)114。例如,电子UI 114可以是web浏览器的UI。系统102还可以被配置成生成包括示例性所更新的计算机可执行代码124和示例性所更新的不可执行描述126的示例性指导型代码文件122。在生成时,系统102可以将指导型代码文件122发送至用户设备104,并且指导型代码文件122可以在用户设备104上的电子UI 114上呈现。
系统102的示例可以包括但不限于移动设备、台式计算机、膝上型计算机、计算设备、大型机,诸如云服务器的服务器以及一组服务器。在一个或更多个实施方式中,系统102可以包括用户端终端设备和通信地耦合到用户端终端设备的服务器。系统102可以使用包括处理器、微处理器(例如,以执行一个或更多个操作或控制一个或更多个操作的执行)、现场可编程门阵列(FPGA)或专用集成电路(ASIC)的硬件来实现。在一些其他实例中,可以使用硬件和软件的组合来实现系统102。
用户设备104可以包括适当的逻辑、电路和接口,其可以被配置成基于从系统102接收的命令来呈现指导型代码文件122。用户设备104的示例可以包括但不限于计算设备、台式计算机、个人计算机、膝上型计算机、计算机工作站、显示监视器或计算机监视器、平板计算机、智能电话、蜂窝电话、移动电话或消费电子(CE)设备。
数据源106包括可以被配置成存储可以由系统102检索以更新计算机可执行代码118和不可执行描述120的信息的适当逻辑、电路和接口。信息可以包括,例如,包括应用编程接口(API)调用的代码包、与一个或更多个在线编码竞赛相关联的多个指导型代码文件、基线指导型代码模板等。数据源106的示例可以包括但不限于网络服务器、数据库服务器,基于网络的代码库(例如,)和文件服务器。
在操作中,系统102可以将所接收的文件116分段成多个块。块可包括一行或更多个代码行,其可以包括计算机可执行代码、不可执行描述,或计算机可执行代码和不可执行描述的组合。如图1所示,文件116可以包括计算机可执行代码118和注释形式的不可执行描述120。
系统102可以通过将计算机可执行代码的块转换成模块化代码块来修改计算机可执行代码118。作为示例而非限制,转换可以包括将每个块的内容表示为函数调用、函数描述/代码或函数定义的一个或更多个参数中的一个或更多个。如图1所示,函数‘__replace_()’可以用于转换计算机可执行代码118的块中的内容(即,代码)。所转换的块可以包括作为函数‘__replace_()’的一部分的内容和对函数‘__replace_()’的调用。数据集可以作为参数传递给函数‘__replace_()’。可以使用函数‘__replace’、返回计算机可执行代码118中的数据集(‘__dataset’)的一个或更多个值的函数描述,以及函数参数‘__dataset’来表示计算机可执行代码118的内容。如图1所示,系统102可以修改计算机可执行代码118以包括函数调用和函数描述。这可能导致包括代码行‘def__replace_(_dataset)’、‘return__dataset’和‘__dataset=__replace__(__dataset)’。此外,可以生成文本描述“““用列模式替换空值”””。作为计算机可执行代码118的转换的模块化代码块可以基于改变集来更新以获得所更新的计算机可执行代码124。
系统102可以根据所修改的计算机可执行代码和不可执行描述确定触发条件集。触发条件可以包括例如变量、关键字、函数调用、函数参数、修饰符、统一码文本、软件包名称等中的一个或更多个。在一些实施方式中,触发条件集可以直接从计算机可执行代码118确定。如图1所示,系统102可以确定变量“STRING_CATG_COLM_HAS_MISSING”作为触发条件。变量可以指被表示为计算机可执行代码118中的阵列或数据帧的数据集。数据集可以包括多个参数,即列的‘alley’、‘bsmtqual’、‘bsmtcond’、‘poolqc’以及‘fence’。对应于多个参数中的每个参数的值可能丢失。
系统102可以将触发条件集与包括在修订规则集中的模板条件匹配。修订规则集可以存储在模板文件中。修订规则集中的每个规则可以包括模板条件和对应于模板条件的值。系统102可以检测在计算机可执行代码118中的第一代码行中确定的触发条件是否与修订规则集中的模板条件之一匹配。在一些实施方式中,如果找到匹配,则识别对应于模板条件的值。在这些或其他实施方式中,该值可以对应于要在第一代码行之前或第一代码行之后注入的第二代码行或文本描述。
在一些实施方式中,该值可以对应于要使用一个或更多个第二代码行在第一代码行上执行的一个或更多个操作。对第一代码行的这样的操作可以包括,例如,删除第一代码行、用一个或更多个第二代码行替换第一代码行、在第一代码行之前或在第一代码行之后附加一个或更多个第二代码行的操作、在第一代码行之前或在第一代码行之后插入一个或更多个第二代码行的操作等。
系统102可以确定可适用于所修改的计算机可执行代码的一部分(经由计算机可执行代码118的块的转换而获得)和不可执行描述120的一部分的改变集。可以基于触发条件集与修订规则集中所包括的模板条件之间的一个或更多个匹配来确定改变集。根据实施方式,改变集可以对应于可以通过将触发条件集与模板条件匹配来识别的值。
系统102可以基于改变集来更新所修改的计算机可执行代码和不可执行描述120。改变集可以应用于所修改的计算机可执行代码和不可执行描述120。在一些场景中,系统102可以仅更新所修改的计算机可执行代码。
系统102可以生成包括所更新的计算机可执行代码124和所更新的不可执行描述126的指导型代码文件122。作为示例而非限制,指导型代码文件122可以是具有多个单元的笔记本接口(或计算笔记本)。每个单元可以被格式化以接受所更新的计算机可执行代码124的一部分或所更新的计算机可执行代码124的一部分作为标记。如图1所示,指导型代码文件122包括所修改的计算机可执行代码(表示为所更新的计算机可执行代码124)和所生成的文本描述(表示为所更新的不可执行描述126“““用列模式替换空值”””)。
此处应当注意,系统102与用户设备104以及系统102与数据源106之间的通信可以经由通信网络108来执行。通信网络108可以包括通信介质,系统102可以通过通信介质与用户设备104通信。通信网络108的示例可以包括但不限于因特网、云网络、无线保真(Wi-Fi)网络、个域网(PAN)、局域网(LAN)和/或城域网(MAN)。示例环境100中的各种设备可以被配置成根据各种有线和无线通信协议连接至通信网络108。这样的有线和无线通信协议的示例可以包括但不限于传输控制协议和因特网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、文件传输协议(FTP)、ZigBee、EDGE、IEEE 802.11、光保真(Li-Fi)、802.16、IEEE 802.11s、IEEE 802.11g、多跳通信、无线接入点(AP)、设备至设备通信、蜂窝通信协议和/或蓝牙(BT)通信协议或它们的组合中的至少一个。
在不脱离本公开内容的范围的情况下,可以对系统102进行修改、添加或省略。
图2是示出根据本公开内容中描述的至少一个实施方式布置的用于代码可解释性的代码富集的系统的框图。结合图1的要素解释图2。参照图2,示出了图1的系统102的框图200。系统102可以包括处理器202、存储器204、永久数据存储装置206、输入/输出(I/O)设备208、网络接口210和机器学习模型212。还示出了经由通信网络108通信地耦接至系统102的用户设备104。
处理器202可以包括适当的逻辑、电路和/或接口,其可以被配置成执行与要由系统102执行的不同操作相关联的程序指令。处理器202可以包括任何合适的专用或通用计算机、计算实体或处理设备,包括各种计算机硬件或软件模块,并且可以被配置成执行存储在任何适用的计算机可读存储介质上的指令。例如,处理器202可以包括微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或被配置成解释和/或执行程序指令和/或处理数据的任何其他数字或模拟电路。虽然在图2中被示为单个处理器,但是处理器202可以包括被配置成单独地或共同地执行本公开内容中描述的系统102的任何数量的操作或指导上述操作的执行的任何数量的处理器。另外,一个或更多个处理器可以存在于一个或更多个不同的电子设备上,例如不同的服务器。
在一些实施方式中,处理器202可以被配置成解释和/或执行被存储在存储器204和/或永久数据存储装置206中的程序指令和/或处理数据。在一些实施方式中,处理器202可以从永久数据存储装置206中提取程序指令,并将程序指令载入至存储器204中。在将程序指令载入到存储器204中之后,处理器202可以执行程序指令。处理器202的一些示例可以是图形处理单元(GPU)、中央处理单元(CPU)、精简指令集计算机(RISC)处理器、专用集成电路(ASIC)处理器、复杂指令集计算机(CISC)处理器、协同处理器和/或其组合。
存储器204可以包括适当的逻辑、电路和/或接口,其可以被配置成存储可以由处理器202执行的程序指令。在某些实施方式中,存储器204可以被配置成存储从代码生成工具110接收的文件116、修订规则集、改变集、所更新的修改的计算机可执行代码和不可执行描述,以及所生成的指导型代码文件122。在某些实施方式中,存储器204可以包括机器学习模型212。存储器204可以包括用于携带或其上存储有计算机可执行指令或数据结构的计算机可读存储介质。这样的计算机可读存储介质可以包括可以由通用或专用计算机诸如处理器202访问的任何可用介质。
作为示例而非限制,这样的计算机可读存储介质可以包括有形的或非暂态计算机可读存储介质,包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)、光盘只读存储器(CD-ROM)或其他光盘存储装置、磁盘存储装置或其他磁性存储设备、闪存设备(例如,固态存储设备)、或者可以用来携带或存储计算机可执行指令或数据结构形式的特定程序代码并且可以由通用或专用计算机访问的任何其他存储介质。以上的组合也可以被包括在计算机可读存储介质的范围内。计算机可执行指令可以包括例如被配置成使处理器202执行与系统102相关联的特定操作或操作组的指令和数据。
永久数据存储装置206可以包括适当的逻辑、电路和/或接口,其可以被配置成存储可以由处理器202执行的程序指令以及包括在修订规则集中的模板条件。永久数据存储装置206可以包括用于携带或其上存储有计算机可执行指令或数据结构的计算机可读存储介质。这样的计算机可读存储介质可以包括可以由通用或专用计算机诸如处理器202访问的任何可用介质。
作为示例而非限制,这样的计算机可读存储介质可以包括有形或非暂态计算机可读存储介质,包括致密盘只读存储器(CD-ROM)或其他光盘存储装置、磁盘存储装置或其他磁存储设备(例如,硬盘驱动器(HDD))、闪存设备(例如,固态驱动器(SSD)、安全数字(SD)卡、其他固态存储设备)或可以用于携带或存储计算机可执行指令或数据结构形式的特定程序代码并且可以由通用或专用计算机访问的任何其他存储介质。以上的组合也可以被包括在计算机可读存储介质的范围内。计算机可执行指令可以包括例如被配置成使处理器202执行与系统102相关联的特定操作或操作组的指令和数据。
I/O设备208可以包括可以被配置成接收用户输入的适当逻辑、电路、接口和/或代码。I/O设备208还可以被配置成响应于用户输入而提供输出。I/O设备208可以包括可以被配置成与处理器202和诸如网络接口210的其他部件进行通信的各种输入和输出设备。输入设备的示例可以包括但不限于触摸屏、键盘、鼠标、操纵杆和/或麦克风。输出设备的示例可以包括但不限于显示设备和扬声器。
网络接口210可以包括适当的逻辑、电路、接口和/或代码,其可以被配置成经由通信网络108在系统102与用户设备104之间建立通信。网络接口210可以通过使用各种已知技术来实现,以支持系统102经由通信网络108的有线或无线通信。网络接口210可以包括(但不限于)天线、射频(RF)收发器、一个或更多个放大器、调谐器、一个或更多个振荡器、数字信号处理器、编解码器(CODEC)芯片组、用户身份模块(SIM)卡和/或本地缓冲器。
网络接口210可以经由无线通信与诸如因特网、内联网的网络和/或诸如蜂窝电话网络、无线局域网(LAN)和/或城域网(MAN)的无线网络进行通信。无线通信可以使用多种通信标准、协议和技术中的任何一种,例如,全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、长期演进(LTE)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、无线保真(Wi-Fi)(例如,IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE802.11n)、因特网协议语音(VoIP)、光保真(Li-Fi)或Wi-MAX。
在某些实施方式中,系统102可以被分成前端子系统和后端子系统。前端子系统可以被单独配置成从用户设备104、一个或更多个第三方服务器、web服务器、客户机和后端子系统接收请求/指令。这些请求可以被传送回后端子系统,后端子系统可以被配置成对这些请求起作用。例如,在系统102包括多个服务器的情况下,少数服务器可以是被配置成将请求/指令中继至与后端子系统相关联的其余服务器的前端服务器。
机器学习模型212可以被训练成基于训练数据集来生成用于所更新的计算机可执行代码的不可执行描述或适用于文件116中的不可执行描述的改变集的更新内容。机器学习模型212可以由其超参数定义,例如权重的数量、成本函数、输入大小、层数等。可以调整机器学习模型212的参数并且可以更新权重,以便向机器学习模型212的成本函数的全局最小值移动。在对训练数据集中的特征信息的训练的若干时期之后,可以训练机器学习模型212以输出所修改的计算机可执行代码中的代码行的预测结果(文本描述)。
机器学习模型212可以包括电子数据,其可以被实现为例如可在系统102上执行的应用的软件部件。机器学习模型212可以依赖于由诸如处理器202的处理设备执行的库、外部脚本或其他逻辑/指令。机器学习模型212可以包括被配置成使诸如处理器202的计算设备能够生成文本描述的代码和例程。另外地或可替选地,机器学习模型212可以使用包括处理器、微处理器(例如,以执行一个或更多个操作或控制一个或更多个操作的执行)、现场可编程门阵列(FPGA)或专用集成电路(ASIC)的硬件来实现。或者,在一些实施方式中,可以使用硬件和软件的组合来实现机器学习模型212。
在不脱离本公开内容的范围的情况下,可以对系统102进行修改、添加或省略。例如,在一些实施方式中,系统102可以包括可能未被明确图示或描述的任何数量的其他部件。
图3示出了根据本公开内容中描述的至少一个实施方式的用于代码可解释性的代码富集的示例方法的流程图。结合来自图1和图2的要素说明图3。参照图3,示出了流程图300。流程图300中所示的方法可以在302处开始,并且可以由任何合适的系统、装置或设备来执行,诸如由图1或图2的系统102来执行。
在304处,可以接收作为代码生成工具的输出的文件。文件可以包括计算机可执行代码和与计算机可执行代码相关联的不可执行描述(例如,自然语言描述)。根据实施方式,处理器202可以被配置成从代码生成工具110接收文件。
作为示例而非限制,代码生成工具110可以是在被执行时生成文件的机器学习代码生成软件。文件的内容可以用任何编程语言编写,诸如Python、JavaScript或C/C++。文件的计算机可执行代码可以与机器学习任务相关联。不可执行描述可以对应于与计算机可执行代码的各个部分相关联的静态注释或注解。Python中文件的示例部分如下所示:
1.#***生成流水线***
2.–
3.#载入数据
4.import pandas as pd
5.__train_dataset=pd.read_csv(“/AutoML/Autotask/split_datasets/prices/3/u
6.__test_dataset=pd.read_csv(“/AutoML/Autotask/split_datasets/prices/3/us
7.__dataset=pd.concat([__train_dataset,__test_dataset],axis=0).reset_i ndex
8.–
9.#丢弃不相关的列
为了简洁起见,仅提及了示例性文件的九(9)行。所接收的文件包括计算机可执行代码(第4行、第5行、第6行和第7行)和不可执行描述(第1行、第3行和第9行)。文件的计算机可执行代码可以与需要训练数据集和测试数据集的机器学习任务相关联。不可执行描述(第1行、第3行和第9行)是与计算机可执行代码(第4行、第5行、第6行和第7行)相关联的静态注释。
处理器202还可被配置成将计算机可执行代码118分段成多个块。以下是经由文件分段获得的示例性块:
表1:计算机可执行代码块
在306处,可以通过将计算机可执行代码的多个块中的每个块转换成模块化代码块来修改计算机可执行代码。根据实施方式,处理器202可以被配置成通过将计算机可执行代码的多个块中的每个块转换成模块化代码块来修改计算机可执行代码。可以基于用户112的要求将计算机可执行代码的块转换成折射器(refractor)或修改计算机可执行代码。块的转换可能需要模块化块构造。例如,通过函数调用、函数描述/代码或函数定义的一个或更多个参数来表示每个块的内容,可以将计算机可执行代码的块转换成模块化代码块。例如,存在于计算机可执行代码中的不同数据集可以被提交给模块(例如,Python函数),以便用类似于Python函数对参数的处理的方法来预处理数据集。考虑到在304处提到的计算机可执行代码的一部分,处理器202可以调用‘__load_data’模块(Python函数)来按照‘__load_data’模块预处理数据集‘__training_path’和‘__test_path’(存在于计算机可执行代码中)。考虑到304中提到的示例性接收文件,计算机可执行代码(第4行、第5行和第6行)和不可执行描述(第3行)可以被转换成如下的模块化块:
def__load_data(__training path,__test_path,concat=false):
***载入数据作为输入数据集
params:__training path:输入数据集的训练路径
params:__test path:测试数据集的路径
params:如果为真,则将连接训练数据集与测试数据集作为输出returns:生成最终载入的数据集作为数据集、输入和测试***
#载入数据
import pandas as pd
__train_dataset=pd.read_csv(__training path,delimiter=‘,’)
__test_dataset=pd.read_csv(__test path,delimiter=‘,’)
return__train_dataset,__test_dataset
__train_dataset,__test_dataset=__load_data(__training path,
__test_path,concat=true)
train_dataset.head()
在上述模块化块中,示例性接收文件的内容(第4行、第5行和第6行)表示为‘__load_data’模块(函数)的代码。‘__train_dataset’和‘__test_dataset’可以表示为‘__load_data’模块(函数)的参数。可以用不同的输入参数来调用‘__load_data’模块,诸如‘__training path’、‘__test_path’和‘concat=true’。处理器202也可以从其他Python函数调用‘__load_data’模块。
在308处,可以根据所修改的计算机可执行代码(模块化代码块)和不可执行描述来确定触发条件集。根据实施方式,处理器202可以被配置成根据所修改的计算机可执行代码和不可执行描述来确定触发条件集。作为示例而非限制,触发条件集可以包括变量、关键字、函数调用、函数参数、修饰符,统一码文本和软件包名称中的一个或更多个。例如,诸如‘开始’、‘分离目标’、‘载入数据’、‘建模’、‘训练测试划分’或‘预处理数’等关键字在所修改的计算机可执行代码中的存在可以被确定为触发条件。类似地,诸如‘__y_pred’、‘__STRING_CATG_COLM_HAS_MISSING’、‘__feature’、‘__target’、‘__NUM_COLM_HAS_MISSING’、‘__num_of_training_instances’或‘__lgbmregressor=LGBMRegressor()’等变量在所修改的计算机可执行代码中的存在可以被确定为触发条件。诸如‘__model=RandomForestClassifier()’或‘__model=CatBoostRegressor()’等函数调用在所修改的计算机可执行代码中的存在可以被确定为触发条件。
根据实施方式,触发条件集可以基于所修改的计算机可执行代码的抽象语法树(AST)和不可执行描述来确定。处理器202可以被配置成通过解析所修改的计算机可执行代码行和不可执行描述来生成AST。通过处理AST的节点,处理器202还可以被配置成确定变量、关键字、函数调用、函数参数、修饰符,统一码文本和软件包名称中的一个或更多个。触发条件集可以基于所确定的变量、关键字、函数调用、函数参数、修饰符,统一码文本和软件包名称来确定。
在310处,触发条件集可以与包括在修订规则集中的模板条件匹配。处理器202可以被配置成将所确定的触发条件集与模板条件匹配。根据实施方式,修订规则集可以对应于包括作为关键字或文本描述的模板条件和对应于关键字和文本描述的值的模板文件。示例性模板文件如下所示:
表2:修订规则集
处理器202可以被配置成确定触发条件集是否与示例性模板文件中的关键字或文本描述匹配。
根据另一实施方式,修订规则集可以对应于包括作为变量、函数调用或函数参数的模板条件的模板文件。模板文件还可以包括对应于模板条件的值,其中该值可以是函数名称,即需要调用的函数名称。示例性模板文件如下所示:
FUNCTION MAPPING={
‘__STRING_CATG_COLM_HAS_MISSING’:‘__missing_data__’,
‘__NUM_COLM_HAS_MISSING’:‘__num_missing__’,
‘__STRING_CATG_COLM_NO_MISSING’:‘__cat_missing__’,
‘__target’=__dataset[’:‘__target dataset__’,
‘__num_of_training_instances’:‘__num_of_training_instances’,
‘__lgbmregressor=LGBMRegressor()’:‘__LGBMRegressor__’。
处理器202可以被配置成确定触发条件集是否与示例性模板文件中的变量、函数调用或函数参数匹配。处理器202可以被配置成处理所修改的计算机可执行代码的块并区分每个块的目的。如果代码行以匹配的模板条件开始,则可以启动对应的函数。处理器202可以被配置成如果触发条件集中的触发条件被确定为与所修改的计算机可执行代码中的模板条件(表示为修订规则集中的变量、函数调用或函数参数)匹配,则调用函数(表示为修订规则集中的值)。
根据实施方式,修订规则集可以对应于包括作为关键字的模板条件和作为一个或更多个操作和一个或更多个代码行的对应于关键字(模板条件)的值的模板文件。处理器202可以被配置成确定所修改的计算机可执行代码中的一个或更多个关键字作为触发条件集中的触发条件。此外,所确定的关键字可以与作为模板条件包括在修订规则集中的关键字匹配。例如,在图4中描述了关于所确定的关键字的匹配的进一步细节。
在312处,可以基于匹配确定改变集。处理器202可以被配置成基于匹配来确定适应于所修改的计算机可执行代码的一部分和不可执行描述的一部分的改变集。根据实施方式,改变集包括选择与触发条件集匹配的模板条件的子集。可以从包括模板条件的模板文件中选择模板条件的子集。
如果模板文件包括作为关键字或作为文本描述的模板条件,则可执行搜索操作以识别对应于模板条件的子集的值的子集。处理器202可以被配置成执行模板文件中的搜索操作,以识别与模板条件的子集相对应的值的子集。如果在模板条件的子集与触发条件集之间确定匹配,则可以执行搜索操作。值的子集可以包括用于所修改的计算机可执行代码的模块化代码块的一个或更多个代码段或不可执行描述。
参照表2的模板文件(即修订规则),所选模板条件的子集可以包括关键字‘开始’和文本描述***生成流水线***。关键字‘开始’(在所修改的计算机可执行代码中)和文本描述***生成流水线***(在不可执行描述中)可以被确定为触发条件集。此后,处理器202可以选择关键字‘开始’和文本描述***生成流水线***作为与所确定的触发条件集匹配的模板条件的子集。搜索操作可以导致将“#使用通用数据集路径开始”和“#由SML生成流水线”识别为值的子集。“#使用通用数据集路径开始”可以对应于模板条件‘开始’,并且“#由SML生成流水线”可以对应于模板条件***生成流水线***。因此,改变集可以包括添加行注释,即“#使用通用数据集路径开始”和“#由SML生成流水线”。
如果模板文件包括作为变量、函数调用或函数参数的模板条件,则可以执行搜索操作以识别对应于模板条件的函数。例如,变量‘__STRING_CATG_COLM_NO_MISSING’和‘__NUM_COLM_HAS_MISSING’可以被检测为所修改的计算机可执行代码中的触发条件集。当变量与模板文件中的模板条件‘__STRING_CATG_COLM_NO_MISSING’和‘__NUM_COLM_HAS_MISSING’匹配时,处理器202可以选择变量‘__STRING_CATG_COLM_NO_MISSING’和‘__NUM_COLM_HAS_MISSING’作为模板条件的子集。此后,处理器202可以被配置成执行搜索操作以识别模板文件中对应于这些变量的值。所识别的值可以被称为值的子集,诸如函数‘__cat_missing__’(对应于‘__STRING_CATG_COLM_NO_MISSING’)和函数‘__num_missing__’(对应于‘__NUM_COLM_HAS_MISSING’)。处理器202可以在确定所修改的计算机可执行代码中的触发条件集时调用函数‘__cat_missing__’和‘__num_missing__’。
根据实施方式,改变集可以包括要对所修改的计算机可执行代码中的代码行执行的一个或更多个操作。处理器202可以被配置成在确定代码行中的触发条件之后选择代码行。触发条件可以被称为所选代码行中的关键字。处理器202可以确定与模板文件中的触发条件匹配的关键字(即,作为模板条件),并可以识别对应于匹配模板条件的值。值可以包括要对所选代码行执行的一个或更多个操作以及要插入第一代码行中、替换第一代码行、附加在第一代码行之前或附加在第一代码行之后的一个或更多个代码行(与所选代码行不同)。例如,在图4中描述了关于确定改变集的进一步细节。
在314处,可以基于改变集来更新所修改的计算机可执行代码和不可执行描述。处理器202可以被配置成更新所修改的计算机可执行代码和不可执行描述。
根据实施方式,处理器202可以基于关键字和文本描述来更新所修改的计算机可执行代码和不可执行描述。例如,改变集可以对应于值“#使用通用数据集路径开始”和“#由SML生成流水线”。值“#使用通用数据集路径开始”可以对应于关键字‘开始’(模板条件的子集中的模板条件)。如果在不可执行描述中检测到关键字‘开始’作为触发条件,则处理器202可以更新不可执行描述。针对更新,触发条件必须与模板文件中的模板条件‘#开始’匹配。更新可以包括在所修改的计算机可执行代码中的关键字‘开始’之前注入值“#使用通用数据集路径开始”。值‘#使用通用数据集路径开始’是预块注入内容,因为该值在触发条件之前被添加。参照表2)中描述的修订规则集(模板文件),模板条件#开始(注释)对应于值[[‘#使用通用数据集路径开始’],[]]。
类似地,值‘#由SML生成流水线’可以对应于文本描述***生成流水线***(模板条件的子集中的模板条件)。如果在不可执行描述中检测到文本描述***生成流水线***作为触发条件,则处理器202可以更新不可执行描述。文本描述可以与模板文件中的模板条件***生成流水线***匹配。更新可以包括在不可执行描述中的文本描述***生成流水线***之前注入值‘#由SML生成流水线’(参照表2中描述的修订规则集(模板文件))。
根据另一实施方式,处理器202可以基于函数描述来更新所修改的计算机可执行代码的各部分。改变集可以对应于值‘__cat_missing__’和‘__num_missing__’。例如,值‘__cat_missing__’可以是对应于模板文件中的模板条件‘__STRING_CATG_COLM_NO_MISSING’的函数。处理器202可以被配置成在所修改的计算机可执行代码中在将变量‘__STRING_CATG_COLM_NO_MISSING’确定为触发条件时调用函数‘__cat_missing__’。触发条件可以与模板文件中的模板条件‘__STRING_CATG_COLM_NO_MISSING’匹配。包括变量‘__STRING_CATG_COLM_NO_MISSING’的所修改的计算机可执行代码的一部分可以用对应于函数‘__cat_missing__’的函数描述来更新。
类似地,值‘__num_missing__’可以是对应于模板文件中的另一模板条件‘__NUM_COLM_HAS_MISSING’的函数。如果在所修改的计算机可执行代码中检测到变量‘__NUM_COLM_HAS_MISSING’作为触发条件,则处理器202可以被配置成调用函数‘__num_missing__’。触发条件可以与模板文件中的模板条件‘__NUM_COLM_HAS_MISSING’匹配。包括变量‘__NUM_COLM_HAS_MISSING’的所修改的计算机可执行代码的一部分可以用对应于函数‘__num_missing__’的函数描述来更新。
根据另一实施方式,处理器202可以基于模板文件中作为模板条件包括的关键字来更新从所修改的计算机可执行代码中选择的代码行。关键字可以是在模板文件中存在值的条件。如果确定所选代码行中的触发条件与模板文件中的模板条件(关键字)匹配,则可以基于对应于关键字的值来更新所选代码行。该值可以包括要使用一个或更多个代码行执行的一个或更多个操作。
处理器202可以基于对应于该值的改变集来更新所选代码行。所选代码行可以经由使用包括在值中的一个或更多个代码行对所选代码行执行的一个或更多个操作来更新。例如,在图4中描述了关于更新所选代码行的进一步细节。
在316处,可以生成指导型代码文件。处理器202可以被配置成生成包括所更新的计算机可执行代码和所更新的不可执行描述的指导型代码文件。指导型代码文件的示例是笔记本。处理器202可以用所更新的计算机可执行代码和所更新的不可执行描述填充基线指导型代码模板,以生成指导型代码文件。所更新的计算机可执行代码可以用较不抽象的格式来表示计算机可执行代码,并且可以由初学者和专家用户容易地理解。所更新的不可执行描述可以增强所更新的计算机可执行代码的可解释性,并且可以提高所接收的文件中以不可执行描述的形式存在的文档的质量。例如,在图8B中描述了示例指导型代码文件。
在318处,可以在笔记本应用的UI上呈现指导型代码文件。处理器202可以被配置成将指导型代码文件呈现至笔记本应用的UI上。根据实施方式,所呈现的指导型代码文件可以包括对计算机可执行代码(例如,经由自动机器学习工具生成的机器学习代码)的解释。处理器202可以控制显示设备(例如,用户设备104)以呈现所生成的指导型代码文件。笔记本应用可以是允许开发者(或用户)查看、编辑、记录/注释代码并执行计算机可执行代码的交互式web应用。
处理器202可以被配置成经由内核包装器将指导型代码文件导出到笔记本应用。如果笔记本应用使得能够通过使用笔记本应用的内核来执行计算机可执行代码,则可以使用内核包装器。内核包装器可以包装笔记本应用的应用编程接口(API)。
在320处,可以编译指导型代码文件以使得能够执行包括在指导型代码文件中的所更新的计算机可执行代码。处理器202可以被配置成编译指导型代码文件以执行所更新的计算机可执行代码。根据环境,处理器202可以使用笔记本应用所使用的编译器来编译所更新的计算机可执行代码。根据实施方式,处理器202可以将指导型代码文件转换成适于在笔记本应用的UI上呈现的格式(例如,用于代码和标记的单独可执行单元)。
控制可以进行至结束。尽管流程图300被示为离散操作,诸如302、304、306、308、310、312、314、316、318和320。然而,在某些实施方式中,这样的离散操作还可以根据特定实施方案划分为额外操作、组合成更少操作或被消除,而不减损所揭示实施方式的本质。
图4示出了包括用于更新代码的修订规则集的示例性模板文件。结合图1、图2和图3的要素来解释图4。参照图4,示出了包括修订规则集的示例性模板文件402。修订规则集中的每个规则可以包括模板条件和对应于模板条件的值。模板条件可以被称为关键字,并且对应于关键字的值可以是可以使用一个或更多个代码行来执行的操作(例如,添加、删除、替换、附加)。如图4所示,修订规则集(即,示例性模板文件402的一部分)包括四个模板条件。如本文所描述的,处理器202可以执行操作集以确定所修改的计算机可执行代码中的所选代码行中的触发条件,并将触发条件与示例性模板文件402中的模板条件匹配。
处理器202可以被配置成从所修改的计算机可执行代码中选择代码行,并确定所选代码行中的触发条件集中的触发条件。处理器202可以将所确定的触发条件与修订规则集中的模板条件(关键字)匹配。例如,所确定的触发条件可以与关键字或模板条件匹配,诸如:
‘__dataset=pd.concat([__train_dataset,__test_dataset])’402,
“__dataset.drop([‘Id’],axis=1,inplace=True)”408,
‘__y_pred=’412,以及
‘__target_test=’416。
处理器202可以被配置成基于匹配来确定改变集中的改变。改变集可以包括要在所修改的计算机可执行代码中的所选代码行上执行的操作。根据实施方式,如果所确定的触发条件与模板条件匹配,则处理器202可以被配置成识别对应于示例性模板文件402中的匹配模板条件的值。该值可以包括要对所选代码行执行的一个或更多个操作和/或要插入至所选代码行中的一个或更多个代码行。
处理器202可以基于改变集来更新所选代码行。例如,如果在所选代码行中所确定的触发条件与‘__dataset=pd.concat([__train_dataset,__test_dataset])’404匹配,则对应的值可以被识别为[(‘replace’,[‘if not concat:‘,’\t_dataset=__train_dataset.copy()’,’else:’]),(‘insert_start’,[‘\t’])]。该值指示需要在所选代码行上执行replace 406和insert_start(开始时插入)408操作。改变集中的对应改变可以包括从所选代码行替换[‘if not concat:‘,’\t_dataset=__train_dataset.copy()’,’else:’]的操作,并且在所选代码行的开始处插入[‘\t’]。
如果所选代码行中所确定的触发条件与“__dataset.drop([‘Id’],axis=1,inplace=True)”410匹配,则对应的值可以被识别为[(“append_prev”,[“submission=pd.DataFrame(__train_dataset[‘Id’].copy(),columns=[‘Id’])”])]。该值可以指示需要在所选代码行上执行append_prev(append_previous)412操作。改变集中的对应改变可以包括在所选代码行的开始处附加[“submission=pd.DataFrame(__train_dataset[‘Id’].copy(),columns=[‘Id’])”]的操作。
如果所选代码行中所确定的触发条件与‘__y_pred=’414匹配,则对应的值可以被识别为[(‘append_next’,[‘submission[“Saleprice”]=__y_pred’,‘submission’,‘#生成提交CSV文件’,“submission.to_csv(‘submission.csv’,index=False)”])]。该值可以指示需要在所选代码行上执行append_next(append_next)416操作。改变集中的对应改变可以包括在所选代码行之后附加[‘submission[“Saleprice”]=__y_pred’,‘submission’,‘#生成提交CSV文件’,“submission.to_csv(‘submission.csv’,index=False)”]的操作。
如果所选代码行中确定的触发条件与‘__target_test=’418匹配,则对应的值可以被识别为[(‘append_next’,[‘__feature_train’])]。该值可以指示需要在所选代码行上执行append_next(append_next)414操作。改变集中的对应改变可以包括在所选代码行之后附加[‘__feature_train’]的操作。
图5示出了根据本公开内容中描述的至少一个实施方式的用于自动生成可以用于更新代码的修订规则集的示例方法的流程图。结合图1、图2、图3和图4的要素来解释图5。参照图5,示出了流程图500。流程图500中所示的方法可以在502处开始,并且可以由任何合适的系统、装置或设备来执行,诸如由图1或图2的系统102来执行。
在504处,可以搜索代码包以识别代码包中使用的API调用。在一个或更多个实施方式中,处理器202可以被配置成搜索代码包以识别代码包中使用的API调用。处理器202可以检查语言源以访问API调用信息。语言源可以包括代码库。代码库可以包括要搜索的代码包。代码包可以包括API调用信息。例如,可以访问诸如PyTorrentTM的代码库以检索API调用的描述和与API调用相关的参数。Python库可以包括编码、语义和自然语言资源,其可以用于更新计算机可执行代码和不可执行描述以实现代码可理解性。
在506处,可以从代码包中提取与API调用相关的信息。在一个或更多个实施方式中,处理器202可以配置成从代码包中提取与API调用相关的信息。所提取的信息可以包括API函数、与API函数相关联的文件字符串、参数描述和统一资源定位符(URL)中的一个或更多个。例如,处理器202可以被配置成提取关于API调用“随机森林分类器”的信息。信息可以从存在于所搜索的代码包之一中的文档中提取。文档可以包括API函数‘RandomForestClassifier(ForestClassifier)’。
API调用随机森林分类器的文档还可以包括文档字符串“随机森林分类器是在数据集的各种子样本上拟合多个决策树分类器的元估计器。如果‘bootstrap=True’(默认),则使用‘max_samples’参数控制子样本大小,否则使用整个数据集构建每个树"。API调用随机森林分类器的文档还可包括诸如“n_estimators”和“versionchanged”的参数描述。文档中的参数描述可以包括“n_estimators:int,default=100,森林中的树的数量,__versionchanged:0.22,“n_estimators的默认值以0.22从10变为100”。API调用随机森林分类器的文档还可以包括与API调用随机森林分类器相关联的URL。包括在描述中的URL可以是‘https://github.com/scikit-learn/scikit-learn/blob/0d378913b/sklearn/ensemble/forest.py#L1065’。
在508处,所提取的数据可以被汇总(summarize)到与API函数相关联的解释字符串集中。在一个或更多个实施方式中,处理器202可以被配置成将所提取的数据汇总到与API函数相关联的解释字符串集中。处理器202可以通过使用语言模型来生成摘要(summary)。例如,处理器202可以生成包括与API调用“随机森林分类器”相关联的解释字符串集的摘要。所生成的摘要可以包括例如“随机森林分类器是在数据集的各个子样本上拟合多个决策树分类器,并使用平均来提高预测准确度和控制过度拟合的元估计器。”、“如果bootstrap=True(默认),则使用max_samples参数来控制子样本大小,否则使用整个数据集来构建每个树”。
在510处,可以基于解释字符串集来生成修订规则集中的修订规则。在一个或更多个实施方式中,处理器202可以被配置成基于解释字符串集来生成修订规则集中的修订规则。在一些实施方式中,处理器202可以被配置成基于解释文本和可视化来生成修订规则集中的修订规则。修订规则可以被包括在包括多个模板条件的模板文件中。修订规则中的模板条件可以表示为对应于值的模板函数。该值可以对应于基于解释字符串集执行的一个或更多个操作。例如,针对使用随机森林分类器的操作生成的修订规则使用解释文本集示出,如下:
elif‘__model=RandomForestClassifier()’in prev:
added_codes.append(([‘##随机森林分类器’,
“我们将使用‘随机森林分类器’,随机森林分类器是在数据集的各种子样本上拟合多个决策树分类器的元估计器。”
“如果‘bootstrap=True’(默认),则用‘max_samples’参数控制子样本大小,否则使用整个数据集构建每个树。”
“更多详细信息请参见[此处](https://lskit-learn.org/modules”],‘markdown’))。
在所生成的修订规则中,模板条件为[‘__model=RandomForestClassifier()’inprev:]。处理器202可以应用所生成的规则来修订所修改的计算机可执行代码中的所选代码行或不可执行描述。在确定与所生成的修订规则中的模板条件匹配的所修改的计算机可执行代码或不可执行描述中的触发条件时,可以应用所生成的规则。触发条件可以是所选代码行中的函数调用“随机森林分类器”。
处理器202可以被配置成基于与模板条件[‘__model=RandomForestClassifier()’in prev:]对应的值来确定改变集。例如,该值可以对应于必须在所选代码行上执行以包括解释字符串集的附加操作。因此,处理器202可以被配置成通过在所修改的计算机可执行代码中的所选代码行之前附加“[‘##随机森林分类器’,“我们将使用‘随机森林分类器’,‘随机森林分类器’是在数据集的各种子样本上拟合多个决策树分类器的元估计器。”、“如果‘bootstrap=True’(默认),则用‘max_samples’参数控制子样本大小,否则使用整个数据集构建每个树。”、“更多详细信息请参见[此处](https://lskit-learn.org/modules”],‘markdown’]”来更新所选择的代码行。
控制可以进行至结束。尽管流程图500被示为离散操作,诸如502、504、506、508和510。然而,在某些实施方式中,这样的离散操作还可以根据特定实施方案划分为额外操作、组合成更少操作或被消除,而不减损所公开的实施方式的本质。
图6示出了根据本公开内容中描述的至少一个实施方式的用于自动生成可以用于更新代码的修订规则集的示例性流水线。结合图1、图2、图3、图4和图5的要素来解释图6。参照图6,示出了示例性流水线600的框图。示例性流水线600可以用于自动生成规则集。规则集可以用于基于改变集来更新所修改的计算机可执行代码或不可执行描述。
在602处,可以从目标包识别API调用。处理器202可以被配置成从目标包识别API调用。目标包可以是包括在语言源(代码库)中的代码包。例如,代码包可以包括与API调用“随机森林分类器”相关的文档616。文档616可以包括与API函数、文档字符串、参数描述、URL链接等相关的数据。
在604处,可以提取API函数618。处理器202可以被配置成从文档616中提取与API调用“随机森林分类器”相关联的API函数618。
在606处,可以提取与API函数618相关联的文档字符串620。处理器202可以被配置成从文档616中提取与API函数618相关联的文件字符串620。
在608处,可以提取API函数618的参数描述622。处理器202可以被配置成从文档616中提取API函数618的参数描述622。
在610处,可以提取与API函数618相关联的URL。处理器202可以被配置成从文档616中提取与API函数随机森林分类器相关联的URL。
在612处,可以基于所提取的数据生成解释。处理器202可以被配置成基于从文档616提取的数据生成关于API调用“随机森林分类器”的解释(摘要)。所提取的数据包括API函数618、文档字符串620、API函数618的参数描述622,以及与API函数618相关联的URL。
在614处,可以在检测到所修改的计算机可执行代码中的触发条件时生成规则624以包括解释(摘要)。处理器202可以被配置成在检测到所修改的计算机可执行代码中的触发条件时生成规则624以包括摘要。所生成的规则624可以包括模板条件[‘__model=RandomForestClassifier()’in prev:]626。如果触发条件与模板条件[‘__model=RandomForestClassifier()’in prev:]626匹配,则关于API调用“随机森林分类器”的摘要可被包括以作为对不可执行描述的更新。所生成的规则624可以包括对应于模板条件626的值628。值628可以包括将被执行以将不可执行描述的先前行更新为解释字符串集的操作(append_prev)。摘要可以对应于基于所提取的数据生成的解释字符串集。
图7是根据本公开内容中描述的至少一个实施方式的用于生成将被包括在所更新的代码中的文本解释的示例性流水线。结合图1、图2、图3、图4、图5和图6的要素来解释图7。参照图7,示出了包括图2的机器学习模型212的示例性流水线700的框图。机器学习模型212可以预测文本描述712,文本描述712可以作为不可执行描述被包括在指导型代码文件中。文本描述712还可以用于更新要包括在指导型代码文件中的所更新的不可执行描述的内容。
在702处,可以接收与一个或更多个在线编码竞赛相关联的多个指导型代码文件。处理器202可以被配置成接收与一个或更多个在线编码竞赛相关联的多个指导型代码文件。可以从诸如在线讨论论坛、数据集等资源、诸如等上下文无关资源接收指导型代码文件。资源可以包括与代码文件相关联的元数据、解释代码文件的指导、使用代码文件中的计算机可执行代码实现的样本解决方案、样本解决方案的性能等。处理器202可以利用在线编码竞赛的资源来训练机器学习模型212。多个指导型代码文件中的每个所接收的指导型代码文件可以包括计算机可执行代码、可视化(每个指导型代码文件的输入和输出)、用于计算机可执行代码的不可执行描述(诸如对计算机可执行代码行的注释和对计算机可执行代码行的描述)等。
在704处,可以确定在多个指导型代码文件中使用的函数集。处理器202可以被配置成确定在多个指导型代码文件中使用的函数集。根据实施方式,可以基于多个指导型代码文件的AST来确定函数集。所确定的函数集可以是在模板文件中不存在或在模板文件中没有对应描述的独特函数。处理器202可以通过解析多个指导型代码文件的每个指导型代码文件中的计算机可执行代码行来确定AST。计算机可执行代码可包括诸如函数定义、文档字符串、函数参数、函数描述、变量、代码包等成分。指导型代码文件中的代码行的AST可以用于确定指导型代码文件中使用的一个或更多个函数。例如,针对诸如包括在代码行“import seaborn as sns”中的‘seaborn’和‘sns’的词,处理器202可以基于AST确定包括词‘seaborn’和‘sns’的其他代码行。示例性的代码行被确定为:‘sns.heatmap(cm_mnb_tfidf,cmap=“Blues”,annot=True,fmt=”)’。AST可以返回‘True’,因为代码行包括词‘sns’作为‘seaborn’的别名。针对另一示例代码行“import matplotlib.pyplot as plt”,AST可以被解析为“ast.parse(plt.figure(figsize=(10,10))\n)”。如果代码行中存在诸如‘plt.figure’和‘plt.show’的函数,则AST可以返回“True”。
在706处,可以提取与函数集相关的信息。处理器202可以被配置成提取与函数集相关的信息。一旦确定了函数,就可以提取与函数集相关的信息。所提取的信息可以包括计算机可执行代码、计算机可执行代码的描述、对计算机可执行代码行的注释等。
在708处,可以基于所提取的信息生成训练数据集。处理器202可以被配置成基于与函数集相关的信息生成训练数据集。训练数据集可以用于训练机器学习模型212。根据实施方式,训练数据集可以是包括在所提取的信息中的代码、注释、描述和输出的数值表示。示例性的训练数据集可以包括诸如000_simple-text-classification、_starter-intel-ai-4c6f、_the distribution-of-等的信息成分。每个信息成分可以包括参数和与这些参数相关联的值。作为示例,与信息成分000_simple-text-classification相关联的参数和值包括“no_markdown:0”、“no_markdown_header:0”、“no_code:152、“no_code_comment:23”、“no_output:19”、“output:[]”、“user_name:mads2000”等。
一旦通过使用训练数据集训练了机器学习模型212,处理器202就可以提供所修改的计算机可执行代码行710作为机器学习模型212的输入。经训练的机器学习模型212可以接收所修改的计算机可执行代码行710作为输入。可以提供给经训练的机器学习模型212的示例性所修改计算机可执行代码行710如下:
1.train_df=pd.read_csv(“../input/rsna-miccai-brain-tumor-radiogenomic-classification/train_labels.csv”)
2.train_df。
机器学习模型212可以被配置成预测文本描述712作为输入的输出。对应于示例性所修改的计算机可执行代码输入行710的预测输出(文本描述712)可以如下:
“train/-folder包含训练文件,每个顶级文件夹表示一个主题”
“train_labels.csv-file包含针对训练数据中每个对象的目标MGMT_value”
“test/-测试文件,其使用与train/相同的结构;您的任务是预测测试数据中每个对象的MGMT_value”
“sample_submission.csv-正确格式的样本提交文件”。
在716处,可以基于文本描述712来更新改变集714的内容。处理器202可以基于文本描述712更新改变集714的内容。处理器202可以确定改变集714,以基于改变集来更新所修改的计算机可执行代码和不可执行描述。在一些实施方式中,文本描述712可以被包括为适用于不可执行描述的改变集714之一。在一些实施方式中,文本描述712可以用于更新可以适用于不可执行描述的改变集714中的一个或更多个改变的内容。可以基于与规则集中的模板条件匹配的不可执行描述中的触发条件来确定一个或更多个改变。例如,可以基于所生成的文本描述712来更新规则624中所生成的摘要。
图8A和图8B共同示出根据本公开内容中描述的至少一个实施方式的基于从代码生成工具接收的文件生成指导型代码文件的示例。结合图1、图2、图3、图4、图5、图6和图7的要素来解释图8A和图8B。参照图8A,示出了文件802。可以由系统102接收作为代码生成工具110的输出的文件802。参照图8B,示出了由系统102基于文件802生成的指导型代码文件804。文件802可以包括计算机可执行代码和与计算机可执行代码相关联的不可执行描述(静态注释)。指导型代码文件804包括计算机可执行代码806和不可执行描述808。计算机可执行代码806可以是包括在文件802中的计算机可执行代码的所更新的修改版本。处理器202可以被配置成执行操作以基于文件802生成指导型代码文件804。
处理器202可以被配置成在计算机可执行代码806中包括不可执行描述808。可以基于改变集来包括不可执行描述808。这样的改变可以基于计算机可执行代码806中的触发条件与包括在规则集中的模板条件之间的匹配来确定。触发条件可以是包括在计算机可执行代码806的代码行中的函数调用。代码行可以是例如‘__model=RandomForestClassifier()。模板条件可以包括在规则624中,即,[‘__model=RandomForestClassifier()’in prev:]626。当触发条件与模板条件匹配时,可以确定改变集。改变集可以基于对应于模板条件626的值。该值包括规则624中的值628的内容的一部分。该值可以包括操作和文本描述。改变集可以对应于可能必须使用文本描述在所选代码行上执行的操作‘append_prev’。处理器202可以被配置成通过将文本描述作为更新附加至文件802中的不可执行描述(注释#建模)来更新文件802。该更新可以使得生成指导型代码文件804。
本公开内容的各种实施方式可以提供被配置成存储指令的一个或更多个非暂态计算机可读存储介质,指令响应于被执行而使系统(诸如系统102)执行操作。操作可以包括接收作为代码生成工具的输出的包括计算机可执行代码和与计算机可执行代码相关联的不可执行描述的文件。操作还可以包括通过将计算机可执行代码的块转换成模块化代码块来修改计算机可执行代码。操作还可以包括根据所修改的计算机可执行代码和不可执行描述确定触发条件集。操作还可以包括将触发条件集与包括在修订规则集中的模板条件匹配。操作还可以包括基于匹配来确定适用于所修改的计算机可执行代码的一部分和不可执行描述的一部分的改变集。操作还可以包括基于改变集来更新所修改的计算机可执行代码和不可执行描述。操作还可以包括生成包括所更新的计算机可执行代码和所更新的不可执行描述的指导型代码文件。
如上所述,本公开内容中描述的实施方式可以包括使用包括各种计算机硬件或软件模块的专用或通用计算机(例如,图2的处理器202),如下面更详细地讨论的。此外,如上所述,本公开内容中描述的实施方式可以利用用于携载计算机可执行指令或数据结构或者在其上存储有计算机可执行指令或数据结构的计算机可读介质(例如,图2的存储器204或永久数据存储装置206)来实现。
如在本公开内容中所使用的,术语“模块”或“部件”可以是指下述特定硬件实现方式:其被配置成执行可以存储在计算系统的通用硬件(例如,计算机可读介质、处理设备或某种其他硬件等)上和/或由该硬件执行的软件对象或软件例程和/或模块或部件的动作。在一些实施方式中,本公开内容中描述的不同部件、模块、引擎和服务可以被实现为在计算系统上执行的对象或进程(例如,作为单独的线程)。虽然本公开内容中描述的一些系统和方法通常被描述为以软件(存储在通用硬件上和/或由通用硬件执行)实现,但特定的硬件实现方式或软件与特定的硬件实现方式的组合也是可能的并且是可预期的。在本说明书中,“计算实体”可以是如先前在本公开内容中定义的任何计算系统,或在计算系统上运行的任何模块或调制的组合。
在本公开内容中并且特别是在所附权利要求(例如,所附权利要求的主体)中使用的术语通常旨在作为“开放式”术语(例如,术语“包括”应当被解释为“包括但不限于”,术语“具有”应当被解释为“至少具有”,术语“包含”应当被解释为“包含但不限于”等)。
另外,如果意在特定数量的所引入的权利要求陈述,则这样的意图将在权利要求中明确陈述,并且在没有这样的陈述的情况下,不存在这样的意图。例如,为了有助于理解,所附权利要求书可以包含使用引导性短语“至少一个”和“一个或更多个”以引入权利要求陈述。然而,即使当同一权利要求包括引导性短语“一个或更多个”或“至少一个”以及不定冠词如“一”或“一个”时(例如,“一”和/或“一个”应当被解释为意指“至少一个”或“一个或更多个”),对这样的短语的使用也不应被解释为暗含由不定冠词“一”或“一个”引入的权利要求陈述将包含这样引入的权利要求陈述的任何特定权利要求限制为仅包含一个这样的陈述的实施方式;这同样适用于对用于引入权利要求陈述的定冠词的使用。
根据一般实践,附图中所示的各种特征可能未按比例绘制。本公开内容中给出的图示并不表示任何特定设备(例如,设备、系统等)或方法的实际视图,而仅仅是用于描述本公开内容的各种实施方式的理想化表示。因此,为了清楚起见,可以任意地扩大或缩小各个特征的尺寸。此外,为了清楚起见,可以简化一些附图。因而,附图可能没有描绘给定装置(例如,设备)的所有部件或特定方法的所有操作。
另外,如果意在特定数量的所引入的权利要求陈述,则这样的意图将在权利要求中明确陈述,并且在没有这样的陈述的情况下,不存在这样的意图。例如,为了有助于理解,所附权利要求书可以包含使用引导性短语“至少一个”和“一个或更多个”以引入权利要求陈述。
此外,即使明确地陈述了特定数量的引入的权利要求陈述,本领域技术人员也将认识到,这样的陈述应当被解释为意指至少所陈述的数量(例如,没有其他修饰语的无修饰叙述“两个陈述物”意指至少两个陈述物,或者两个或更多个陈述物)。此外,在那些使用类似于“A、B和C等中的至少一个”或者“A、B和C等中的一个或更多个”的惯例的情况下,通常这样的构造旨在包括单独的A、单独的B、单独的C、A和B一起、A和C一起、B和C一起或A、B和C一起等。
此外,无论是在说明书、权利要求书中还是在附图中,呈现两个或更多个替选术语的任何分隔词或短语都应被理解为考虑包括术语之一、术语中的任一个或所有术语的可能性。例如,短语“A或B”应被理解为包括“A”或“B”或“A和B”的可能性。
然而,即使当同一权利要求包括引导性短语“一个或更多个”或“至少一个”以及不定冠词如“一”或“一个”时(例如,“一”和/或“一个”应当被解释为意指“至少一个”或“一个或更多个”),对这样的短语的使用也不应被解释为暗含由不定冠词“一”或“一个”引入的权利要求陈述将包含这样引入的权利要求陈述的任何特定权利要求限制为仅包含一个这样的陈述的实施方式;这同样适用于对用于引入权利要求陈述的定冠词的使用。
另外,术语“第一”、“第二”、“第三”等的使用在本文中不一定用来暗示元件的特定顺序或特定数量。通常,术语“第一”、“第二”、“第三”等用于作为通用识别符来区分不同元素。在没有表明术语“第一”、“第二”、“第三”等暗指特定顺序的情况下,这些术语不应当被理解为暗指特定顺序。此外,在没有表明术语“第一”、“第二”、“第三”等暗示元件的特定数量的情况下,这些术语不应被理解为暗示元件的特定数量。例如,第一小部件可以被描述为具有第一侧,并且第二小部件可以被描述为具有第二侧。针对第二小部件使用术语“第二侧”可以用于将第二小部件的这样的侧与第一小部件的“第一侧”区分开,而不暗指第二小部件具有两个侧。
本公开内容中记载的所有示例和条件语言旨在用于教导目的以帮助读者理解本发明和发明人为了促进现有技术所贡献的构思,并且应当被解释为不限于这样的具体记载的示例和条件。尽管已经详细描述了本公开内容的实施方式,但是应当理解,在不脱离本公开内容的精神和范围的情况下,可以对其进行各种改变、替换和变更。
Claims (20)
1.一种由处理器执行的方法,包括:
接收作为代码生成工具的输出的文件,所述文件包括计算机可执行代码和与所述计算机可执行代码相关联的不可执行描述;
通过将所述计算机可执行代码的块转换成模块化代码块来修改所述计算机可执行代码;
根据所修改的计算机可执行代码和所述不可执行描述确定触发条件集;
将所述触发条件集与包括在修订规则集中的模板条件匹配;
基于所述匹配确定改变集,所述改变集适用于:
所修改的计算机可执行代码的一部分,以及
所述不可执行描述的一部分;
基于所述改变集来更新所修改的计算机可执行代码和所述不可执行描述;以及
生成指导型代码文件,所述指导型代码文件包括所更新的计算机可执行代码和所更新的不可执行描述。
2.根据权利要求1所述的方法,其中,所述代码生成工具是机器学习代码生成软件,所述机器学习代码生成软件在被执行时生成所述文件,并且其中,所述文件的所述计算机可执行代码与机器学习任务相关联。
3.根据权利要求1所述的方法,其中,所述不可执行描述对应于与所述计算机可执行代码的各个部分相关联的静态注释或注解。
4.根据权利要求1所述的方法,其中,所述触发条件集包括变量、关键字、函数调用、函数参数、修饰符、统一码文本和软件包名称中的一个或更多个。
5.根据权利要求1所述的方法,其中,通过将所述计算机可执行代码的块中的每个块的内容表示为以下各项中的至少一项来将所述计算机可执行代码的块转换成所述模块化代码块:
函数调用,
函数描述,或者
函数定义的一个或更多个参数。
6.根据权利要求1所述的方法,其中,所述修订规则集对应于包括作为关键字的所述模板条件和对应于所述关键字的值的模板文件。
7.根据权利要求6所述的方法,其中,确定所述改变集包括:
选择与所述触发条件集匹配的所述模板条件的子集,以及
执行搜索操作以识别与所述模板条件的子集对应的所述值的子集,以及
其中,所述改变集对应于所述值的子集,并且所述值的子集包括用于所修改的计算机可执行代码的所述模块化代码块的代码段或不可执行描述中的一个或更多个。
8.根据权利要求1所述的方法,还包括:
解析所修改的计算机可执行代码的行以生成抽象语法树;
通过处理所述抽象语法树的节点确定所述触发条件集的至少子集;以及
基于所述抽象语法树确定适用于所述模块化代码块和所述不可执行描述的所述改变集的子集,
其中,所述改变集的子集包括要被注入所述模块化代码块内部或外部的代码行,以及解释或描述所述代码行的文本描述。
9.根据权利要求1所述的方法,还包括:
从所修改的计算机可执行代码中选择代码行;
将包括在所选择的代码行中的所述触发条件集中的触发条件与所述模板条件匹配;以及
基于所述匹配确定所述改变集中的改变,其中,所述改变是以下操作之一:
用与所选择的代码行不同的一个或更多个代码行替换所选择的代码行的第一操作,
删除所选择的代码行的第二操作,
在所选择的代码行之前插入所述一个或更多个代码行的第三操作,
在所选择的代码行之后插入所述一个或更多个代码行的第四操作,以及
在所选择的代码行的开始或结束处附加所述一个或更多个代码行的第五操作。
10.根据权利要求1所述的方法,还包括:
搜索代码包以识别所述代码包中使用的应用编程接口调用;
从所述代码包中提取与所述应用编程接口调用相关的数据,其中,所提取的数据包括应用编程接口函数、与所述应用编程接口函数相关联的文档字符串、参数描述和统一资源定位符中的一个或更多个;
将所提取的数据汇总至与所述应用编程接口函数相关联的解释字符串集中;以及
基于所述解释字符串集生成所述修订规则集中的修订规则。
11.根据权利要求1所述的方法,其中,所述修订规则集包括人类生成的规则和机器生成的规则中的一个或更多个。
12.根据权利要求1所述的方法,还包括:
检索与一个或更多个在线编码竞赛相关联的多个指导型代码文件;
基于所述多个指导型代码文件的抽象语法树,确定在所述多个指导型代码文件中使用的函数集;
从所述多个指导型代码文件中提取与所述函数集相关的信息,其中,所述信息包括计算机可执行代码、解释和注释;
基于所提取的信息生成训练数据集;以及
基于所述训练数据集在序列到序列生成的任务上训练机器学习模型。
13.根据权利要求12所述的方法,还包括:
提供所修改的计算机可执行代码中的一个或更多个代码行作为经训练的机器学习模型的输入;
生成文本描述作为所述经训练的机器学习模型的针对所述输入的输出;以及
基于所生成的文本描述来更新所述改变集中的一个或更多个改变的内容。
14.根据权利要求1所述的方法,还包括:
用所更新的计算机可执行代码和所更新的不可执行描述来填充基线指导型代码模板以生成所述指导型代码文件;以及
控制显示设备以呈现所生成的指导型代码文件。
15.一种被配置成存储指令的非暂态计算机可读存储介质,所述指令响应于被执行而使系统执行操作,所述操作包括:
接收作为代码生成工具的输出的文件,所述文件包括计算机可执行代码和与所述计算机可执行代码相关联的不可执行描述;
通过将所述计算机可执行代码的块转换成模块化代码块来修改所述计算机可执行代码;
根据所修改的计算机可执行代码和所述不可执行描述确定触发条件集;
将所述触发条件集与包括在修订规则集中的模板条件匹配;
基于所述匹配确定改变集,所述改变集适用于:
所修改的计算机可执行代码的一部分,以及
所述不可执行描述的一部分;
基于所述改变集来更新所修改的计算机可执行代码和所述不可执行描述;以及
生成指导型代码文件,所述指导型代码文件包括所更新的计算机可执行代码和所更新的不可执行描述。
16.根据权利要求15所述的非暂态计算机可读存储介质,其中,所述一个或更多个修订规则对应于包括作为关键字的所述模板条件和对应于所述关键字的值的模板文件。
17.根据权利要求16所述的非暂态计算机可读存储介质,其中,确定所述改变集包括:
选择与所述触发条件集匹配的所述模板条件的子集,以及
执行搜索操作以识别与所述模板条件的子集对应的所述值的子集,
其中,所述改变集对应于所述值的子集,并且所述值的子集包括用于所修改的计算机可执行代码的所述模块化代码块的代码段或不可执行描述中的一个或更多个。
18.根据权利要求15所述的非暂态计算机可读存储介质,其中,所述操作包括:
解析所修改的计算机可执行代码的行以生成抽象语法树;
通过处理所述抽象语法树的节点确定所述触发条件集的至少子集;以及
基于所述抽象语法树确定适用于所述模块化代码块和所述不可执行描述的所述改变集的子集,
其中,所述改变集的子集包括:
要被注入所述模块化代码块内部或外部的代码行,以及
解释或描述所述代码行的文本描述。
19.根据权利要求15所述的非暂态计算机可读存储介质,其中,所述操作包括:
从所修改的计算机可执行代码中选择代码行;
将包括在所选择的代码行中的所述触发条件集中的触发条件与所述模板条件匹配;以及
基于所述匹配确定所述改变集中的改变,其中,所述改变是以下操作之一:
用与所选择的代码行不同的一个或更多个代码行替换所选择的代码行的第一操作,
删除所选择的代码行的第二操作,
在所选择的代码行之前插入所述一个或更多个代码行的第三操作;
在所选择的代码行之后插入所述一个或更多个代码行的第四操作;以及
在所选择的代码行的开始或结束处附加所述一个或更多个代码行的第五操作。
20.一种系统,包括:
处理器,所述处理器被配置成:
接收作为代码生成工具的输出的文件,所述文件包括计算机可执行代码和与所述计算机可执行代码相关联的不可执行描述;
通过将所述计算机可执行代码的块转换成模块化代码块来修改所述计算机可执行代码;
根据所修改的计算机可执行代码和所述不可执行描述确定触发条件集;
将所述触发条件集与包括在修订规则集中的模板条件匹配;
基于所述匹配确定改变集,所述改变集适用于:
所修改的计算机可执行代码的一部分,以及
所述不可执行描述的一部分;
基于所述改变集来更新所修改的计算机可执行代码和所述不可执行描述;以及
生成指导型代码文件,所述指导型代码文件包括所更新的计算机可执行代码和所更新的不可执行描述。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/657,601 | 2022-03-31 | ||
US17/657,601 US20230315442A1 (en) | 2022-03-31 | 2022-03-31 | Enriching code for code explainability |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116893809A true CN116893809A (zh) | 2023-10-17 |
Family
ID=85150677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310195540.9A Pending CN116893809A (zh) | 2022-03-31 | 2023-02-24 | 用于代码可解释性的代码富集的方法、存储介质和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230315442A1 (zh) |
EP (1) | EP4254175A1 (zh) |
JP (1) | JP2023152843A (zh) |
CN (1) | CN116893809A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573140B (zh) * | 2024-01-16 | 2024-04-02 | 成都安世赛斯特软件技术有限公司 | 一种通过扫描代码生成文档的方法、系统及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7831608B2 (en) * | 2008-02-28 | 2010-11-09 | International Business Machines Corporation | Service identification in legacy source code using structured and unstructured analyses |
US9043758B2 (en) * | 2013-03-15 | 2015-05-26 | International Business Machines Corporation | System for generating readable and meaningful descriptions of stream processing source code |
US9436446B1 (en) * | 2015-11-16 | 2016-09-06 | International Business Machines Corporation | System for automating calculation of a comprehensibility score for a software program |
US10048945B1 (en) * | 2017-05-25 | 2018-08-14 | Devfactory Fz-Llc | Library suggestion engine |
US10732966B2 (en) * | 2017-09-08 | 2020-08-04 | Devfactory Innovations Fz-Llc | Library model addition |
US10114624B1 (en) * | 2017-10-12 | 2018-10-30 | Devfactory Fz-Llc | Blackbox matching engine |
US11238306B2 (en) * | 2018-09-27 | 2022-02-01 | International Business Machines Corporation | Generating vector representations of code capturing semantic similarity |
US11269601B2 (en) * | 2019-06-27 | 2022-03-08 | Intel Corporation | Internet-based machine programming |
US20210318865A1 (en) * | 2020-04-09 | 2021-10-14 | Capital One Services, Llc | Methods and arrangements to process comments |
US11327722B1 (en) * | 2020-12-09 | 2022-05-10 | Fujitsu Limited | Programming language corpus generation |
US12019992B2 (en) * | 2021-09-24 | 2024-06-25 | Fujitsu Limited | Code enrichment for training language models relating to computer programming |
US11726750B1 (en) * | 2021-11-17 | 2023-08-15 | Outsystems—Software Em Rede, S.A. | Constrained decoding and ranking of language models for code generation |
-
2022
- 2022-03-31 US US17/657,601 patent/US20230315442A1/en active Pending
-
2023
- 2023-01-31 EP EP23154147.5A patent/EP4254175A1/en active Pending
- 2023-02-24 CN CN202310195540.9A patent/CN116893809A/zh active Pending
- 2023-03-22 JP JP2023045218A patent/JP2023152843A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023152843A (ja) | 2023-10-17 |
EP4254175A1 (en) | 2023-10-04 |
US20230315442A1 (en) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111708539B (zh) | 一种应用程序代码转换方法、装置、电子设备和存储介质 | |
CN107924483B (zh) | 通用假设排序模型的生成与应用 | |
US9619291B2 (en) | System and method for a task management library to execute map-reduce applications in a map-reduce framework | |
CN116860949B (zh) | 问答处理方法、装置、系统、计算设备及计算机存储介质 | |
US20080221870A1 (en) | System and method for revising natural language parse trees | |
CN112148356A (zh) | 文档生成方法、接口开发方法、装置、服务器及存储介质 | |
CN111508502A (zh) | 使用多标记结构的转录纠正 | |
CN116893809A (zh) | 用于代码可解释性的代码富集的方法、存储介质和系统 | |
CN115237805A (zh) | 测试案例数据准备方法及装置 | |
CN113656763A (zh) | 确定小程序特征向量的方法、装置和电子设备 | |
CN104536769A (zh) | 一种国际化文档实现方法 | |
JP2022025013A (ja) | 研究論文に関連付けられたマルチモーダルオンラインリソースの抽出 | |
US7657869B2 (en) | Integration of external tools into an existing design environment | |
CN112527272A (zh) | 对接tvm的方法及相关设备 | |
US20230096325A1 (en) | Deep parameter learning for code synthesis | |
CN111898762B (zh) | 深度学习模型目录创建 | |
US20150324333A1 (en) | Systems and methods for automatically generating hyperlinks | |
US20240283820A1 (en) | Automated machine learning using large language models | |
CN117971308A (zh) | 接口文档生成方法、装置、存储介质及计算机设备 | |
CN112162746B (zh) | 一种基于网络知识汇聚和迭代式搜索的程序自动构造方法 | |
KR20080018025A (ko) | 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체 | |
CN118012502A (zh) | 一种基于知识库的少样本多步提示的llm前端框架迁移方法 | |
Hall | A New Human-Readability Infrastructure for Computing | |
CN116992831A (zh) | 语句处理方法及装置 | |
CN117369824A (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 |