IP Library Granted Patent US 11,775,271
Granted Patent B1
US 11,775,271 · App. 17/316,331 · Granted Oct 3, 2023

Annotations for developers

Inventors: Rishabh Singh (Mountain View, CA); Artem Goncharuk (Mountain View, CA); Karen Davis (Portola Valley, CA); David Andre (San Francisco, CA)
Assignee: GOOGLE LLC
G06F8/51G06N3/04G06N3/08
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,775,271
App. No.
17/316,331
Granted
Oct 3, 2023
Kind
B1
Abstract

Techniques are described herein for translating source code in one programming language to source code in another programming language using machine learning. A method includes: receiving first source code in a first higher-level programming language; processing the first source code, or an intermediate representation thereof, using a sequence-to-sequence neural network model to generate a sequence of outputs, each including a probability distribution; generating second source code in a second higher-level programming language by, for each output in the sequence of outputs: determining a highest probability in the probability distribution associated with the output; in response to the highest probability exceeding a first threshold, generating a predicted portion of the second source code based on a token that corresponds to the highest probability; and in response to the highest probability not exceeding the first threshold, generating a placeholder; and outputting the second source code.

Claims (87)

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

receiving first source code in a first higher-level programming language;

processing the first source code, or an intermediate representation of the first source code, using a sequence-to-sequence neural network model to generate a sequence of outputs, wherein each output in the sequence of outputs comprises a probability distribution that includes a probability corresponding to each of a plurality of tokens;

generating second source code in a second higher-level programming language by, for each output in the sequence of outputs:

determining a highest probability in the probability distribution associated with the output;

in response to the highest probability exceeding a first threshold, generating a predicted portion of the second source code based on a token of the plurality of tokens that corresponds to the highest probability, wherein in response to the highest probability exceeding the first threshold but not exceeding a second threshold that is higher than the first threshold, the predicted portion of the second source code is flagged as a low-confidence translation; and

in response to the highest probability not exceeding the first threshold, generating a placeholder;

outputting the second source code, wherein the second source code includes at least one occurrence of the predicted portion of the second source code flagged as the low-confidence translation; and

for each of the at least one occurrence of the predicted portion of the second source code flagged as the low-confidence translation:

receiving confirmation that the predicted portion of the second source code flagged as the low-confidence translation is a correct translation of a corresponding portion of the first source code; and

retraining the sequence-to-sequence neural network model by using in a feedback loop the confirmation that the predicted portion of the second source code flagged as the low-confidence translation is the correct translation.

2. The method according to claim 1 , wherein the second source code is partial source code of a program and includes at least one occurrence of the placeholder, and

further comprising updating the second source code to transform the partial source code of the program into complete source code of the program by, for each of the at least one occurrence of the placeholder:

receiving an additional portion of the second source code; and

replacing the placeholder with the additional portion of the second source code.

3. The method according to claim 2 , further comprising compiling the complete source code of the program using a compiler for the second higher-level programming language to generate a compiled representation of the complete source code.

4. The method according to claim 1 , wherein the processing is performed on the intermediate representation of the first source code, and

further comprising generating the intermediate representation of the first source code by compiling the first source code using a compiler for the first higher-level programming language.

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

receiving first source code in a first higher-level programming language;

processing the first source code, or an intermediate representation of the first source code, using a sequence-to-sequence neural network model to generate a sequence of outputs, wherein each output in the sequence of outputs comprises a probability distribution that includes a probability corresponding to each of a plurality of tokens;

generating second source code in a second higher-level programming language by, for each output in the sequence of outputs:

determining a highest probability in the probability distribution associated with the output;

in response to the highest probability exceeding a first threshold, generating a predicted portion of the second source code based on a token of the plurality of tokens that corresponds to the highest probability, wherein in response to the highest probability exceeding the first threshold but not exceeding a second threshold that is higher than the first threshold, the predicted portion of the second source code is flagged as a low-confidence translation; and

in response to the highest probability not exceeding the first threshold, generating a placeholder;

outputting the second source code, wherein the second source code includes at least one occurrence of the predicted portion of the second source code flagged as the low-confidence translation; and

for each of the at least one occurrence of the predicted portion of the second source code flagged as the low-confidence translation:

receiving a rejection indicating that the predicted portion of the second source code flagged as the low-confidence translation is an incorrect translation of a corresponding portion of the first source code; and

retraining the sequence-to-sequence neural network model by using in a feedback loop the rejection indicating that the predicted portion of the second source code flagged as the low-confidence translation is the incorrect translation.

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

receiving first source code in a first higher-level programming language;

processing the first source code, or an intermediate representation of the first source code, using a sequence-to-sequence neural network model to generate a sequence of outputs, wherein each output in the sequence of outputs comprises a probability distribution that includes a probability corresponding to each of a plurality of tokens;

generating second source code in a second higher-level programming language by, for each output in the sequence of outputs:

determining a highest probability in the probability distribution associated with the output;

in response to the highest probability exceeding a first threshold, generating a predicted portion of the second source code based on a token of the plurality of tokens that corresponds to the highest probability, wherein in response to the highest probability exceeding the first threshold but not exceeding a second threshold that is higher than the first threshold, the predicted portion of the second source code is flagged as a low-confidence translation; and

in response to the highest probability not exceeding the first threshold, generating a placeholder;

outputting the second source code, wherein the second source code includes at least one occurrence of the predicted portion of the second source code flagged as the low-confidence translation: and

for each of the at least one occurrence of the predicted portion of the second source code flagged as the low-confidence translation:

receiving a rejection indicating that the predicted portion of the second source code flagged as the low-confidence translation is an incorrect translation of a corresponding portion of the first source code, and receiving a replacement portion of the second source code;

replacing the predicted portion of the second source code flagged as the low-confidence translation with the replacement portion of the second source code; and

retraining the sequence-to-sequence neural network model by using in a feedback loop the rejection indicating that the predicted portion of the second source code flagged as the low-confidence translation is the incorrect translation and the replacement portion of the second source code.

7. A computer program product comprising one or more non-transitory computer-readable storage media having program instructions collectively stored on the one or more non-transitory computer-readable storage media, the program instructions executable to:

receive first source code in a first higher-level programming language;

process the first source code, or an intermediate representation of the first source code, using a neural network model to generate a plurality of outputs, wherein each output in the plurality of outputs comprises a probability distribution, the probability distribution including a probability corresponding to each of a plurality of tokens;

generate second source code that is partial source code of a program in a second higher-level programming language by, for each output in the plurality of outputs, generating a predicted portion of the second source code based on the output, in response to a probability in the probability distribution associated with the output exceeding a threshold, wherein the predicted portion of the second source code is generated based on a token of the plurality of tokens that corresponds to a highest probability in the probability distribution;

receive a selection of a first portion of the predicted portions of the second source code, wherein the first portion is annotated with a score based on the highest probability; and

in response to receiving the selection of the first portion, generate at least one alternative predicted portion of the second source code,

wherein:

each of the at least one alternative predicted portion is annotated with a score based on a probability in the probability distribution corresponding to a token of the plurality of tokens on which the alternative predicted portion is based, and

for each of the at least one alternative predicted portion, the score associated with the alternative predicted portion is lower than the score associated with the first portion.

8. The computer program product according to claim 7 , wherein the program instructions are further executable to:

receive a selection of a replacement portion from the at least one alternative predicted portion of the second source code; and

replace the first portion in the second source code with the replacement portion.

9. The computer program product according to claim 8 , wherein the program instructions are further executable to retrain the neural network model by using in a feedback loop the selection of the replacement portion.

10. The computer program product according to claim 7 , wherein the generating the second source code further comprises, for each output in the plurality of outputs, generating a placeholder, in response to a highest probability in the probability distribution associated with the output not exceeding the threshold.

11. The computer program product according to claim 10 , wherein:

the second source code includes at least one occurrence of the placeholder; and

the program instructions are further executable to update the second source code to transform the partial source code of the program into complete source code of the program by, for each of the at least one occurrence of the placeholder:

receiving an additional portion of the second source code; and

replacing the placeholder with the additional portion of the second source code.

12. The computer program product according to claim 7 , wherein:

the processing is performed on the intermediate representation of the first source code, and

the neural network model is a graph neural network model, and

further comprising generating the intermediate representation of the first source code by generating an abstract syntax tree representing the first source code and modeling the abstract syntax tree as a graph structure including nodes in the graph structure that correspond to nodes in the abstract syntax tree and edges in the graph structure that correspond to parent-child relationships in the abstract syntax tree.

13. A system comprising:

a processor, a computer-readable memory, one or more computer-readable storage media, and program instructions collectively stored on the one or more computer-readable storage media, the program instructions executable to:

receive first source code in a first higher-level programming language;

process the first source code, or an intermediate representation of the first source code, using a sequence-to-sequence neural network model to generate a sequence of outputs, wherein each output in the sequence of outputs comprises a probability distribution that includes a probability corresponding to each of a plurality of tokens;

generate second source code that is partial source code of a program in the second higher-level programming language by, for each output in the sequence of outputs:

determining a highest probability in the probability distribution associated with the output;

in response to the highest probability exceeding a first threshold and exceeding a second threshold that is higher than the first threshold, generating a predicted portion of the second source code based on a token of the plurality of tokens that corresponds to the highest probability;

in response to the highest probability exceeding the first threshold but not exceeding the second threshold, generating a flagged predicted portion of the second source code based on the token of the plurality of tokens that corresponds to the highest probability, wherein the flagged predicted portion of the second source code is flagged for review; and

in response to the highest probability not exceeding the first threshold, generating a placeholder; and

output the second source code.

14. The system according to claim 13 , wherein the program instructions are further executable to annotate each of the predicted portion of the second source code and the flagged predicted portion of the second source code with a confidence score based on the highest probability.

15. The system according to claim 13 , wherein the second source code includes at least one occurrence of the flagged predicted portion of the second source code and at least one occurrence of the placeholder, and the program instructions are further executable to transform the partial source code of the program into complete source code of the program by:

for each of the at least one occurrence of the flagged predicted portion of the second source code:

receiving a confirmation indicating whether or not the flagged predicted portion of the second source code is a correct translation of a corresponding portion of the first source code; and

in response to the confirmation indicating that the flagged predicted portion of the second source code is not the correct translation, receiving a replacement portion of the second source code and replacing the flagged predicted portion of the second source code with the replacement portion of the second source code; and

for each of the at least one occurrence of the placeholder:

receiving an additional portion of the second source code; and

replacing the placeholder with the additional portion of the second source code.

16. The system according to claim 15 , wherein the program instructions are further executable to retrain the sequence-to-sequence neural network model by using in a feedback loop the confirmation indicating whether or not the flagged predicted portion of the second source code is the correct translation, the replacement portion of the second source code, and the additional portion of the second source code.

17. The system according to claim 15 , further comprising compiling the complete source code of the program using a compiler for the second higher-level programming language to generate a compiled representation of the complete source code.

18. The system according to claim 13 , wherein the second source code includes at least one occurrence of the flagged predicted portion of the second source code, and the program instructions are further executable to, for at least one of the flagged predicted portion of the second source code:

receive a confirmation indicating that the flagged predicted portion of the second source code is not a correct translation; and

in response to the confirmation indicating that the flagged predicted portion of the second source code is not the correct translation, generate at least one alternative predicted portion of the second source code.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2023
From: X DEVELOPMENT LLC
To: GOOGLE LLC
Reel/Frame 062572/0565 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2021
From: SINGH, RISHABH; GONCHARUK, ARTEM; DAVIS, KAREN; ANDRE, DAVID
To: X DEVELOPMENT LLC
Reel/Frame 056380/0140 →
Continuity (1)
Provisional Application 63025762 · May 15, 2020
Cited By (5)
US 12,229,552 US 12,346,666 US 12,493,838 US 12,614,066 US 12,619,428