Releases: apache/opennlp
Release list
OpenNLP 3.0.0-M5
What's Changed
- Merge shell tests into the Java CI pipeline by @rzo1 in #1120
- OPENNLP-1856: Update JUnit to 6.1.1 by @dependabot[bot] in #1129
- OPENNLP-1855: Move to Apache Parent 39 by @dependabot[bot] in #1131
- OPENNLP-1858: Add ASF allowlist-check workflow for GitHub Actions by @rzo1 in #1133
- OPENNLP-1860: Unicode normalization engine — CharClass, rungs, Dimension, confusables by @krickert in #1108
- OPENNLP-1861: Offset/alignment layer — Alignment, AlignedText, buildAligned by @krickert in #1109
- OPENNLP-1871: Add the stopword-list BSD section to the binary distribution LICENSE by @krickert in #1140
- OPENNLP-1859: Add tests for BilouCodec encode/decode and outcome compatibility by @vasiliy-mikhailov in #1135
- OPENNLP-1862: UAX #29 word tokenizer — WordSegmenter, WordTokenizer, WordType by @krickert in #1110
- OPENNLP-1873: Update ONNX runtime to 1.27.0 by @dependabot[bot] in #1143
- OPENNLP-1874: Update Log4J to 2.26.1 by @dependabot[bot] in #1144
- OPENNLP-1863: Layered Term model — Term, TermAnalyzer by @krickert in #1111
- OPENNLP-1864: Per-language NormalizationProfile registry by @krickert in #1149
- OPENNLP-205: Refactor the end-of-sentence position to span mapping in SentenceDetectorME by @krickert in #1141
- OPENNLP-1865: Support offset-safe input normalization in the DL components by @krickert in #1105
- OPENNLP-1881: Upgrade & Pin Pester in GH action by @rzo1 in #1159
- OPENNLP-1866: Update Dev Manual on Unicode normalization and the UAX #29 tokenizer by @krickert in #1106
- OPENNLP-1882: Stop excluding stemmer tests and fix stale Turkish expectations by @krickert in #1162
- OPENNLP-1856: Update JUnit to 6.1.2 by @dependabot[bot] in #1172
- OPENNLP-1233: Link the POS and chunk tag references by @jerry317395616 in #1170
- OPENNLP-587: Document the Entity Linker framework by @jerry317395616 in #1169
- OPENNLP-244: Document the BioNLP converter by @jerry317395616 in #1175
- OPENNLP-1742: Use the MaxEnt training default for NameFinderME by @jerry317395616 in #1171
- OPENNLP-1868: Add Unicode full case folding to text normalization by @krickert in #1138
- OPENNLP-1869: Support offset-aware bidirectional emoji and emoticon expansion and contraction by @krickert in #1164
- OPENNLP-1890: Allowlist based class Instantiation by @subbudvk in #1178
- OPENNLP-1890: Allowlist based class Instantiation in StreamFactory / StringInterners by @rzo1 in #1179
- OPENNLP-1876: Replace regex with cursor scans in the legacy CharSequenceNormalizers by @krickert in #1151
- OPENNLP-1875: Align whitespace handling with the Unicode White_Space property by @krickert in #1150
- OPENNLP-1891: Harden Deserialization in BaseModel by @subbudvk in #1185
- OPENNLP-1878: Non-breaking performance follow-up for normalization and tokenization hot paths by @krickert in #1161
- OPENNLP-1892 : Precompile Tag patterns to avoid repeated pattern compilation by @subbudvk in #1187
- OPENNLP-1883: Make stemmers thread-safe, add StemmerFactory and per-thread stem caching by @krickert in #1163
- OPENNLP-1870: Add opt-in emoji annotations for NameFinder, Doccat, and Sentiment by @krickert in #1177
New Contributors
- @jerry317395616 made their first contribution in #1170
Full Changelog:
- JIRA release notes: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311215&version=12357221
- GitHub delta: opennlp-3.0.0-M4...opennlp-3.0.0-M5
OpenNLP 2.5.11
What's Changed
- OpenNLP 2.5.10 by @mawiesne in #1097
- [2.x]: Bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #1099
- [2.x]: Bump actions/cache from 5.0.5 to 6.0.0 by @dependabot[bot] in #1114
- [2.x]: OPENNLP-1854: Resolve DocBook DTD from local catalog instead of remote URL by @rzo1 in #1118
- [2.x]: Bump actions/setup-java from 5.3.0 to 5.4.0 by @dependabot[bot] in #1122
- [2.x] Merge shell tests into the Java CI pipeline by @rzo1 in #1121
- [2.x]: Bump actions/cache from 6.0.0 to 6.1.0 by @dependabot[bot] in #1126
- [2.x]: Bump actions/upload-artifact from 4.6.2 to 7.0.1 by @dependabot[bot] in #1127
- [2.x]: Bump actions/download-artifact from 4.3.0 to 8.0.1 by @dependabot[bot] in #1125
- [2.x]: OPENNLP-1855: Move to Apache Parent 39 by @dependabot[bot] in #1130
- [2.x]: OPENNLP-1856: Update JUnit to 6.1.1 by @dependabot[bot] in #1128
- OPENNLP-1858: [2.x] Add ASF allowlist-check workflow for GitHub Actions by @rzo1 in #1134
- [2.x]: OPENNLP-1873: Update ONNX runtime to 1.27.0 by @dependabot[bot] in #1145
- [2.x]: OPENNLP-1874: Update Log4J to 2.26.1 by @dependabot[bot] in #1146
- [2.x] Regenerated NOTICE file after dependency changes by @github-actions[bot] in #1148
- [2.x] OPENNLP-1881: Upgrade & Pin Pester in GH action by @rzo1 in #1160
- [2.x]: Bump actions/setup-java from 5.4.0 to 5.5.0 by @dependabot[bot] in #1156
- [2.x]: OPENNLP-1856: Update JUnit to 6.1.2 by @dependabot[bot] in #1174
- [2.x] OPENNLP-1890: Allowlist based class Instantiation in StreamFactory / StringInterners by @rzo1 in #1180
- [2.x] OPENNLP-1890: Correct location of test classes from 3.x cherry pick by @rzo1 in #1181
- [2.x]: Bump actions/setup-java from 5.5.0 to 5.6.0 by @dependabot[bot] in #1183
- [2.x] OPENNLP-1891: Harden Deserialization in BaseModel by @rzo1 in #1186
- [2.x]: Bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #1188
Full Changelog: opennlp-2.5.10...opennlp-2.5.11
OpenNLP 3.0.0-M4
Note
This releases fixes CVE-2026-43825: Untrusted Java Deserialization in Apache OpenNLP SvmDoccatModel.
What's Changed
-
OPENNLP-1823: Harden SvmDoccatModel.deserialize() with ObjectInputFilter and resource limits by @rzo1 in #1029
-
OPENNLP-1824: Update ONNX runtime to 1.25.1 by @dependabot[bot] in #1031
-
OPENNLP-1826 : Prevent OOM during Array Allocation by @subbudvk in #1035
-
OPENNLP-1829: Transfer DirectoryModelFinder to OpenNLP core by @mawiesne in #1045
-
OPENNLP-1828: Move to Apache Parent 38 by @dependabot[bot] in #1048
-
OPENNLP-1831: Update Slf4j to 2.0.18 by @dependabot[bot] in #1050
-
OPENNLP-1824: Update ONNX runtime to 1.26.0 by @dependabot[bot] in #1046
-
OPENNLP-1827: Update log4j2 to 2.26.0 by @dependabot[bot] in #1049
-
OPENNLP-660: Include list of stop words for various languages by @rzo1 in #1056
-
OPENNLP-660: Template needs to hold the NOTICE content too by @rzo1 in #1059
-
OPENNLP-1834: Update JUnit to 6.1.0 by @dependabot[bot] in #1061
-
OPENNLP-1835: Tolerate unsupported XML parser security options by @RankoR in #1067
-
OPENNLP-1832: Add SymSpell-based SpellChecker component by @rzo1 in #1057
-
OPENNLP-1837: Add BertTokenizer with BERT basic tokenization by @krickert in #1073
-
OPENNLP-1839: Fix native memory leak and vocabulary NPE in DocumentCategorizerDL by @krickert in #1074
-
OPENNLP-1840: Fix native memory leak and vocabulary NPE in NameFinderDL by @krickert in #1076
-
OPENNLP-1836: Fix input encoding in SentenceVectorsDL by @krickert in #1072
-
OPENNLP-1843: Override surefire skip so eval tests run again by @krickert in #1082
-
OPENNLP-1838: Adopt BertTokenizer in opennlp-dl components by @krickert in #1075
-
OPENNLP-1848: Update Morfologik to 2.2.0 by @dependabot[bot] in #1087
-
OPENNLP-1849: Update junit5-system-exit to 2.0.3 by @dependabot[bot] in #1089
-
OPENNLP-1845: Fix numerically unstable softmax in DocumentCategorizerDL by @krickert in #1085
-
OPENNLP-1844: Make opennlp-dl components thread-safe by @krickert in #1084
-
OPENNLP-1846: Fix NameFinderDL only worked with Person, expand to all types by @krickert in #1086
-
OPENNLP-1851: Fix DocumentCategorizerDLEval.categorizeFailsLoudlyOnFa… by @krickert in #1102
-
OPENNLP-1853: Extend DictionaryStopwordFilterTest towards edge cases by @vasiliy-mikhailov in #1107
-
OPENNLP-1854: Resolve DocBook DTD from local catalog instead of remote URL by @rzo1 in #1117
-
Bump com.ruleoftech:markdown-page-generator-plugin to 2.5.2 by @dependabot[bot] in #1051
-
Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.5.5 to 3.5.6 by @dependabot[bot] in #1063
-
Bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #1068
-
Bump org.jacoco:jacoco-maven-plugin from 0.8.14 to 0.8.15 by @dependabot[bot] in #1071
-
Bump actions/setup-java from 5.2.0 to 5.3.0 by @dependabot[bot] in #1096
-
Bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #1098
-
Bump actions/cache from 5.0.5 to 6.0.0 by @dependabot[bot] in #1113
New Contributors
- @vasiliy-mikhailov made their first contribution in #1107
Full Changelogs:
OpenNLP 1.9.5
Apache OpenNLP 1.9.5
This is a maintenance release of the 1.9.x line addressing several security vulnerabilities affecting Apache Lucene 8.x and Solr 8.x which depend on OpenNLP 1.9.x.
Changes
- OPENNLP-1819: Align DictionaryEntryPersistor XML parsing with XmlUtil helper
- OPENNLP-1820: Restrict ExtensionLoader to allowlisted package prefixes
- OPENNLP-1821: Prevent OutOfMemory due to huge array allocation
- OPENNLP-1826: Fix for XML parser security options
- OPENNLP-1835: Tolerate unsupported XML parser security options
For further info : https://lists.apache.org/thread/nvzl4g2b6rc149nf54xpnorjso5h0mlp
OpenNLP 2.5.10
What's Changed
- OPENNLP-1518: Roberta-based Models - Add support for utilization via Onnx by @rzo1 in #998
- OPENNLP-1824: Update ONNX runtime to 1.25.1 by @dependabot[bot] in #1030
- OPENNLP-1824: Update ONNX runtime to 1.26.0 by @dependabot[bot] in #1037
- OPENNLP-1827: Update log4j2 to 2.26.0 by @dependabot[bot] in #1036
- OPENNLP-1828: Move to Apache Parent 38 by @dependabot[bot] in #1038
- OPENNLP-1829: Transfer DirectoryModelFinder to OpenNLP core by @mawiesne in #1054
- OPENNLP-1831: Update Slf4j to 2.0.18 by @dependabot[bot] in #1047
- OPENNLP-1834: Update JUnit to 6.1.0 by @dependabot[bot] in #1060
- OPENNLP-1835: Tolerate unsupported XML parser security options by @RankoR in #1066
- OPENNLP-1836: Fix input encoding in SentenceVectorsDL by @krickert in #1072
- OPENNLP-1839: Fix native memory leak and vocabulary NPE in DocumentCategorizerDL @krickert in #1074
- OPENNLP-1840: Fix native memory leak and vocabulary NPE in NameFinderDL @krickert in #1076
- OPENNLP-1848: Update Morfologik to 2.2.0 by @dependabot[bot] in #1091
- OPENNLP-1849: Update junit5-system-exit to 2.0.3 by @dependabot[bot] in #1090
- Bump actions/setup-java from 5.2.0 to 5.3.0 by @dependabot[bot] in #1095
- Bump com.ruleoftech:markdown-page-generator-plugin from 2.4.3 to 2.5.2 by @dependabot[bot] in #1039
- Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.5.5 to 3.5.6 by @dependabot[bot] in #1065
- Bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #1069
- Bump org.jacoco:jacoco-maven-plugin from 0.8.14 to 0.8.15 by @dependabot[bot] in #1070
Full Changelog:
OpenNLP 3.0.0-M3
Apache OpenNLP 3.0.0-M3
This release focuses on security hardening, new NLP capabilities, and dependency maintenance.
Security Fixes
Three security issues are addressed in this release (also backported to 2.5.9).
XXE in DictionaryEntryPersistor (OPENNLP-1819)
The DictionaryEntryPersistor previously used a SAXParserFactory that did not enable secure processing or disable DTD handling, leaving external entity resolution active. A malicious dictionary file could exploit this for local file disclosure or SSRF before any dictionary entry was processed.
The parsing path is now aligned with the project's existing XmlUtil helper, which properly sets FEATURE_SECURE_PROCESSING and disallow-doctype-decl.
Arbitrary Class Instantiation in ExtensionLoader (OPENNLP-1820)
ExtensionLoader.instantiateExtension() performed its isAssignableFrom type check after Class.forName() had already executed the target class's static initializer, allowing a crafted model archive to trigger the static initializer of any class on the classpath.
The fix introduces a package-prefix allowlist consulted before Class.forName() is invoked:
- Classes under
opennlp.*remain permitted by default. - Other packages must be opted in via
ExtensionLoader.registerAllowedPackage(String)or theOPENNLP_EXT_ALLOWED_PACKAGESsystem property (comma-separated list).
OOM via Unbounded Array Allocation in AbstractModelReader (OPENNLP-1821)
getOutcomes(), getOutcomePatterns(), and getPredicates() read attacker-controlled 32-bit count fields from binary model streams and passed them directly to array allocations. A crafted .bin file could trigger an immediate OutOfMemoryError and crash the JVM.
Each count is now bounded (default 10,000,000, configurable via -DOPENNLP_MAX_ENTRIES=<n>), with negative or oversized values failing fast via IllegalArgumentException.
⚠️ For all three issues, users who cannot upgrade immediately should restrict input (dictionary and model files) to trusted sources only.
New Features & Improvements
- Roberta-based model support via ONNX — OPENNLP-1518 (#998)
- Byte Pair Encoding (BPE) tokenization — OPENNLP-1220 (#1011)
Parse.createFromTokens()convenience method for tokenized input — OPENNLP-53 (#1012)- Thread-safe ME classes by eliminating shared mutable instance state — OPENNLP-1816 (#1003)
What's Changed
- Apache OpenNLP 3.0.0-M2 by @mawiesne in #996
- OPENNLP-1518: Roberta-based Models - Add support for utilization via Onxx by @rzo1 in #998
- OPENNLP-1817: Update log4j2 to 2.25.4 by @dependabot[bot] in #1001
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #1009
- OPENNLP-1818: Update zlibsvm-core to 3.0.0 by @dependabot[bot] in #1000
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #1010
- OPENNLP-53: Add Parse.createFromTokens() for convenient tokenized input by @mawiesne in #1012
- OPENNLP-1220: Add support for Byte Pair Encoding (BPE) by @mawiesne in #1011
- Bump com.ruleoftech:markdown-page-generator-plugin from 2.4.2 to 2.4.3 by @dependabot[bot] in #1016
- Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 by @dependabot[bot] in #1014
- Bump actions/cache from 5.0.4 to 5.0.5 by @dependabot[bot] in #1017
- OPENNLP-1819: Align DictionaryEntryPersistor XML parsing with XmlUtil by @rzo1 in #1019
- OPENNLP-1816: Make ME classes thread-safe by eliminating shared mutable instance state by @krickert in #1003
- OPENNLP-1822: Update ONNX runtime to 1.25.0 by @dependabot[bot] in #1024
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #1025
- OPENNLP-1821: Prevent OutOfMemory Due To Huge Array Allocation by @subbudvk in #1022
- OPENNLP-1820: Restrict ExtensionLoader to allowlisted package prefixes by @subbudvk in #1021
New Contributors
Full Changelog: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311215&version=12356813
OpenNLP 2.5.9
Apache OpenNLP 2.5.9
This is a maintenance and security release on the 2.x line. It backports the security fixes shipped in 3.0.0-M3 and refreshes several dependencies.
Security Fixes
Three security issues are addressed in this release (also fixed in 3.0.0-M3 on the 3.x line).
XXE in DictionaryEntryPersistor (OPENNLP-1819)
The DictionaryEntryPersistor previously used a SAXParserFactory that did not enable secure processing or disable DTD handling, leaving external entity resolution active. A malicious dictionary file could exploit this for local file disclosure or SSRF before any dictionary entry was processed.
The parsing path is now aligned with the project's existing XmlUtil helper, which properly sets FEATURE_SECURE_PROCESSING and disallow-doctype-decl.
Arbitrary Class Instantiation in ExtensionLoader (OPENNLP-1820)
ExtensionLoader.instantiateExtension() performed its isAssignableFrom type check after Class.forName() had already executed the target class's static initializer, allowing a crafted model archive to trigger the static initializer of any class on the classpath.
The fix introduces a package-prefix allowlist consulted before Class.forName() is invoked:
- Classes under
opennlp.*remain permitted by default. - Other packages must be opted in via
ExtensionLoader.registerAllowedPackage(String)or theOPENNLP_EXT_ALLOWED_PACKAGESsystem property (comma-separated list).
OOM via Unbounded Array Allocation in AbstractModelReader (OPENNLP-1821)
getOutcomes(), getOutcomePatterns(), and getPredicates() read attacker-controlled 32-bit count fields from binary model streams and passed them directly to array allocations. A crafted .bin file could trigger an immediate OutOfMemoryError and crash the JVM.
Each count is now bounded (default 10,000,000, configurable via -DOPENNLP_MAX_ENTRIES=<n>), with negative or oversized values failing fast via IllegalArgumentException.
⚠️ For all three issues, users who cannot upgrade immediately should restrict input (dictionary and model files) to trusted sources only.
What's Changed
- Apache OpenNLP 2.5.8 by @mawiesne in #1004
- [2.x]: OPENNLP-1817: Update log4j2 to 2.25.4 by @dependabot[bot] in #999
- [2.x] Regenerated NOTICE file after dependency changes by @github-actions[bot] in #1008
- [2.x]: Bump actions/cache from 5.0.4 to 5.0.5 by @dependabot[bot] in #1018
- [2.x]: Bump com.ruleoftech:markdown-page-generator-plugin from 2.4.2 to 2.4.3 by @dependabot[bot] in #1015
- [2.x]: Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 by @dependabot[bot] in #1013
- [2.x] OPENNLP-1819: Align DictionaryEntryPersistor XML parsing with XmlUtil by @rzo1 in #1020
- [2.x]: OPENNLP-1822: Update ONNX runtime to 1.25.0 by @dependabot[bot] in #1023
- [2.x] Regenerated NOTICE file after dependency changes by @github-actions[bot] in #1026
Full Changelog: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311215&version=12356814
OpenNLP 2.5.8
Summary
Maintenance Infos:
- Bug Fixes:
- The SentenceDetector got three fixes in handling edge cases with abbreviation dictionaries (OPENNLP-1809, OPENNLP-1810, OPENNLP-1811)
- Improvements:
- The OpenNLP developer manual (HTML + PDF) got an uplift for the UIMA documentation part, being largely extended (OPENNLP-49)
- Some updates of dependencies
What's Changed
- OpenNLP 2.5.7 by @rzo1 in #911
- [2.x]: OPENNLP-1789: Update log4j2 to 2.25.3 by @dependabot[bot] in #917
- [2.x]: Bump org.codehaus.mojo:license-maven-plugin from 2.7.0 to 2.7.1 by @dependabot[bot] in #923
- [2.x]: OPENNLP-1794: Update JUnit to 6.0.2 by @dependabot[bot] in #928
- [2.x]: OPENNLP-1795: Move to Apache Parent 36 by @dependabot[bot] in #925
- [2.x]: OPENNLP-1796: Update logcaptor to 2.12.2 by @dependabot[bot] in #932
- [2.x]: OPENNLP-1795: Move to Apache Parent 37 by @dependabot[bot] in #934
- [2.x]: Bump actions/setup-java from 5.1.0 to 5.2.0 by @dependabot[bot] in #937
- [2.x]: Bump actions/checkout from 6.0.1 to 6.0.2 by @dependabot[bot] in #939
- [2.x]: Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 by @dependabot[bot] in #935
- [2.x]: Bump net.sf.xslthl:xslthl from 2.0.1 to 2.1.3 by @dependabot[bot] in #941
- [2.x]: Bump net.sf.offo:fop-hyph from 1.2 to 2.0 by @dependabot[bot] in #944
- [2.x]: OPENNLP-1797: Update ONNX runtime to 1.24.1 by @dependabot[bot] in #951
- [2.x]: Bump junit.version from 6.0.2 to 6.0.3 by @dependabot[bot] in #954
- [2.x]: Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.5.4 to 3.5.5 by @dependabot[bot] in #963
- [2.x]: OPENNLP-1802: Update ONNX runtime to 1.24.2 by @dependabot[bot] in #961
- [2.x]: OPENNLP-1805: Update logcaptor to 2.12.5 by @dependabot[bot] in #970
- [2.x]: OPENNLP-1802: Update ONNX runtime to 1.24.3 by @dependabot[bot] in #973
- [2.x]: Bump actions/cache from 5.0.3 to 5.0.4 by @dependabot[bot] in #978
- [2.x]: OPENNLP-1805: Update logcaptor to 2.12.6 by @dependabot[bot] in #991
Full Changelog: https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12356577&projectId=12311215
OpenNLP 3.0.0-M2
Summary
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 (substantial) modifications.
Key Highlights:
- Notable Changes:
- The minimum Java compiler level was raised to 21 (OPENNLP-1735)
- The artifact 'opennlp-models' was renamed to 'opennlp-model-resolver'. It can be used to detect and load OpenNLP compliant models from the classpath (OPENNLP-1807)
- New Features:
- Apache OpenNLP can now detect sentiment from text (OPENNLP-855)
- The eval corpus format for GermEval2014 is now supported (OPENNLP-976)
- Document Categorization is now possible via a binding to LibSVM (OPENNLP-1808)
- Bug Fixes:
- The SentenceDetector got three fixes in handling edge cases with abbreviation dictionaries (OPENNLP-1809, OPENNLP-1810, OPENNLP-1811) - NOTE: These fixes will be back-ported to the upcoming OpenNLP release 2.5.8 as well.
- Improvements:
- Language Codes passed in are now stricter validated to comply with ISO-693 standard (OPENNLP-991)
- The OpenNLP developer manual (HTML + PDF) got an uplift for the UIMA documentation part, being largely extended (OPENNLP-49)
What's Changed
- OPENNLP-1800: Evaluation Build Failure after Docs module packaging was switched to JAR by @rzo1 in #959
- Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.5.4 to 3.5.5 by @dependabot[bot] in #964
- OPENNLP-1802: Update ONNX runtime to 1.24.2 by @dependabot[bot] in #962
- Adjust Badge for Maven Central in README.md by @mawiesne in #960
- OPENNLP-1804: Fix artifact name in doc section on model-loading by @mawiesne in #966
- OPENNLP-1805: Update logcaptor to 2.12.5 by @dependabot[bot] in #967
- OPENNLP-976: Implement GermEval2014 Format by @rzo1 in #971
- OPENNLP-1802: Update ONNX runtime to 1.24.3 by @dependabot[bot] in #972
- OPENNLP-1735: Upgrade minimum Java compiler level to 21 by @mawiesne in #975
- OPENNLP-1806: Update checkstyle plugin to 13.x by @dependabot[bot] in #968
- Bump actions/cache from 5.0.3 to 5.0.4 by @dependabot[bot] in #977
- OPENNLP-1714: Adjust Dev Manual to modularized structure by @rzo1 in #976
- OPENNLP-1807: Rename opennlp-models to opennlp-model-resolver by @rzo1 in #979
- OPENNLP-1803: Fix missing apidocs for all modules aside from opennlp-tools by @mawiesne in #982
- OPENNLP-1801: Extract eval tests into separate opennlp-eval-tests module by @rzo1 in #980
- OPENNLP-1809: SentenceDetector misses multi-letter abbreviations at sentence start by @mawiesne in #983
- OPENNLP-1810: Fix SentenceDetector fails to detect multiple identical abbreviations in the same sentence by @rzo1 in #984
- OPENNLP-1808: Add SVM-based document categorization via zlibsvm by @rzo1 in #981
- OPENNLP-855: Add SentimentDetector to derive sentiment from text by @mawiesne in #579
- OPENNLP-1811: Fix SentenceDetector missing abbreviations at non-first sentence start with useTokenEnd=false by @rzo1 in #985
- OPENNLP-1812: Move opennlp-tools util classes to core components by @mawiesne in #987
- OPENNLP-49: Update documentation for the uima integration by @rzo1 in #988
- OPENNLP-991: Validate all passed in language codes by @rzo1 in #989
- OPENNLP-1805: Update logcaptor to 2.12.6 by @dependabot[bot] in #990
- OPENNLP-1814: Ensure NOTICE file in opennlp-distr is updated via GH action by @mawiesne in #992
- OPENNLP-1815: Adjust maven-release-plugin config to skip tests by default by @mawiesne in #995
Full Changelog: https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12356724&projectId=12311215
OpenNLP 3.0.0-M1
Summary
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.
Key Highlights and Recommendations:
• Modularization: The project is now organized into multiple modules:
• opennlp-api, opennlp-core, opennlp-cli, opennlp-extensions, ML modules (e.g., opennlp-ml-maxent, opennlp-ml-perceptron), and more.
• Users can include only the modules needed, reducing dependency footprint.
• Only opennlp-runtime is mandatory for basic functionality.
• CLI Stability: Existing command-line usage remains unchanged.
What's Changed
- OPENNLP-1708: Raise OpenNLP version to 3.x on main branch by @mawiesne in #785
- OPENNLP-1724: Update JUnit to 5.13.0 by @dependabot[bot] in #787
- Remove code review requirement for 2.x branch to allow cherry picking already reviewed commits by @rzo1 in #788
- Disable merge request requirement for opennlp-2.x by @rzo1 in #789
- OPENNLP-1724: Update JUnit to 5.13.1 by @dependabot[bot] in #790
- OPENNLP-1746: Move to Apache Parent 35 by @dependabot[bot] in #793
- OPENNLP-1747: Update build-helper-maven-plugin to 3.6.1 by @dependabot[bot] in #791
- OPENNLP-1708: Introduce new OpenNLP module structure by @mawiesne in #786
- OPENNLP-1751: Update log4j2 to 2.25.0 by @dependabot[bot] in #797
- OPENNLP-1752 Update license-maven-plugin to 2.6.0 by @dependabot[bot] in #796
- OPENNLP-1747: Update build-helper-maven-plugin to 3.6.1 by @dependabot[bot] in #795
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #798
- OPENNLP-1754 - Convert GH Action Tags into Pinned SHA by @rzo1 in #800
- OPENNLP-1745: SentenceDetector - Add Junit test for useTokenEnd = false by @NishantShri4 in #792
- Fix Eval Build for OpenNLP 3.x by @rzo1 in #794
- OPENNLP-1754: Update actions/setup-java to 4.7.1 by @dependabot[bot] in #802
- OPENNLP-1753: Switch to pre-trained Model binaries v1.3 by @mawiesne in #799
- OPENNLP-1724: Update JUnit to 5.13.2 by @dependabot[bot] in #804
- OPENNLP-1755 - Align Module Names with OpenNLP Models Name by @rzo1 in #803
- OPENNLP-1756: Update classgraph to 4.8.180 by @dependabot[bot] in #805
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #807
- OPENNLP-1724: Update JUnit to 5.13.3 by @dependabot[bot] in #808
- OPENNLP-1758: Enhance Javadoc of UIMA extension by @mawiesne in #813
- OPENNLP-1760: Make SourceForge URLs in Tests configurable to avoid 403/Rate limiting issues by @rzo1 in #817
- OPENNLP-1753: Switch to Models v1.3 - Follow up by @mawiesne in #815
- OPENNLP-1757: Expose probs() method in thread-safe probabilistic ME classes by @mawiesne in #812
- OPENNLP-1759: Optimize computation of hashCode in StringList by @mawiesne in #814
- OPENNLP-1751: Update log4j2 to 2.25.1 by @dependabot[bot] in #818
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #819
- Update copyright year in several files by @mawiesne in #820
- OPENNLP-1764: Update classgraph to 4.8.181 by @dependabot[bot] in #824
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #825
- OPENNLP-1762: Fix mvn clean install by setting default download property to SourceForge for surefire/failsafe by @rzo1 in #821
- OPENNLP-1766: Update logcaptor to 2.12.0 by @dependabot[bot] in #827
- OPENNLP-1767: Fix sentence detection when an abbreviation overlaps at sentence end by @mawiesne in #829
- Bump actions/cache from 4.2.3 to 4.2.4 by @dependabot[bot] in #830
- Bump actions/checkout from 4.2.2 to 5.0.0 by @dependabot[bot] in #832
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.2 to 3.11.3 by @dependabot[bot] in #833
- Bump actions/setup-java from 4.7.1 to 5.0.0 by @dependabot[bot] in #834
- OPENNLP-1766: Update logcaptor to 2.12.1 by @dependabot[bot] in #836
- OPENNLP-1769: Update maven-failsafe-plugin to 3.5.4 by @dependabot[bot] in #837
- Enable dependabot for non default branches (2.x) by @rzo1 in #838
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.3 to 3.12.0 by @dependabot[bot] in #850
- Bump actions/cache from 4.2.4 to 4.3.0 by @dependabot[bot] in #852
- Bump junit.version from 5.13.3 to 5.13.4 by @dependabot[bot] in #843
- Enable Java 25 as additional CI Java version since it is GA now. by @rzo1 in #839
- OPENNLP-1771: Update ONNX runtime to 1.23.0 by @dependabot[bot] in #854
- OPENNLP-1772: Update log4j2 to 2.25.2 by @dependabot[bot] in #855
- OPENNLP-1773: Update license-maven-plugin to 2.7.0 by @dependabot[bot] in #858
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #862
- OPENNLP-1774: Update JUnit to 6.0.0 by @dependabot[bot] in #868
- OPENNLP-1776: Update forbiddenapis plugin to 3.10 by @dependabot[bot] in #869
- OPENNLP-1775: Update Uimaj to 3.6.1 by @dependabot[bot] in #867
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #870
- Bump org.jacoco:jacoco-maven-plugin from 0.8.13 to 0.8.14 by @dependabot[bot] in #879
- OPENNLP-1777: Update ONNX runtime to 1.23.1 by @dependabot[bot] in #878
- OPENNLP-1778: Update classgraph to 4.8.184 by @dependabot[bot] in #873
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #880
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #881
- OPENNLP-1781: SentenceDetectorME throws StringIndexOutOfBoundsException when sentence starts with an abbreviation by @rzo1 in #883
- OPENNLP-1779: Update Checkstyle to 12.0.1 by @dependabot[bot] in #875
- OPENNLP-1783: Update ONNX runtime to 1.23.2 by @dependabot[bot] in #886
- Regenerated NOTICE file after dependency changes by @github-actions[bot] in #887
- OPENNLP-1784: Update JUnit to 6.0.1 by @dependabot[bot] in #888
- OPENNLP-1782: Add tagging examples to verify French POS model by @meriam2303 in #863
- Bump actions/checkout from 5.0.0 to 5.0.1 by @dependabot[bot] in #890
- Bump actions/checkout from 5.0.1 to 6.0.0 by @dependabot[bot] in #893
- Bump peter-evans/create-pull-request from 7.0.8 to 7.0.9 by @dependabot[bot] in #898
- OPENNLP-1785: Ignore ParserConfigurationException in DocumentBuilder when setting XML secure processing feature unsupported on Android by @soupslurpr in #896
- OPENNLP-1788: Enhance
opennlp.tools.util.Versionto parse suffixed version by @rsvoboda in #899 - Bump org.apache.maven.plugins:maven-assembly-plugin from 3.7.1 to 3.8.0 by @dependabot[bot] in #901
- Bump actions/checkout from 6.0.0 to 6.0.1 by @dependabot[bot] in #903
- Bump actions/setup-java from 5.0.0 to 5.1.0 by @dependabot[bot] in #905
- OPENNLP-1770: Updating logo for docs by @jzonthemtn in #895
- Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 by @dependabot[bot] in #908
- Bump actions/cache from 4.3.0 to 5.0.0 by @dependabot[bot] in #912
- Bump peter-evans/create-pull-request from 7.0.11 to...