We intend to replace heuristics based code completion ranking with a Decision Forest Model.
This patch introduces a format for representing the model and an inference runtime that is code-generated at build time.
* Forest.json contains all the trees as an array of trees.
* Features.json describes the features to be used.
* Codegen file takes the above two files and generates CompletionModel containing Feature struct and corresponding Evaluate function.
The Evaluate function maps a feature to a real number describing the relevance of this candidate.
* The codegen is part of build system and these files are generated at build time.
* Proposes a way to test the generated runtime using a test model.
* Replicates the model structure in unittests.
* unittest tests both the test model (for correct tree traversal) and the real model (for sanity).
TODO:
- Necessary Google3 internal modifications for blaze before landing.
- Add documentation for format of the model.