svoid ai_combineBestNGramScorersForLanguageDetectionTask(LanguageDetectionTask task) { LS exprs = takeFirst(10, (LS) dm_callAndImport(dm_languageDetectionNGramScorersCRUD(), 'expressionsForTaskByScore, task.task())); Set seen = ciSet(); new DynamicTopTen tt; repeat 1000 { S expr = firstNotSeen_nAttempts(1000, seen, () -> ai_combineNGramScorers_noDuplicates(random(exprs), random(exprs)) ); if (expr == null) break with print("Can't find any new expressions"); tt.add(expr, print(scoreNGramScorer(expr, task.pos, task.neg))); } pnl(tt.withScores()); dm_saveLanguageDetectionNGramScorers(task, tt); }