Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claims 1-20 are presented for examination.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim(s) 1-10, and 12-20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Dhoolia (US 8806452 B2) in view of Panchal (US 11449686 B1) further in view of Chen (US20240020096A1).
Regarding Claim 1, Dhoolia (US 8806452 B2) teaches
A method comprising:
receiving a code portion of a first programming language (Col 8: ln 57-65, At step 704, a request to translate a first program in a first programming language to a second program in a second programming language is received) Examiner Comments: This passage indicates that Dhoolia receives a program (code portion) in a first language for translation;
converting the code portion to a second programming language (Col 9: ln 5-11, The first program is transformed to the second program by eliminating errors using a predefined criterion. For transforming, the first program is first parsed and the parsed first program is then translated) Examiner Comments: This passage shows that Dhoolia converts (transforms/translates) the first program to a second program in another language;
calculating a first accuracy of the converting of the code portion to the second programming language (Col 1: ln 49-60, The errors in the target program can be easily identified while analyzing; Col 5: ln 20-34, Translator 110 can throw a translation exception, if any translation errors are identified while translating parsed first program 102. The translation exception is defined as an interrupt in normal processing, when an error condition occurs while translating a parsed computer program. The identified translation errors are then handled automatically using a predefined translation method) Examiner Comments: This passage shows calculating translation accuracy by identifying errors or exceptions in the converted code, indicating the quality (accuracy) of the conversion;
detecting execution errors in the code portion of the first programming language [based on the difference between the first accuracy and the historical accuracy being greater than a predetermined value] (Col 9: ln 34-46, method 700 maps one or more statements in second program 104 with one or more statements in first program 102 and vice versa. In the embodiment, second program 104 can then be analyzed for faults and errors, thus one or more errors can be identified in the second program based on the analysis. Thereafter, method 700 can determine a section of a program in first program 102 that corresponds to statements including the one or more errors in second program 104. In an embodiment, the section of the program is identified based on the mapping performed between first program 102 and second program 104. Mapping is performed using a look-up table. The lookup table maps a statement of the first program with a corresponding statement of the second program) Examiner Comments: This passage shows that Dhoolia indicates potential errors in the original code portion by analyzing errors in the converted code and mapping back to the origin in the first program.
Dhoolia did not specifically teach
determining a difference between the first accuracy and an historical accuracy of a conversion from the first programming language to the second programming language;
based on the difference between the first accuracy and the historical accuracy being greater than a predetermined value
providing an indication of the execution errors in the code portion to a machine learning model
wherein the machine learning model is further trained by disregarding the code portion during training to improve translation accuracy for subsequent conversions.
However, Panchal (US 11449686 B1) teaches
determining a difference between the first accuracy and an historical accuracy of a conversion from the first programming language to the second programming language (Col 8: ln 1-30, The translation memory may store historical translation data 228, such as machine translations (edited and/or unedited by human operators), data indicating language pairs used in respective translations, attribute information, content type information for translations, and scores indicating how accurate a translation was (e.g., based on a comparison with one or more reference documents of a given language; Col 10: ln 30-55, At block 316, the system may determine whether the translation score of the second content exceeds a threshold score, which may be adjusted based on whether content of the content type and/or having the attribute(s) was scored as accurate in previous translations) Examiner Comments: This passage shows that Panchal determines a difference by comparing a current translation score (accuracy) to a historical threshold adjusted based on previous (historical) accuracy scores from translation memory
based on the difference between the first accuracy and the historical accuracy being greater than a predetermined value (Col 10: ln 30-55, When the translation score fails to exceed a score threshold, the system may proceed to block 318, where the system may select a translation protocol in which the system translated the content using a machine translation and prompts a human operator review; Col 3: 39-49, A low score (e.g., 1) may indicate that a translation has nothing to do with the source (e.g., the content requested to be translated), and a high score (e.g., 6) may indicate that a machine-based translation is perfect) Examiner Comments: This passage shows that Panchal indicates a potential error (low quality/accuracy requiring review) if the current accuracy differs from historical by failing to exceed a predetermined threshold based on past accuracies.
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention to have combined Dhoolia’s teaching of code translation error detection to include Panchal’s comparison of translation accuracy to historical accuracy thresholds, in order to automatically assess whether the conversion is reliable relative to past conversions, thereby identifying when errors are likely in the original input rather than the translation process itself, improving efficiency in error localization as both references aim to enhance translation reliability through evaluation (Panchal [Summary]).
Dhoolia and Panchal did not specifically teach
providing an indication of the execution errors in the code portion to a machine learning model
wherein the machine learning model is further trained by disregarding the code portion during training to improve translation accuracy for subsequent conversions.
However, Chen (US20240020096A1) teaches
providing an indication of the execution errors in the code portion to a machine learning model (Para [0055],"based on the executing of two computer code samples generated by the machine learning model, a first executed computer code sample may be found to cause a result that does not correspond to (e.g., does not meet a tolerance threshold value) the result indicated by the natural language input, and a second executed computer code sample may be found to cause a result that does correspond to (e.g., meets tolerance threshold value) the result desired based on the natural language input. In such a scenario, the second computer code sample may be identified while the first computer code sample may be disregarded or discarded.") Examiner Comments: Chen explicitly identifies (provides indication of) execution errors/failures in code samples and feeds this back to the model. The "code portion" maps to the input/prompt that produced the bad sample.
wherein the machine learning model is further trained by disregarding the code portion during training to improve translation accuracy for subsequent conversions (Para [0111], "training a machine learning model used for generating computer code based on natural language input using training data comprising the outputted at least one identified docstring in association with the at least a portion of the one or more computer code samples … the method may allow for the docstring generation model to generate additional training data for another machine learning model, causing the machine learning model to become more accurate as a result of auto-generated training data"; para [0055] "In such a scenario, the second computer code sample may be identified while the first computer code sample may be disregarded or discarded”) Examiner Comments: One-to-one match; Chen trains the generative model (for code translation/generation) by explicitly disregarding bad/erroneous samples (those failing execution checks) and using only good ones, directly improving subsequent accuracy.
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention to have combined Dhoolia and Panchal’s teaching to Chen’s in order to enable continuous, self-improving model training by automatically filtering out low-quality or erroneous data (from either original buggy code or failed translations), thereby increasing overall translation accuracy and reliability in production code migration system, as Chen teaches to solve the same technical problem of improving generative code models without external data (Chen para. [0090] and [0111]).
Regarding Claim 2, Dhoolia, Panchal and Chen teach
The method of claim 1, wherein calculating the first accuracy of the converting of the code portion to the second programming language further comprises: calculating a first code structure representation of the code portion of the first programming language (Dhoolia [Col 6: ln 32-37, Referring to FIG. 3, list of tokens 208 are analyzed by parser 108 and an AST 302 is generated. AST 302 is a grammatical data structure and defines relationships between each token in list of tokens 208]) Examiner Comments: This passage shows that Dhoolia calculates a code structure representation (AST) for the original code portion;
calculating a second code structure representation of the converted code portion of the second programming language (Dhoolia [Col 1: ln 37-48, The translator translates the parsed source program to the target program]) Examiner Comments: The translated program implies a corresponding structure for analysis and mapping
and calculating the first accuracy based on a comparison of the first code structure representation to the second code structure representation (Dhoolia [Col 9: ln34-47, method 700 maps one or more statements in second program 104 with one or more statements in first program 102 and vice versa … Mapping is performed using a look-up table. The lookup table maps a statement of the first program with a corresponding statement of the second program]) Examiner Comments: Dhoolia calculates accuracy (error-free mapping) by comparing structures/statements between original and converted code.
Regarding Claim 3, Dhoolia, Panchal and Chen teach
The method of claim 2, wherein calculating the first code structure representation of the code portion of the first programming language further comprises calculating the first code structure representation of the code portion of the first programming language based on one or more software metrics (Dhoolia [Col 6: ln 32-38, AST 302 is generated based on grammar rules defined in parser 108. The grammar rules defined in parser 108 can be a context-free grammar or an attribute grammar; Col 6: ln 39-47, The assignment statement is identified based on the assignment operator (`=`). The assignment statement is defined as "identifier=expression"]) Examiner Comments: This passage shows that Dhoolia uses software metrics like grammar rules and syntactic definitions to calculate the structure representation (AST).
Regarding Claim 4, Dhoolia, Panchal and Chen teach
The method of claim 3, wherein calculating the second code structure representation of the converted code portion of the second programming language further comprises calculating the second code structure representation of the converted code portion of the second programming language based on the one or more software metrics (Dhoolia [ Col 9: ln 34-48, Mapping is performed using a look-up table. The lookup table maps a statement of the first program with a corresponding statement of the second program]) Examiner Comments: This passage implies the use of same metrics for converted code analysis as Dhoolia applies the same mapping and structural analysis metrics to the converted code.
Regarding Claim 5, Dhoolia, Panchal and Chen teach
The method of claim 4, wherein the one or more software metrics include code complexity metrics (Dhoolia [Col 6: ln 39-48, The binary expression can include literals, numbers or identifier, and operators; Col 7: 4-17, In the use and define concept, variables of an expression are annotated with define annotation if they are defined (or calculated) in the expression using one or more variables and literals]) Examiner Comments: This passage shows that Dhoolia uses complexity metrics like expression operators and variable definitions in AST.
Regarding Claim 6, Dhoolia, Panchal and Chen teach
The method of claim 3.
Dhoolia and Panchal did not teach
wherein calculating the first code structure representation of the code portion of the first programming language based on one or more software metrics further comprises calculating the first code structure representation of the code portion of the first programming language based on a weighted combination of a plurality of the one or more software metrics.
However, Chen (US 20240020096 A1) teaches
wherein calculating the first code structure representation of the code portion of the first programming language based on one or more software metrics further comprises calculating the first code structure representation of the code portion of the first programming language based on a weighted combination of a plurality of the one or more software metrics (Para 0046, The present disclosure further improves machine learning model performance by providing methods and systems for fine-tuning trained machine learning models based on known correctly implemented functions, known associations, and other known data; Para 0073, Consistent with some disclosed embodiments, identifying at least one of the computer code samples may further be based on a mean-log probability. A mean-log probability, as used herein, may refer to a value calculated by determining the logarithm of each predicted probability associated with a particular computer code sample (or other output provided by the machine learning model) and then calculating the average across all predictions) Examiner Comments: Chen uses weighted combinations like mean-log probability (averaging/weighting metrics) for code structure evaluation.
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention to have combined Dhoolia and Panchal’s to Chen’s in order to incorporate weighted metrics in code structure calculation to improve accuracy in evaluating code representation by balancing multiple metrics, as Chen enhances model performance through fine-tune weighting (Chen [0046]). Chen further allows generating computer code based on natural language input or generating natural language based on computer code input, by outputting identified computer code sample and natural language text associated with identified computer code sample via user interface (Chen [Summary]).
Regarding Claim 7, Dhoolia, Panchal and Chen teach
The method of claim 1.
Dhoolia did not specifically teach
further comprising: determining the historical accuracy based on an accuracy of at least one previous conversion of another code portion from the first programming language to the second programming language.
However, Panchal teaches
further comprising: determining the historical accuracy based on an accuracy of at least one previous conversion of another code portion from the first programming language to the second programming language (Col 8: ln 1-31, The translation memory may store historical translation data 228, such as machine translations (edited and/or unedited by human operators), data indicating language pairs used in respective translations, attribute information, content type information for translations, and scores indicating how accurate a translation was (e.g., based on a comparison with one or more reference documents of a given language)) Examiner Comments: Panchal determines historical accuracy from scores of previous translation in the memory.
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention to have combined Dhoolia’s teaching of code translation error detection to include Panchal’s comparison of translation accuracy to historical accuracy thresholds, in order to automatically assess whether the conversion is reliable relative to past conversions, thereby identifying when errors are likely in the original input rather than the translation process itself, improving efficiency in error localization as both references aim to enhance translation reliability through evaluation (Panchal [Summary]).
Regarding Claim 8, Dhoolia, Panchal and Chen teach
The method of claim 1.
Dhoolia and Panchal did not teach
wherein converting the code portion to a second programming language comprises converting the code portion to a second programming language using a generative artificial intelligence model.
However, Chen (US 20240020096 A1) teaches
wherein converting the code portion to a second programming language comprises converting the code portion to a second programming language using a generative artificial intelligence model (Para 0049, method for generating computer code based on natural language input may comprise receiving a docstring representing natural language text specifying a result; Para 0050, generating, using a trained machine-learning model, and based on the docstring, one or more computer code samples configured to produce respective candidate results; Para 0114, Example tasks include … translation (e.g., translating code comments and documentation into multiple languages) Examiner Comments: Chen uses generative AI model to convert/translate code based on input.
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention to have combined Dhoolia and Panchal’s to Chen’s in order to incorporate weighted metrics in code structure calculation to improve accuracy in evaluating code representation by balancing multiple metrics, as Chen enhances model performance through fine-tune weighting (Chen [0046]). Chen further allows generating computer code based on natural language input or generating natural language based on computer code input, by outputting identified computer code sample and natural language text associated with identified computer code sample via user interface (Chen [Summary]).
Regarding Claim 9, Dhoolia, Panchal and Chen teach
The method of claim 8.
Dhoolia and Panchal did not teach
wherein the generative artificial intelligence model comprises a large language model.
However, Chen teaches
wherein the generative artificial intelligence model comprises a large language model (Para 0071, A transformer decoder architecture, as used herein, may refer to a machine learning architecture comprising an encoder and a decoder, both of which are built on a self-attention mechanism; Para 0024, the trained machine learning model may have between 10 billion and 14 billion parameters; Para 0139, GPT (Generative Pre-trained Transformer) model (or other autoregressive model)) Examiner Comments: Chen explicitly uses large language models like GPT with billions of parameters for code generation/translation.
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention to have combined Dhoolia and Panchal’s to Chen’s in order to incorporate weighted metrics in code structure calculation to improve accuracy in evaluating code representation by balancing multiple metrics, as Chen enhances model performance through fine-tune weighting (Chen [0046]). Chen further allows generating computer code based on natural language input or generating natural language based on computer code input, by outputting identified computer code sample and natural language text associated with identified computer code sample via user interface (Chen [Summary]).
Regarding Claim 10, Dhoolia, Panchal and Chen teach
The method of claim 8.
Dhoolia and Panchal did not teach
wherein detecting execution error in the code portion based on the difference between the first accuracy and the historical accuracy being greater than a predetermined value further comprises providing an indication of the execution error to the generative artificial intelligence model.
However, Chen teaches
wherein indicating the potential error in the code portion based on the difference between the first accuracy and the historical accuracy being greater than a predetermined value further comprises providing an indication of the potential error in the code portion to the generative artificial intelligence model (Para 0007, the trained machine learning model may be fine-tuned based on verified computer code samples; Para 0046, The present disclosure further improves machine learning model performance by providing methods and systems for fine-tuning trained machine learning models based on known correctly implemented functions, known associations, and other known data; Para 0070, the trained machine learning model may further be trained using an execution result of the causing of each of the one or more computer code samples to be executed. For example, the execution result(s) of the causing of each of the one or more computer code samples to be executed may serve as additional training data to the machine learning model) Examiner Comments: Chen provides error/accuracy indications (via verification) back to the model for fine-tuning.
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention to have combined Dhoolia and Panchal’s to Chen’s in order to incorporate weighted metrics in code structure calculation to improve accuracy in evaluating code representation by balancing multiple metrics, as Chen enhances model performance through fine-tune weighting (Chen [0046]). Chen further allows generating computer code based on natural language input or generating natural language based on computer code input, by outputting identified computer code sample and natural language text associated with identified computer code sample via user interface (Chen [Summary]).
Regarding Claim 12, is an apparatus claim corresponding to the method claim above (Claim 1) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 1.
Regarding Claim 13, is an apparatus claim corresponding to the method claim above (Claim 2) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 2.
Regarding Claim 14, is an apparatus claim corresponding to the method claim above (Claim 3) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 3.
Regarding Claim 15, is an apparatus claim corresponding to the method claim above (Claim 4) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 4.
Regarding Claim 16, is an apparatus claim corresponding to the method claim above (Claim 5) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 5.
Regarding Claim 17, is a computer program claim corresponding to the method claim above (Claim 1) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 1.
Regarding Claim 18, is a computer program claim corresponding to the method claim above (Claim 2) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 2.
Regarding Claim 19, is a computer program claim corresponding to the method claim above (Claim 3) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 3.
Regarding Claim 20, is a computer program claim corresponding to the method claim above (Claim 4) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 4.
Claim(s) 11 is/are rejected under 35 U.S.C. 103 as being unpatentable over Dhoolia (US 8806452 B2) in view of Panchal (US 11449686 B1) and Chen (US20240020096A1) further in view of McAtamney (US 8533690 B2).
Regarding Claim 11, Dhoolia, Panchal and Chen teach
The method of claim 1, further comprising: determining that the converted code portion is [unexecutable] (Dhoolia [Col 1: ln 49-60, The errors in the target program can be easily identified while analyzing, however it is difficult for the user to identify the actual origin/source of the errors. Hence, if the error has occurred due to the error present in the source program then in such a scenario, the user have to identify the errors in the source program by manually analyzing the source program and the target program simultaneously]) Examiner Comments: Dhoolia analyzes the converted (target) program post-translation to identify faults and errors, which would render the code unexecutable if present (e.g logical or runtime faults preventing execution).
Dhoolia did not specifically teach
determining that the difference between the first accuracy and the historical accuracy is less than the predetermined value;
and indicating that the converted code portion is unexecutable.
However, Panchal teaches
determining that the difference between the first accuracy and the historical accuracy is less than the predetermined value (Col 10: ln 56-60, When the translation score exceeds the score threshold, the system may, at block 320, use a translation protocol relying on the machine translation from block 308 as the output translation to the requester; Col 10: ln 30-55, the translation score … may be adjusted based on whether content of the content type and/or having the attribute(s) was scored as accurate in previous translations) Examiner Comments: Panchal determines the current translation accuracy is sufficiently close to historical accuracy (difference less than predetermined threshold) when the score exceeds the adjusted threshold based on past translations, indicating a reliable conversion without need for review.
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention to have combined Dhoolia’s teaching of code translation error detection to include Panchal’s comparison of translation accuracy to historical accuracy thresholds, in order to automatically assess whether the conversion is reliable relative to past conversions, thereby identifying when errors are likely in the original input rather than the translation process itself, improving efficiency in error localization as both references aim to enhance translation reliability through evaluation (Panchal [Summary]).
Dhoolia, Panchal and Chen did not specifically teach
determining … the code … unexecutable
and indicating that the converted code portion is unexecutable.
However, McAtamney (US 8533690 B2) teaches
determining … the code … unexecutable (Col 7: ln 45-51, Finally, any minor syntax errors left by previous layers of translation are removed at 26 and the resulting code is formatted to a more human-readable state at 27 … The code is then written to a Java file at 28 and is ready for compilation or further coding) Examiner comments: McAtamney scans and identifies (determines) minor syntax errors in the converted java code post-translation, which would make the code uncompilable and thus unexecutable if not addressed
and indicating that the converted code portion is unexecutable (Claim 9, wherein: any minor syntax errors left by previous layers of translation are removed following the second pass translation and prior to re-formatting) Examiner Comments: Implied indication via error removal process, as the system must detect and log/handle these errors to remove them, ensuring the code is “ready for compilation” only after correction.
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention to have combined Dhoolia and Panchal’s teaching to McAtamney’s by incorporating McAtamney’s post-translation syntax error detection and handling in the converted code into Dhoolia and Panchal’s translation accuracy evaluation for doing so would be to ensure the converted code is compliable and executable even when translation accuracy is high (as per Panchal’s threshold), by explicitly identifying and addressing residual syntax errors in the target code that could precent execution, thereby improving overall code migration reliability and reducing post-deployment failures (McAtamney [Summary]).
Response to Arguments
Applicant’s arguments with respect to claims 1-20 have been considered but are moot because the arguments do not apply to the previous cited sections of the references used in the previous office action. The current office action is now citing additional references to address the newly added claimed limitations.
Conclusion
THIS ACTION IS MADE FINAL. Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to AMIR SOLTANZADEH whose telephone number is (571)272-3451. The examiner can normally be reached M-F, 9am - 5pm ET.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Wei Mui can be reached at (571) 272-3708. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/AMIR SOLTANZADEH/Examiner, Art Unit 2191 /WEI Y MUI/Supervisory Patent Examiner, Art Unit 2191