<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_51) on Wed Jul 05 09:11:18 EDT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Class Hierarchy (Apache OpenNLP Morfologik Addon 1.8.1 API)</title>
<meta name="date" content="2017-07-05">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Class Hierarchy (Apache OpenNLP Morfologik Addon 1.8.1 API)";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li class="navBarCell1Rev">Tree</li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
<li><a href="overview-tree.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 class="title">Hierarchy For All Packages</h1>
<span class="packageHierarchyLabel">Package Hierarchies:</span>
<ul class="horizontal">
<li><a href="opennlp/morfologik/builder/package-tree.html">opennlp.morfologik.builder</a>, </li>
<li><a href="opennlp/morfologik/cmdline/package-tree.html">opennlp.morfologik.cmdline</a>, </li>
<li><a href="opennlp/morfologik/cmdline/builder/package-tree.html">opennlp.morfologik.cmdline.builder</a>, </li>
<li><a href="opennlp/morfologik/lemmatizer/package-tree.html">opennlp.morfologik.lemmatizer</a>, </li>
<li><a href="opennlp/morfologik/tagdict/package-tree.html">opennlp.morfologik.tagdict</a>, </li>
<li><a href="opennlp/morfologik/util/package-tree.html">opennlp.morfologik.util</a></li>
</ul>
</div>
<div class="contentContainer">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Object</span></a>
<ul>
<li type="circle">opennlp.tools.util.BaseToolFactory
<ul>
<li type="circle">opennlp.tools.postag.POSTaggerFactory
<ul>
<li type="circle">opennlp.morfologik.tagdict.<a href="opennlp/morfologik/tagdict/MorfologikPOSTaggerFactory.html" title="class in opennlp.morfologik.tagdict"><span class="typeNameLink">MorfologikPOSTaggerFactory</span></a></li>
</ul>
</li>
</ul>
</li>
<li type="circle">opennlp.morfologik.cmdline.<a href="opennlp/morfologik/cmdline/CLI.html" title="class in opennlp.morfologik.cmdline"><span class="typeNameLink">CLI</span></a></li>
<li type="circle">opennlp.tools.cmdline.CmdLineTool
<ul>
<li type="circle">opennlp.tools.cmdline.BasicCmdLineTool
<ul>
<li type="circle">opennlp.morfologik.cmdline.builder.<a href="opennlp/morfologik/cmdline/builder/MorfologikDictionaryBuilderTool.html" title="class in opennlp.morfologik.cmdline.builder"><span class="typeNameLink">MorfologikDictionaryBuilderTool</span></a></li>
<li type="circle">opennlp.morfologik.cmdline.builder.<a href="opennlp/morfologik/cmdline/builder/XMLDictionaryToTableTool.html" title="class in opennlp.morfologik.cmdline.builder"><span class="typeNameLink">XMLDictionaryToTableTool</span></a></li>
</ul>
</li>
</ul>
</li>
<li type="circle">opennlp.morfologik.builder.<a href="opennlp/morfologik/builder/MorfologikDictionayBuilder.html" title="class in opennlp.morfologik.builder"><span class="typeNameLink">MorfologikDictionayBuilder</span></a></li>
<li type="circle">opennlp.morfologik.lemmatizer.<a href="opennlp/morfologik/lemmatizer/MorfologikLemmatizer.html" title="class in opennlp.morfologik.lemmatizer"><span class="typeNameLink">MorfologikLemmatizer</span></a> (implements opennlp.tools.lemmatizer.Lemmatizer)</li>
<li type="circle">opennlp.morfologik.tagdict.<a href="opennlp/morfologik/tagdict/MorfologikTagDictionary.html" title="class in opennlp.morfologik.tagdict"><span class="typeNameLink">MorfologikTagDictionary</span></a> (implements opennlp.tools.postag.TagDictionary)</li>
<li type="circle">opennlp.morfologik.util.<a href="opennlp/morfologik/util/MorfologikUtil.html" title="class in opennlp.morfologik.util"><span class="typeNameLink">MorfologikUtil</span></a></li>
</ul>
</li>
</ul>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li class="navBarCell1Rev">Tree</li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
<li><a href="overview-tree.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
