<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>News - Apache OpenNLP</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="color-scheme" content="dark light">
    <meta name="description" content="Apache OpenNLP  is a machine learning based toolkit for the processing of natural language text." />
    <meta name="author" content="The Apache OpenNLP Team" />
    <meta name="keywords" content="java, natural language processing, nlp, apache, open source, web site" />
    <meta name="generator" content="JBake"/>
    
    <!-- RSS Feed -->
    <link rel="alternate" type="application/rss+xml" title="RSS" href="/feed.xml" />

    <!-- Favicon -->
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" sizes="192x192"  href="/android-icon-192x192.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
    <link rel="manifest" href="/manifest.json">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
    <meta name="theme-color" content="#ffffff">

    <!-- The styles -->
    <link href="/css/bootstrap.min.css" rel="stylesheet">
    <link href="/css/font-awesome.min.css" rel="stylesheet">
    <link href="/css/asciidoctor.css" rel="stylesheet">
    <link href="/css/prettify.css" rel="stylesheet">
    <link href="/css/custom-style.css" rel="stylesheet">
    <link href="/css/scheme-light.css" rel="stylesheet">
    <link href="/css/scheme-dark.css" rel="stylesheet">

    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
    <!--[if lt IE 9]>
      <script src="/js/html5shiv.js"></script>
    <![endif]-->
</head>
<body onload="prettyPrint()">
<span class="visible-lg">
<a href="https://github.com/apache/opennlp"><img style="z-index: 9999; position: absolute; top: 0; right: 0; border: 0;" src="/img/fork-me-on-github.png" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a>
</span>

<nav class="navbar navbar-default">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-items" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="/">
                <img alt="Brand" src="/img/opennlp-navbar-logo.png" class="img-responsive" width="100px" style="position: relative; top: -3px;">
            </a>
        </div>

        <div class="collapse navbar-collapse" id="navbar-items">
            <ul class="nav navbar-nav">
                <li>
                    <a href="/"><span class="glyphicon glyphicon-home"></span> Home</a>
                </li>

                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-download-alt"></span> Download <b class="caret"></b></a>
                    <ul class="dropdown-menu">
		                <li><a href="/download.html">OpenNLP Releases</a></li>
                        <li><a href="/models.html">OpenNLP Models</a></li>
		                <li><a href="/maven-dependency.html">Maven Integration</a></li>
		                <li><a href="/gradle-dependency.html">Gradle Integration</a></li>
		            </ul>
                </li>

                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-flag"></span> General <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        
                        <li><a href="/news/">News</a></li>
			            <li><a href="https://blogsarchive.apache.org/#opennlp" target="_blank">Blog</a></li>
                        <li><a href="/mailing-lists.html">Mailing Lists</a></li>
                        <li><a href="https://issues.apache.org/jira/browse/OPENNLP" target="_blank">Issue tracker</a></li>
                        <li><a href="/books-tutorials-and-talks.html">Books, Tutorials and Talks</a></li>
                        <li><a href="/powered-by-opennlp.html">Powered by Apache OpenNLP</a></li>
                        
                    </ul>
                </li>

                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-book"></span> Documentation <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="/docs/">Manual and Javadocs</a></li>
                        <li><a href="/faq.html">FAQ</a></li>
                        <li><a href="https://cwiki.apache.org/OPENNLP" target="_blank">Wiki</a></li>
                    </ul>
                </li>

                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-console"></span> Development <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="/get-involved.html">Get Involved</a></li>
                        <li><a href="/source-code.html">Source Code</a></li>
                        <li><a href="/using-git.html">Using Git</a></li>
                        <li><a href="/building.html">Building</a></li>
                        <li><a href="/code-conventions.html">Code Conventions</a></li>
                        <li><a href="/release.html">Release</a></li>
                        <li><a href="/release-model.html">Release Models</a></li>
                        <li><a href="/team.html">Project Team</a></li>
                    </ul>
                </li>

            </ul>
            <ul class="nav navbar-nav navbar-right">
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-leaf"></span> ASF <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="https://www.apache.org/">The Apache Software Foundation</a></li>
                        <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
                        <li><a href="https://www.apache.org/security/">Security</a></li>
                        <li><a href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
                    </ul>
                </li>
            </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>

<div class="container">

      <div class="row-fluid marketing">
        <div class="span9">
          <h2>News</h2>
          <ul>
          			<li><p>2024-04-25: <a href="/news/release-233.html">Apache OpenNLP 2.3.3 released</a></p></li>
          			<li><p>2024-02-04: <a href="/news/release-232.html">Apache OpenNLP 2.3.2 released</a></p></li>
          			<li><p>2023-11-22: <a href="/news/release-231.html">Apache OpenNLP 2.3.1 released</a></p></li>
          			<li><p>2023-07-31: <a href="/news/release-230.html">Apache OpenNLP 2.3.0 released</a></p></li>
          			<li><p>2023-04-22: <a href="/news/release-220.html">Apache OpenNLP 2.2.0 released</a></p></li>
          			<li><p>2023-02-23: <a href="/news/release-211.html">Apache OpenNLP 2.1.1 released</a></p></li>
          			<li><p>2022-11-23: <a href="/news/release-210.html">Apache OpenNLP 2.1.0 released</a></p></li>
          			<li><p>2022-06-05: <a href="/news/release-200.html">Apache OpenNLP 2.0.0 released</a></p></li>
          			<li><p>2021-11-03: <a href="/news/release-194.html">Apache OpenNLP 1.9.4 released</a></p></li>
          			<li><p>2021-05-30: <a href="/news/news-2021-05-30.html">OpenNLP Pre-trained Models Available</a></p></li>
          			<li><p>2020-07-31: <a href="/news/release-193.html">Apache OpenNLP 1.9.3 released</a></p></li>
          			<li><p>2019-12-26: <a href="/news/release-192.html">Apache OpenNLP 1.9.2 released</a></p></li>
          			<li><p>2018-12-31: <a href="/news/release-191.html">Apache OpenNLP 1.9.1 released</a></p></li>
          			<li><p>2018-07-02: <a href="/news/release-190.html">Apache OpenNLP 1.9.0 released</a></p></li>
          			<li><p>2017-12-24: <a href="/news/release-184.html">Apache OpenNLP 1.8.4 released</a></p></li>
          			<li><p>2017-11-02: <a href="/news/model-langdetect-183.html">Language Detector Model for Apache OpenNLP released</a></p></li>
          			<li><p>2017-10-27: <a href="/news/release-183.html">Apache OpenNLP 1.8.3 released</a></p></li>
          			<li><p>2017-10-02: <a href="/news/cve-2017-12620.html">CVE-2017-12620 - Apache OpenNLP XXE vulnerability</a></p></li>
          			<li><p>2017-09-15: <a href="/news/release-182.html">Apache OpenNLP 1.8.2 released</a></p></li>
          			<li><p>2017-07-08: <a href="/news/release-181.html">Apache OpenNLP 1.8.1 released</a></p></li>
          			<li><p>2017-05-19: <a href="/news/release-180.html">Apache OpenNLP 1.8.0 released</a></p></li>
          			<li><p>2017-02-04: <a href="/news/release-172.html">Apache OpenNLP 1.7.2 released</a></p></li>
          			<li><p>2017-01-23: <a href="/news/release-171.html">Apache OpenNLP 1.7.1 released</a></p></li>
          			<li><p>2016-12-31: <a href="/news/release-170.html">Apache OpenNLP 1.7.0 released</a></p></li>
          			<li><p>2015-07-13: <a href="/news/release-160.html">Apache OpenNLP 1.6.0 released</a></p></li>
          			<li><p>2013-04-17: <a href="/news/release-153.html">Apache OpenNLP 1.5.3 released</a></p></li>
          			<li><p>2012-02-15: <a href="/news/news-2012-02-15.html">OpenNLP graduated from the incubator as a Top Level Project</a></p></li>
          			<li><p>2011-12-22: <a href="/news/news-2011-12-22.html">New members and new features&#8230;&#8203;</a></p></li>
          			<li><p>2011-11-28: <a href="/news/news-2011-05-02.html">First release of 1.5.1-incubating is ready!</a></p></li>
          			<li><p>2011-11-28: <a href="/news/release-152.html">Apache OpenNLP 1.5.2 Incubating released</a></p></li>
          			<li><p>2011-01-29: <a href="/news/news-2011-01-29.html">Issue tracker moved to JIRA</a></p></li>
          			<li><p>2010-12-24: <a href="/news/news-2010-12-24.html">Working on Apache Incubator requirements</a></p></li>
          			<li><p>2010-11-23: <a href="/news/news-2010-11-23.html">OpenNLP is now into Apache Incubation!</a></p></li>
          			<li><p>2010-11-18: <a href="/news/news-2010-11-18.html">OpenNLP is candidated to Apache Incubation!</a></p></li>
          </ul>
          <p></p>
          <p>Subscribe to Apache OpenNLP updates using the <a href="/feed.xml">feed</a>.</p>
        </div>        
      </div>

      <hr>

</div>

    <footer class='footer'>
        <div class="container">
            <p class="text-muted">Copyright &copy; 2024  The Apache Software Foundation, Licensed under the
            <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>  <br>
            Apache OpenNLP, OpenNLP, Apache, the Apache feather logo, and the Apache OpenNLP project logo are
            trademarks of The Apache Software Foundation. -
            <a href="/privacy-policy.html">Privacy Policy</a></p>
        </div>
    </footer>

    <!-- Le javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="https://www.apachecon.com/event-images/snippet.js"></script>
    <script src="/js/jquery-3.2.1.min.js"></script>
    <script src="/js/bootstrap.min.js"></script>
    <script src="/js/prettify.js"></script>
    
    <script type="text/javascript">

      var link = $('a[href="' + this.location.pathname + '"]');
      if (link != undefined)
    	  link.parents('li,ul').addClass('active');
	
	</script>

    <!-- Matomo -->
    <script>
        var _paq = window._paq = window._paq || [];
        /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
        /* We explicitly disable cookie tracking to avoid privacy issues */
        _paq.push(['disableCookies']);
        _paq.push(['trackPageView']);
        _paq.push(['enableLinkTracking']);
        (function() {
            var u="//analytics.apache.org/";
            _paq.push(['setTrackerUrl', u+'matomo.php']);
            _paq.push(['setSiteId', '33']);
            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
            g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
        })();
    </script>
    <!-- End Matomo Code -->
</body>
</html>