File size: 4,302 Bytes
6fa2895 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # Swipe Keyboard trained models, 2026-10-23
Models trained and released by Destin Moss via youcoded.ai, 2026.
SPDX-FileCopyrightText: 2026 Destin Moss <https://youcoded.ai>
Four neural next-word models (English, Spanish, French, German) and one swipe-recognition model. They sit beside the
language files published in release `language-files-2026-10-22-open-words` and are checked by SHA-256 against
`packaging/assets.lock.json` in github.com/itsdestin/swipe-keyboard before use. A missing or damaged file only turns
that model off (suggestions fall back to the n-gram files; swipes fall back to the geometric matcher); it never
disables a language.
| File | What it is | Declared licence |
|---|---|---|
| `LANG.nwp.bin` (en, es, fr, de) | next-word model: a small recurrent network (one LSTM layer, integer weights, about 4.7 MB), used together with `LANG.ngram` | ODC-By-1.0 AND CC-BY-2.0-FR |
| `swipe-model.bin` | swipe recognition: small convolution + recurrent network (about 0.5 million weights, 2.1 MB) shared by all four languages | MIT |
## How they were built
Scripts in github.com/itsdestin/swipe-keyboard (commit `14f9722` and its ancestors on branch `feature/179-engine-in-keyboard`):
- Next-word models: `scripts/lm/nwp/prepare.py` (tokenise, vocabulary), `train.py` (train), `tune.py` (blend with the
n-gram), `export.py` (write `LANG.nwp.bin`). Training text: the same FineWeb (English, sample-10BT) / FineWeb-2
(Spanish, French, German) text and Tatoeba sentences as the n-gram files, with test sentences held out (Tatoeba ids
ending in 0, and sentences sharing an 8-word run with the test sets).
- Swipe model: `scripts/swipe/prep_data.py`, `assemble_futo.py`, `synth_swipes.py`, `train.py`. Training data: real
swipes from FUTO's swipe.futo.org dataset (MIT) plus synthetic swipes generated from our open word lists
(our own noise model, no FUTO code or model weights). Sessions used for validation or final scoring were held out.
## Sources and licences
- **Web text** (next-word models) - FineWeb and FineWeb-2 by Hugging Face, Open Data Commons Attribution License v1.0
(`ODC-By-1.0.txt`); built from Common Crawl, whose terms of use also apply. The models contain learned weights, never text.
- **Short everyday sentences** (next-word models) - Tatoeba (tatoeba.org), CC BY 2.0 FR (`TATOEBA-CC-BY-2.0-FR.txt`).
The contributors are credited in `en-CONTRIBUTORS.txt`, `es-CONTRIBUTORS.txt`, `fr-CONTRIBUTORS.txt`,
`de-CONTRIBUTORS.txt` in release `language-files-2026-10-22-open-words`.
- **Real swipes** (swipe model) - the swipe.futo.org dataset, https://huggingface.co/datasets/futo-org/swipe.futo.org,
MIT licence, reproduced below and in `FUTO-SWIPE-DATA-LICENSE.txt`:
MIT License
Copyright (c) 2025 FUTO
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions
of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
- **Synthetic swipes** (swipe model) - generated by us from the open word lists above; no third-party terms.
Changes made: text was split into sentences and reduced to letter words before training; swipes were resampled and
normalised to key positions; the trained weights were converted to the compact formats the keyboard reads.
These models contain no FUTO model weights and no FUTO code. https://github.com/itsdestin/swipe-keyboard
|