[ 
https://issues.apache.org/jira/browse/OPENNLP-1889?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18096636#comment-18096636
 ] 

Kristian Rickert commented on OPENNLP-1889:
-------------------------------------------

Linking the design 

> OpenNLP modernization: document-shape pipeline and pure-JVM PoC feature set
> ---------------------------------------------------------------------------
>
>                 Key: OPENNLP-1889
>                 URL: https://issues.apache.org/jira/browse/OPENNLP-1889
>             Project: OpenNLP
>          Issue Type: Epic
>            Reporter: Kristian Rickert
>            Assignee: Kristian Rickert
>            Priority: Major
>             Fix For: 3.0.0
>
>
> A proof-of-concept modernization of OpenNLP around an immutable, 
> offset-anchored
> {{Document}} model, plus a set of pure-JVM analysis capabilities built on top 
> of
> it. It was developed as one integrated branch and is being split into small,
> independently reviewable pieces. The goal is a single-jar, no-Python, 
> span-faithful
> NLP stack that we can expose over gRPC as a serious alternative to the popular
> Python packages.
> h2. Rollout policy (applies to every ticket in this epic)
>  - Each feature is developed on its own branch and is *not* pushed to apache 
> until it
> is ready for collaboration and review. These drafts exist so we can cut 
> branches in
> our own environment first. I'd love to share, so just reply and I can make a 
> branch for collaboration and open to any changes along the way.  I'd love the 
> help.
>  - *Only the document shape (OPENNLP-1888) is considered necessary for 3.0.* 
> Every other ticket here can land after 3.0 without blocking the release.
>  - As each feature lands, we add support for it to the gRPC service, so the 
> capability
> is exposed over the wire as it becomes available.
>  - Every ticket and feature will have Javadoc, unit tests, eval tests, manual 
> entries, and samples that are runnable.  No exceptions.
>  - Any test results will me runnable and repeatable.  We will focus most on 
> industry standard tests.  Java is fast; I have full confidence we will have 
> even more impressive results than what you see below.  
>  - All caveats will be documented (i.e. Java version of Model2Vec does lower 
> accuracy - at times too much - for 20x speedup.)
> h2. PoC results (measured this cycle)
> ||Area||Result||Reference / target||
> |Static embeddings (model2vec / potion-base-8M), pure-JVM inference|12.9x 
> faster single-thread, ~7x peak throughput multi-thread, at 0.22x memory|vs 
> the Python reference; vector parity verified *before* optimizing|
> |Dependency parser (pure-JVM feedforward neural, trained in-process)|86.78 
> UAS / 84.61 LAS with gold tags (h400, beam 4)|UD English EWT test|
> |Full all-neural pipeline (our tagger -> our parser)|83.73 UAS / 79.88 LAS at 
> 448 tokens/s|Stanza end-to-end 88.90 / 86.77|
> |Feedforward POS tagger|94.68%|classical maxent ceiling 93.75%|
> |CJK segmentation (mecab-format Viterbi lattice, char-trie)|5.1M chars/s, 
> ~146k sentences/s; loads 392k IPADIC entries in ~0.7s|real IPADIC; one engine 
> covers JA + KO|
> |UD lemmatizer (via the installer)|87.76% lemma accuracy (~22s train, default 
> params)|UD English EWT|
> |Normalization / tokenization hot paths (OPENNLP-1878, #1161)|~2x on the 
> measured hot paths, non-breaking|already in review|
> h2. Training and data provenance (legality)
>  - *We do our own training.* The feedforward parser and tagger are trained 
> in-process
> in the JVM from open treebanks; the embedding tables are verified for parity 
> in-JVM. *No third-party model binaries are shipped.* We would need to find a 
> home for the newly trained models.
>  - *Nothing third-party is bundled.* A bring-your-own-data installer takes a
> user-supplied URL, verifies SHA-256 before unpacking, and rejects path 
> escapes. This is how mecab dictionaries, UD treebanks, Hunspell dictionaries, 
> gazetteers, and Who's On First tables are acquired: the user points at the 
> source and thereby accepts its license. (Cleared via LEGAL-732)
>  - *Geographic data:* the only bundled gazetteer is Natural Earth populated 
> places
> (public domain). GeoNames (CC-BY) and Overture are download-only. Who's On 
> First is BYOD-only (a large multi-source license patchwork). 
> Census/IRS-derived place profiles are gated behind legal review and never 
> bundled: the engine ships, the data does not.
>  - *Benchmark data:* UD English EWT is CC-BY-SA and used for measurement 
> only; we do not ship models derived from it.
>  
> I'm cleaning up the code now - but I'd be glad to put them as branches but 
> it's still in PoC and the stacked dependency makes it unrealistic and very 
> confusing.  Once OPENNLP-1888 is committed, the complexity of the merge order 
> goes down and most tickets can land off main.   
> h3. The coolest part -
> I try not to hype or get too opinionated, especially in a Jira ticket, but 
> I'm thrilled to work with anyone welcome on this.  To say the least - Java is 
> a great language and initial numbers suggest that we'll gain a lot of 
> customers should we land these features.  This opportunity is huge.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to