Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if (isTokenized) {
tokenized = {
tokens: query.split(' '),
entities: {},
};
if (data.entities) {
// safety against weird properties
for (let key of Object.getOwnPropertyNames(data.entities)) {
if (/^(.+)_([0-9]+)$/.test(key))
tokenized[key] = data.entities[key];
}
}
} else {
tokenized = await service.tokenizer.tokenize(languageTag, query, expect);
if (data.entities)
Genie.Utils.renumberEntities(tokenized, data.entities);
}
let result = null;
let exact = null;
const tokens = tokenized.tokens;
if (tokens.length === 0) {
result = [{
code: ['bookkeeping', 'special', 'special:failed'],
score: 'Infinity'
}];
} else if (tokens.length === 1 && (/^[A-Z]/.test(tokens[0]) || tokens[0] === '1' || tokens[0] === '0')) {
// if the whole input is just an entity, return that as an answer
result = [{
code: ['bookkeeping', 'answer', tokens[0]],
score: 'Infinity'
async process(ex) {
if (ex.flags.synthetic) {
// skip typechecking synthetic examples, we know they are correct
this.push(ex);
return;
}
try {
const entities = Genie.Utils.makeDummyEntities(ex.preprocessed);
const program = ThingTalk.NNSyntax.fromNN(ex.target_code.split(' '), entities);
await program.typecheck(this._schemas);
this.push(ex);
return;
} catch(e) {
this._dropped++;
}
}
await Promise.all(batch.map(async (ex) => {
const entities = Genie.Utils.makeDummyEntities(ex.preprocessed);
const program = ThingTalk.NNSyntax.fromNN(ex.target_code.split(' '), entities);
try {
await program.typecheck(this._schemas);
} catch(e) {
toUpdate.push(ex.id);
}
}));
async sendUtterance(utterance, tokenized, contextCode, contextEntities) {
let tokens, entities;
if (tokenized) {
tokens = utterance.split(' ');
entities = {};
Object.assign(entities, contextEntities);
} else {
const tokenized = await this._tokenizer.tokenize(this._locale, utterance);
Genie.Utils.renumberEntities(tokenized, contextEntities);
tokens = tokenized.tokens;
entities = tokenized.entities;
}
const candidates = await this._predictor.predict(tokens, contextCode);
return { tokens, candidates, entities };
}
}