IP Library Granted Patent US 11,960,867
Granted Patent B1
US 11,960,867 · App. 18/198,674 · Granted Apr 16, 2024

Using natural language latent representation in automated conversion of source code from base programming language to target programming language

Inventors: Rishabh Singh (San Jose, CA); Hanjun Dai (San Jose, CA); Manzil Zaheer (Mountain View, CA); Artem Goncharuk (Mountain View, CA); Karen Davis (Portola Valley, CA); David Andre (San Francisco, CA)
Assignee: GOOGLE LLC
G06F8/436G06F40/279G06F40/40G06N3/08G06N7/01
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,960,867
App. No.
18/198,674
Granted
Apr 16, 2024
Kind
B1
Abstract

Using a natural language (NL) latent presentation in the automated conversion of source code from a base programming language (e.g., C++) to a target programming language (e.g., Python). A base-to-NL model can be used to generate an NL latent representation by processing a base source code snippet in the base programming language. Further, an NL-to-target model can be used to generate a target source code snippet in the target programming language (that is functionally equivalent to the base source code snippet), by processing the NL latent representation. In some implementations, output(s) from the NL-to-target model indicate canonical representation(s) of variables, and in generating the target source code snippet, technique(s) are used to match those canonical representation(s) to variable(s) of the base source code snippet. In some implementations, multiple candidate target source code snippets are generated, and a subset (e.g., one) is selected based on evaluation(s).

Claims (62)

1. A method implemented by one or more processors, the method comprising:

identifying a base natural language description that is descriptive of a base source code snippet that is programmed in a base higher-level programming language;

processing the natural language description, using a neural network model, to generate a sequence of outputs that each comprise a corresponding probability distribution;

generating, based on the corresponding probability distributions of second outputs: a predicted target source code snippet that is in a target higher-level programming language that differs from the base higher-level programming language, and an additional predicted target source code snippet that is in the target higher-level programming language and that includes one or more portions that differ from the predicted target source code snippet;

evaluating the predicted target source code snippet and evaluating the additional predicted target source code snippet;

selecting, based on the evaluations, the additional predicted target source code snippet over the predicted target source code snippet; and

responsive to selecting the additional predicted target source code snippet:

causing the additional predicted target source code snippet to be rendered as output of a software development application,

wherein the predicted source code snippet is not rendered as output of the software development application.

2. The method of claim 1 , wherein the predicted target source code snippet is generated based on highest probabilities in the corresponding probability distributions of the sequence of outputs.

3. The method of claim 2 , wherein the additional predicted target source code snippet is generated based on one or more non-highest probabilities in the corresponding probability distributions of the second outputs.

4. The method of claim 1 , further comprising:

identifying the base source code snippet;

executing the base source code snippet to generate a base source code output; wherein evaluating the additional predicted target source code snippet comprises:

executing the additional target source code snippet to generate an additional target source code output, and

determining that the base source code output matches the additional target source code output; and

wherein evaluating the predicted target source code snippet comprises:

executing the predicted target source code snippet to generate a target source code output; and

determining that the base source code output fails to match the predicted target source code output.

5. The method of claim 4 , wherein generating the additional predicted target source code snippet is performed in response to determining that the base source code output fails to match the predicted target source code output.

6. The method of claim 4 , wherein evaluating the additional predicted target source code snippet is performed in response to determining that the base source code output fails to match the predicted target source code output.

7. The method of claim 1 ,

wherein evaluating the additional predicted target source code snippet comprises:

analyzing the additional predicted target source code snippet with respect to a syntax for the target higher-level programming language, and

determining that the additional predicted target source code snippet conforms to the syntax; and

wherein evaluating the predicted target source code snippet comprises:

analyzing the predicted target source code language with respect to the syntax;

and

determining that the predicted target source code snippet fails to conform to the syntax.

8. The method of claim 7 , wherein generating the additional predicted target source code snippet is performed in response to determining that the predicted target source code snippet fails to conform to the syntax.

9. The method of claim 7 , wherein evaluating the additional predicted target source code snippet is performed in response to determining that the predicted target source code snippet fails to conform to the syntax.

10. The method of claim 1 , further comprising:

identifying the base source code snippet;

generating, based on processing the base source code snippet using an additional neural network model, a base embedding of the base source code snippet;

generating, based on processing the additional predicted target source code snippet using the additional neural network model, an additional target embedding of the additional predicted target source code snippet; and

generating, based on processing the predicted target source code snippet using the additional neural network model, a target embedding of the additional predicted target source code snippet;

wherein evaluating the predicted target source code snippet and the additional predicted target source code snippet comprises:

determining that the additional target embedding is closer, in embedding space, to the base embedding than is the target embedding to the base embedding.

11. The method of claim 1 , wherein the neural network model comprises a transformer.

12. A method implemented by one or more processors, the method comprising:

identifying, from a repository, a target source code snippet that is programmed in a base programming language;

identifying, from the repository, a base document string for the base source code snippet;

generating multiple training instances based on the base source code snippet and the base document string, wherein each of the training instances differs from all other of the training instances and each includes corresponding training instance input that is based on the base document string and corresponding training instance output that is based on the base source code snippet;

using the training instances to train a neural network model for use in generating natural language based on base source code.

13. The method of claim 12 , wherein generating the multiple training instances comprises:

generating a first training instance with first training instance output that conforms strictly to the base document string, and with first training instance input that conforms strictly to the base source code or is the base source code with any variables replaced with a corresponding canonical representation; and

generating a second training instance with second training instance output that omits one or more words of the base document string, and with second training instance input that conforms strictly to the first training instance output.

14. The method of claim 12 , wherein generating the multiple training instances comprises:

generating a first training instance with first training instance output that conforms strictly to the base document string, and with first training instance input that conforms strictly to the base source code or is the base source code with any variables replaced with a corresponding canonical representation; and

generating a second training instance, with second training instance output that replaces a word, of the base document string, that matches a first data type with an alternate word that matches a second data type, and with second training instance input that includes a modification of the base source code that replaces, in the base source code, a term that matches the data type with an alternate term that matches the second data type.

15. The method of claim 12 , wherein generating the multiple training instances comprises:

generating a first training instance with first training instance input that replaces a term of the base source code, that corresponds to a variable, with a first alternate term; and

generating a second training instance with second training instance input that replaces a term of the base source code, that corresponds to a variable, with a second alternate term.

16. The method of claim 15 ,

wherein generating the first training instance further comprises generating a first training instance output, of the first training instances, that replaces any occurrences of the term, in the base document string, with the first alternate term; and

wherein generating the second training instance further comprises generating a second training instance output, of the second training instance, that replaces any occurrences of the term, in the base document string, with the second alternate term.

17. The method of claim 12 , wherein generating the multiple training instances comprises:

generating a first training instance with first training instance output that replaces a term of the base document string with a synonym; and

generating a second training instance with second training instance output that includes the term, or that replaces the term with an alternate synonym.

18. The method of claim 12 , further comparing, subsequent to using the training instances to train the neural network model:

processing, using the neural network model, a given base source code snippet; and

generating, based on processing the given base source code snippet, a given natural language description of the base source code snippet.

Assignments (3)
NUNC PRO TUNC ASSIGNMENT Recorded Mar 6, 2024
From: X DEVELOPMENT LLC
To: GOOGLE LLC
Reel/Frame 066669/0491 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2023
From: SINGH, RISHABH; DAI, HANJUN; ZAHEER, MANZIL; GONCHARUK, ARTEM; DAVIS, KAREN; ANDRE, DAVID
To: X DEVELOPMENT LLC
Reel/Frame 063718/0264 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2023
From: X DEVELOPMENT LLC
To: GOOGLE LLC
Reel/Frame 063718/0273 →
Continuity (2)
Continuation 17319739 · May 13, 2021
Provisional Application 63025816 · May 15, 2020
Cited By (5)
US 12,585,435 US 12,625,680 US 12,645,429 US 12,650,836 US 12,699,556