[Lane 2 · kotlin-core] tokenizer.json parity — apply the normalizer block (Replace, Prepend, Sequence, NFC) before pre-tokenization
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 43/100
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Kotlin
- Stelle
- 52
- Fork
- 15
- Merge medio
- 1g 8h
- PR unite (30g)
- 37
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di SKaiNET-developers/SKaiNET
-
coding good first issue platform size:xs skill:js sub-issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
SKaiNET-developers/SKaiNET#1232 ·
I maintainer di solito rispondono entro 1 giorno
-
compute-backend dsl/api enhancement size:m skill:kotlin-core skill:numerics
Difficoltà 5/5 Più di una settimana Idoneità per principianti 18/100
SKaiNET-developers/SKaiNET#1343 ·
I maintainer di solito rispondono entro 1 giorno
-
compute-backend dsl/api enhancement size:m skill:kotlin-core skill:numerics
Difficoltà 5/5 Più di una settimana Idoneità per principianti 12/100
SKaiNET-developers/SKaiNET#1342 ·
I maintainer di solito rispondono entro 1 giorno
-
skeep tracking
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
SKaiNET-developers/SKaiNET#1331 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
assessment size:s skill:review sub-issue
Difficoltà 4/5 1-2 giorni Idoneità per principianti 18/100
SKaiNET-developers/SKaiNET#1330 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di SKaiNET-developers/SKaiNET
Issue simili
-
afk-ok area:data-quality importer size:S
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
enorm-labs/event-junkie#3301 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
rustyrazorblade/easy-db-lab#1017 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement impact:U1 later P3 reach:R2 size:S
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100