Hi all,

I have posted a first release candidate for the Apache OpenNLP 3.0.0-M5 release 
and it is ready for testing.

The 3.x release line of Apache OpenNLP introduces no known breaking changes 
while significantly modularizing the project to improve library usage and 
future extensibility.
The core API remains stable and fully compatible with 2.x, so existing projects 
can continue using the opennlp-tools artifact without modifications.

######
This milestone delivers 33 resolved issues, headlined by a major overhaul of 
Unicode handling and text normalization.

The centerpiece of this release is a new Unicode-aware normalization and 
tokenization stack. A new normalization engine (CharClass, Dimension, and 
confusables support) is paired with an offset/alignment layer (Alignment, 
AlignedText) that correctly tracks character offsets through length-changing 
folds such as expansions and contractions. On top of this, OpenNLP now ships a 
UAX #29 compliant word tokenizer (WordSegmenter, WordTokenizer, WordType), a 
layered Term model with TermAnalyzer, and a per-language NormalizationProfile 
registry. Full Unicode case folding has been added to text normalization, 
whitespace handling is now aligned with the Unicode White_Space property, and 
the deep-learning components support offset-safe input normalization. A new 
emoji annotation layer is wired into the Sentiment, Name Finder, and Doccat 
components, with offset-aware bidirectional emoji and emoticon 
expansion/contraction.

Performance and robustness also received attention: legacy 
CharSequenceNormalizers replace regex matching with cursor scans, Tag patterns 
are precompiled to avoid repeated compilation, and normalization/tokenization 
hot paths saw non-breaking performance improvements. Stemmers are now 
thread-safe, with a new StemmerFactory and per-thread stem caching, and 
previously unexecuted stemmer tests have been brought back into the build.

On the security side, class instantiation in GeneratorFactory, StreamFactory, 
and StringInterners is now allowlist-based, and deserialization in BaseModel 
has been hardened.

Housekeeping updates include moving to Apache Parent 39, JUnit 6.1.2, gRPC 
1.82.2, ONNX Runtime 1.27.0, and Log4j 2.26.1, plus a fix to the binary 
distribution LICENSE to include the BSD section for the bundled stopword lists. 
Documentation improvements cover the Entity Linker framework, the BioNLP 
converter, and a new Dev Manual section on Unicode normalization and the UAX 
#29 tokenizer.
######

Thank you to everyone who contributed to this release, including all of our 
users and the people who submitted bug reports, contributed code or 
documentation enhancements.

The release was made using the OpenNLP release process, documented on the 
website:
https://opennlp.apache.org/release.html

Maven Repo:
https://repository.apache.org/content/repositories/orgapacheopennlp-1071

<repositories>
<repository>
<id>opennlp-3.0.0-M5-RC1</id>
<name>Testing OpenNLP 3.0.0-M5 release candidate</name>
<url>
https://repository.apache.org/content/repositories/orgapacheopennlp-1071
</url>
</repository>
</repositories>

Binaries & Source:

https://dist.apache.org/repos/dist/dev/opennlp/opennlp-3.0.0-M5-rc1/

Tag:

https://github.com/apache/opennlp/releases/tag/opennlp-3.0.0-M5

Tag Hash: 936db0e9b79c9150afcf2c06e107b2b958ab536d

Release notes:

https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311215&version=12357221

The results of the eval tests for the aforementioned tag can be found
here: https://ci-builds.apache.org/job/OpenNLP/job/eval-tests-releases/36/

Reminder: The up-2-date KEYS file for signature verification can be
found here: https://dist.apache.org/repos/dist/release/opennlp/KEYS

Checklist for reference:

[ ] Both source (tar.gz/zip) and binary artifacts (tar.gz/zip) are present, 
along with .asc and .sha512 files for each.
[ ] PGP signatures are valid for the release artifacts using the KEYS file from 
dist.apache.org
[ ] SHA512 checksums are correct and verified.
[ ] LICENSE and NOTICE files exist and are accurate.
[ ] No unexpected binary files in the source release.
[ ] All source files have appropriate ASF headers (excluding generated files 
and legacy files).
[ ] Build completes successfully from source and the instruction to do so are 
clear.

Please vote on releasing these packages as Apache OpenNLP 3.0.0-M5
The vote is open for at least the next 72 hours.

Only votes from OpenNLP PMC are binding, but everyone is welcome to
check the release candidate and vote.
The vote passes if at least three binding +1 votes are cast.

Please VOTE

[+1] go ship it
[+0] meh, don't care
[-1] stop, there is a ${showstopper}

Thanks!
Martin | mawiesne

Reply via email to