[Lane 2 · kotlin-core] tokenizer.json parity — apply the normalizer block (Replace, Prepend, Sequence, NFC) before pre-tokenization
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 43/100
Línea de trabajo
Start with SpecialTokenSplitter.kt and the normalizer handling in SentencePieceTokenizer.kt#L382-L391; the issue names both tokenizer factories to update and the existing source sets for platform NFC code. First check the Lane 1 survey for the NFC strategy, then implement the normalizer plumbing while it is open. Run the listed jvmTest and linuxX64Test; done means the three specified normalizers pass, unknown types fail with their names, and the ModernBERT fixture ends with id 3974.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Sub-issue of #1321 (HF tokenizer.json parity for BPE encoders).
Lane: 2 · Kotlin core
Skill needed: Kotlin Multiplatform (expect/actual or a pure-Kotlin table), Unicode normalization basics. No tensor knowledge.
Size: m (1–2 days; most of it is the NFC implementation and its tests)
Blocked by: the Lane 1 survey (it decides the NFC strategy). Start with the Replace/Sequence plumbing while it is open.
What to do
- Add a small
Normalizerstep tosk.ainet.io.tokenizerthat is built fromtokenizer.json#normalizerand applied to each non-special segment before pre-tokenization (the reference applies it before added-token matching only for tokens withnormalized: true; applying it to the segments between atomic matches is the observable behaviour for the files in the parent). - Support, in this order:
null(no-op),Replace(pattern.String→content;pattern.Regexcan throwUnsupportedTokenizerExceptionwith the pattern in the message),Prepend,Sequence(compose),NFC. Everything else: throwUnsupportedTokenizerExceptionnaming the type — do not silently skip, that is the current bug. - Implement NFC the way Lane 1 recommended. If that is
expect/actual: JVM viajava.text.Normalizer, JS/Wasm vianormalize("NFC"), Kotlin/Native passthrough with a documented warning in the KDoc. Put the per-target code in the existingjvmMain/jsMain/wasmJsMain/native64Mainsource sets ofskainet-io-core. - Wire it into
QwenByteLevelBpeTokenizer.fromTokenizerJsonandSentencePieceTokenizer.fromTokenizerJson; the existingPrependsniffing at SentencePieceTokenizer.kt#L382-L391 should become a consumer of the new step rather than a second parser. - Tests in
commonTest:Replace,Sequence, and NFC on"e\u0301"→"é"(JVM at least; mark the native expectation explicitly). Run./gradlew :skainet-io:skainet-io-core:jvmTest :skainet-io:skainet-io-core:linuxX64Test.
Acceptance
- ModernBERT file: the third fixture text of #1321 (ending in decomposed
e+ U+0301) encodes identically to the reference — last id3974, not299, 136, 212 - Unknown normalizer types fail loudly with the type name in the message
- Tests green on
jvmTestandlinuxX64Test - Result reported back on #1321
Notes
Sibling file to copy the shape from: SpecialTokenSplitter.kt is a small decorator built by the factory from a JSON block — the normalizer is the same pattern one step earlier in the pipeline. Keep the implementation out of QwenByteLevelBpeTokenizer itself so the Metaspace lane can reuse it.
- Lenguaje dominante
- Kotlin
- Estrellas
- 52
- Forks
- 15
- Merge medio
- 1 d 15 h
- PR fusionados (30 d)
- 36
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de SKaiNET-developers/SKaiNET
-
coding good first issue size:xs skill:kotlin-core sub-issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
SKaiNET-developers/SKaiNET#1323 ·
Los mantenedores suelen responder en 1 día
-
coding good first issue platform size:xs skill:js sub-issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SKaiNET-developers/SKaiNET#1232 ·
Los mantenedores suelen responder en 1 día
-
skeep tracking
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
SKaiNET-developers/SKaiNET#1331 ·
Los mantenedores suelen responder en 1 día
-
assessment size:s skill:review sub-issue
Dificultad 4/5 1-2 días Aptitud para principiantes 18/100
SKaiNET-developers/SKaiNET#1330 ·
Los mantenedores suelen responder en 1 día
-
documentation good first issue size:s skill:docs sub-issue
Dificultad 3/5 1-2 días Aptitud para principiantes 78/100
SKaiNET-developers/SKaiNET#1329 ·
Los mantenedores suelen responder en 1 día
Todos los issues de SKaiNET-developers/SKaiNET
Issues similares
-
[Submission] 抖音火山版Abiertosubmit-adaption submit-adaption-pre
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
BetterAndroid/android-notification-icon-project#744 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
utopia-rise/godot-jvm#1004 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
pedroSG94/RootEncoder#2213 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
[Feature]: AC charger voltageAbiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
dzid26/TeslaBatteryBLE#183 ·
Los mantenedores suelen responder en 1 día