<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>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">
    <!-- Jumbotron -->
    <div class="jumbotron" style="text-align: center">
        <img src="/img/opennlp-logo.png" alt="Apache OpenNLP logo" />
        <h1>Welcome to Apache OpenNLP</h1>
        <p class="lead">The Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text.</p>
        <a class="btn btn-lg btn-primary" href="/docs/" role="button" style="background-color: #832778; border: 1px solid #832778;"><span class="glyphicon glyphicon-chevron-right"></span> Get started</a>&nbsp;
        <a class="btn btn-lg btn-primary" href="/download.html" role="button" style="background-color: #BE2043; border: 1px solid #BE2043;"><span class="glyphicon glyphicon-download-alt"></span> Download</a>
    </div>

    <div class="row">
        <div class="col-lg-6">
            <h2>About</h2>
            <p>OpenNLP supports the most common NLP tasks, such as <i>tokenization</i>, <i>sentence segmentation</i>, <i>part-of-speech tagging</i>, <i>named entity extraction</i>, <i>chunking</i>, <i>parsing</i>, <i>language detection</i> and <i>coreference resolution</i>.</p>
            <p>Find out more about it in our <a href="/docs/">manual</a>.</p>
        </div>
        <div class="col-lg-6">
            <h2>Getting Involved</h2>
            <p>The Apache OpenNLP project is developed by volunteers and is always looking for new contributors to work on all parts of the project. Every contribution is welcome and needed to make it better. A contribution can be anything from a small documentation typo fix to a new component.</p>
            <p>Learn more about how you can <a href="/get-involved.html">get involved</a>.</p>
        </div>
    </div>
    <div class="row">
        <div class="col-lg-12 text-center">
            <p><a class="acevent" data-format="square" data-mode="dark" data-width="480"></a></p>
        </div>
    </div>

</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>