Richard Zowalla created OPENNLP-1841:
----------------------------------------
Summary: Provide SymSpell spell-correction dictionary models
(opennlp-models-spellcheck-{lang})
Key: OPENNLP-1841
URL: https://issues.apache.org/jira/browse/OPENNLP-1841
Project: OpenNLP
Issue Type: New Feature
Reporter: Richard Zowalla
Fix For: 3.0.0-M4, 3.0.0
OPENNLP-1832 landed the engine and API (opennlp-spellcheck module:
SpellChecker, the SymSpell engine, SymSpellModel, serializer, model-resolver,
CLI). What it deliberately did not ship is data: the module contains no
production dictionaries, and SymSpellModelResolver resolves nothing on a stock
classpath.
This issue covers producing, licensing, and publishing the actual dictionary
model artifacts - one Maven jar per language, named
opennlp-models-spellcheck-{lang} — so that new
SymSpellModelResolver().resolveByLanguage("en") returns a usable model out of
the box, consistent with how every other OpenNLP component ships pre-trained
models.
Proposed work
1. Decide the home for the artifacts
I would recommend to produce them in apache/opennlp-models (same place other
pre-trained models are released and where opennlp-models-* GAV coordinates live
2. Source MIT-/ASLv2-compatible frequency data
For each target language, obtain a permissively-licensed unigram (and where
available bigram) frequency list:
- English: SymSpell reference frequency_dictionary_en_82_765.txt +
frequency_bigramdictionary_en_243_342.txt (MIT) - gives us compound-correction
(lookupCompound) coverage immediately.
- Other languages: Hermit Dave's FrequencyWords (OpenSubtitles-derived, MIT)
and/or Wortschatz/Leipzig corpora and/or Wikipedia Snapshots - license must be
confirmed per language and recorded.
- Every source's license, URL, and retrieval date go into NOTICE / LICENSE
and the per-jar provenance, same discipline as OPENNLP-1832's data-licensing
work.
3. Initial language set (proposal)
en (with bigrams) first as the reference; then de, es, fr, nl, it as a second
wave, gated on confirmed licensing.
For each language, run SpellCheckModelBuilder (default maxEditDistance=2,
prefixLength=7) and package via writePackage(...) so each jar contains *.bin +
model.properties. Pin and record:
- model.version (start at 1.0),
- model.sha256 (computed by SymSpellModels over the binary),
- the build parameters and source-data version, for reproducibility.
Can also be scripted like it is done for the other models and data.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)