Skip to content

Commit

Permalink
pad repair template, seems to work now
Browse files Browse the repository at this point in the history
  • Loading branch information
breandan committed May 10, 2023
1 parent 36d775b commit 9cb6496
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,21 @@ import kotlin.time.*
@OptIn(ExperimentalTime::class)
fun main() {
// fetchKotlinExamples()
MAX_SAMPLE = 200
originalKotlinLines.lines().map {

// Generate synthetic error dataset
List(100) { originalKotlinLines }.joinToString("\n").lines().map {
val original = it.lexAsKotlin().joinToString(" ").trim()
val prompt = original.constructPromptByDeletingRandomSyntax(
eligibleTokensForDeletion = officialKotlinKeywords,
eligibleTokensForDeletion = officialKotlinKeywords + commonKotlinKeywords,
tokensToDelete = 1,
tokenizer = Σᐩ::lexAsKotlin
)
original to prompt
}
.filter { !it.second.isValidKotlin() }
.distinct().shuffled()

// Run repair
.forEach { (original, prompt) ->
println("Original: $original\nCorrupted: ${prettyDiffNoFrills(original, prompt)}")
val startTime = System.currentTimeMillis()
Expand All @@ -35,6 +39,7 @@ fun main() {
val contained = original in it
val elapsed = System.currentTimeMillis() - startTime

println("\nTop 100 repairs:\n")
it.take(100).forEach {
println("Δ=${levenshtein(prompt, it) - 1} repair: ${prettyDiffNoFrills(prompt, it)}")
}
Expand Down Expand Up @@ -88,17 +93,27 @@ fun Σᐩ.uncoarsenAsKotlin(prompt: Σᐩ): Σᐩ {
fun parallelRepairKotlinStatement(
prompt: Σᐩ,
clock: TimeSource.Monotonic.ValueTimeMark = TimeSource.Monotonic.markNow()
): List<Σᐩ> =
bijectiveRepair(
prompt = prompt,
): List<Σᐩ> {
var bestRepair = Int.MAX_VALUE
val delim = List(prompt.length) { "-" }.joinToString("")
println("$delim\nBest repairs so far:\n$delim")
return bijectiveRepair(
toRepair = prompt,
fillers = commonKotlinKeywords + "ε" - "w",
// coarsen = Σᐩ::coarsenAsKotlin,
// uncoarsen = Σᐩ::uncoarsenAsKotlin,
takeMoreWhile = { clock.elapsedNow().inWholeMilliseconds < TIMEOUT_MS },
// updateProgress = { println(it) },
filter = { isValidKotlin() },
// diagnostic = { println("Δ=${levenshtein(prompt, it) - 1} repair: ${prettyDiffNoFrills(prompt, it)}") },
diagnostic = {
val levDiff = levenshtein(prompt, it) - 1
if (levDiff < bestRepair) {
println("Δ=$levDiff repair: ${prettyDiffNoFrills(prompt, it)}")
bestRepair = levDiff
}
},
)
}

@OptIn(ExperimentalTime::class)
fun repairKotlinStatement(
Expand Down

0 comments on commit 9cb6496

Please sign in to comment.