Skip to content

Commit 5cd59a0

Browse files
committed
fix scroll behavior and reranking metric
1 parent 89770ed commit 5cd59a0

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

src/commonMain/kotlin/ai/hypergraph/kaliningraph/parsing/Levenshtein.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,10 @@ fun allPairsLevenshtein(s1: Set<Σᐩ>, s2: Set<Σᐩ>) =
425425
fun levenshtein(s1: Σᐩ, s2: Σᐩ): Int =
426426
levenshtein(s1.tokenizeByWhitespace().toList(), s2.tokenizeByWhitespace().toList())
427427

428+
fun levAndLenMetric(origTks: List<String>): (List<String>) -> Int = {
429+
levenshtein(origTks, it) * 7919 + (origTks.sumOf { it.length } - it.sumOf { it.length }).absoluteValue
430+
}
431+
428432
fun <T> levenshtein(o1: List<T>, o2: List<T>): Int {
429433
var prev = IntArray(o2.size + 1)
430434
for (j in 0..<o2.size + 1) prev[j] = j

src/commonMain/kotlin/ai/hypergraph/kaliningraph/parsing/SortValiant.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,6 @@ data class Choice(val tokens: List<Σᐩ>, val weight: Float): Comparable<Choice
101101
}
102102

103103
// Returns a metric measuring Levenshtein distance w.r.t. some reference string
104-
fun levMetric(withRespectTo: Σᐩ): ChoiceMetric =
104+
fun levAndLenMetric(withRespectTo: Σᐩ): ChoiceMetric =
105105
withRespectTo.tokenizeByWhitespace()
106106
.let { wrt -> { levenshtein(it.sanitized, wrt).toFloat() } }

src/commonTest/kotlin/ai/hypergraph/kaliningraph/parsing/SetValiantTest.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import ai.hypergraph.kaliningraph.tensor.seekFixpoint
1010
import ai.hypergraph.kaliningraph.types.π2
1111
import kotlinx.datetime.Clock
1212
import kotlin.math.ceil
13-
import kotlin.math.log
1413
import kotlin.math.log2
1514
import kotlin.random.Random
1615
import kotlin.test.*
@@ -367,7 +366,7 @@ class SetValiantTest {
367366
val holExpr = "_ _ _ _"
368367

369368
measureTime {
370-
val solutions = Grammars.ocamlCFG.solve(holExpr, levMetric("( false curry )"))
369+
val solutions = Grammars.ocamlCFG.solve(holExpr, levAndLenMetric("( false curry )"))
371370
println("Found: ${solutions.size} unique solutions")
372371
solutions.forEach { println(it); assertTrue("$it was invalid!") { Grammars.ocamlCFG.isValid(it) } }
373372
}.also { println("Finished in ${it.inWholeMilliseconds}ms.") }

0 commit comments

Comments
 (0)