{"componentChunkName":"component---node-modules-carrotsearch-gatsby-theme-apidocs-templates-documentation-page-js","path":"/java-api-basics/","result":{"data":{"html":{"frontmatter":{"id":"java-api-basics","title":"Java API Basics"},"html":"<article>\n  <h1>Java API Basics</h1>\n\n  <p id=\"4a23954a\">\n    You can use Lingo3G Java API to call clustering from your Java software.\n    This article explains the basics of the API.\n  </p>\n\n  <section id=\"dependency-setup\">\n    <h2>\n        <a class=\"anchor\" href=\"#dependency-setup\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Dependency setup\n      </h2>\n\n    <p id=\"dependency-setup:9e7bfa0f\">\n      To set up Lingo3G as a dependency in your project, perform the following\n      steps:\n    </p>\n\n    <ol>\n      <li>\n        <p id=\"dependency-setup:66d7a26c\">\n          Install Lingo3G POM file in your local Maven repository by running:\n        </p>\n\n        <div class=\"gatsby-highlight\">\n    <pre class=\"language-shell\"><code data-language=\"shell\">mvn install:install-file -Dfile<span class=\"token operator\">=</span>lib/lingo3g-*.jar -DpomFile<span class=\"token operator\">=</span>lib/lingo3g-*.pom</code></pre>\n  </div>\n\n        <p id=\"dependency-setup:2e81b420\">\n          Alternatively, install the dependency on your company's\n          shared-artifact servers, such as\n          <a href=\"https://www.sonatype.com/product-nexus-repository\">Sonatype Nexus</a>.\n        </p>\n      </li>\n\n      <li>\n        <p id=\"dependency-setup:5952566f\">Add a Lingo3G dependency to your project.</p>\n\n        <ul>\n          <li>\n            <p id=\"dependency-setup:26e09aef\">For Maven projects, add the following dependency:</p>\n\n            <figure id=\"dependency-setup:maven-dependency\">\n              <div class=\"gatsby-highlight\">\n    <pre class=\"language-xml\"><code data-language=\"xml\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>dependency</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>groupid</span><span class=\"token punctuation\">></span></span>com.carrotsearch.lingo3g<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>groupid</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>artifactid</span><span class=\"token punctuation\">></span></span>lingo3g<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>artifactid</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>version</span><span class=\"token punctuation\">></span></span>2.0.0<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>version</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>dependency</span><span class=\"token punctuation\">></span></span></code></pre>\n  </div>\n\n              <figcaption>\n                <p>Lingo3G Maven dependency.</p>\n              </figcaption>\n            </figure>\n          </li>\n\n          <li>\n            <p id=\"dependency-setup:ccefc1ca\">For Gradle projects, add the following dependency:</p>\n\n            <figure id=\"dependency-setup:gradle-dependency\">\n              <div class=\"gatsby-highlight\">\n    <pre class=\"language-groovy\"><code data-language=\"groovy\">dependencies <span class=\"token punctuation\">{</span>\n  <span class=\"token function\">implementation</span><span class=\"token punctuation\">(</span><span class=\"token string gstring\">\"com.carrotsearch.lingo3g:lingo3g:2.0.0\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span></code></pre>\n  </div>\n\n              <figcaption>\n                <p>Lingo3G Gradle dependency</p>\n              </figcaption>\n            </figure>\n\n            <p id=\"dependency-setup:8f006ab3\">\n              (Here we use<code>implementation</code> as a particular\n              configuration to attach the dependency to.)\n            </p>\n\n            <p id=\"dependency-setup:18b9ea78\">\n              Alternatively, a gradle dependency can just include the set of JAR\n              files from under the distribution's <code>lib/</code> folder:\n            </p>\n\n            <div class=\"gatsby-highlight\">\n    <pre class=\"language-groovy\"><code data-language=\"groovy\">dependencies <span class=\"token punctuation\">{</span>\n  implementation <span class=\"token function\">fileTree</span><span class=\"token punctuation\">(</span><span class=\"token string gstring\">\"lingo3g-distribution/lib\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">include</span><span class=\"token punctuation\">(</span><span class=\"token string gstring\">\"**/*.jar\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span></code></pre>\n  </div>\n          </li>\n        </ul>\n      </li>\n    </ol>\n  </section>\n\n  <section id=\"api-overview\">\n    <h2>\n        <a class=\"anchor\" href=\"#api-overview\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>API overview\n      </h2>\n\n    <p id=\"api-overview:8ffda028\">\n      The Java code invoking Lingo3G clustering needs to perform the following\n      steps:\n    </p>\n\n    <ol>\n      <li>\n        <p id=\"api-overview:e423340a\">\n          Load and cache the reusable component – the\n          <code>LanguageComponents</code> instance.\n        </p>\n\n        <div class=\"warning\" id=\"api-overview:378ee20a\">\n          <strong>Load <code>LanguageComponents</code> only once.</strong>\n\n          <p id=\"api-overview:400c2693\">\n            <code>LanguageComponents</code> contains various linguistic\n            resources, such as dictionaries and stemmers, and may take\n            significant time to load. Load <code>LanguageComponents</code> once\n            and reuse for all clustering calls. The class is thread-safe, so\n            share one instance between all processing threads.\n          </p>\n        </div>\n      </li>\n\n      <li>\n        <p id=\"api-overview:60d39c72\">For each clustering call:</p>\n\n        <ol>\n          <li>\n            <p id=\"api-overview:06826ced\">\n              Create the disposable component – the\n              <code>Lingo3GClusteringAlgorithm</code>\n              instance.\n            </p>\n          </li>\n\n          <li>\n            <p id=\"api-overview:ada2f77a\">\n              Prepare input for clustering – a stream of\n              <code>Document</code> instances.\n            </p>\n          </li>\n\n          <li>\n            <p id=\"api-overview:b8792b26\">\n              Perform clustering, reusing the<code>LanguageComponents</code>\n              instance loaded previously.\n            </p>\n          </li>\n        </ol>\n      </li>\n    </ol>\n\n    <p id=\"api-overview:937e67dc\">\n      The <a href=\"#basic-clustering\">Basic clustering</a> section shows code\n      examples that implement the above steps.\n    </p>\n  </section>\n\n  <section id=\"basic-clustering\">\n    <h2>\n        <a class=\"anchor\" href=\"#basic-clustering\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Basic clustering\n      </h2>\n\n    <p id=\"basic-clustering:ff7c6ca6\">\n      This section shows how to invoke Lingo3G clustering, illustrating each\n      step with code taken from the\n      <code>E01_ClusteringBasics.java</code> example class. It shows just the\n      key elements required to process a stream of documents in English, without\n      any parameter or language resource tuning.\n    </p>\n\n    <p id=\"basic-clustering:1f4e6ef0\">\n      Make sure you <a href=\"/installation/#license-file:locations:java-api\">install the license file</a>\n      before running any Java API code examples. For quick tests, you can\n      copy the license file to your home directory.\n    </p>\n\n    <section id=\"basic-clustering:load-reusable-components\">\n      <h3>\n        <a class=\"anchor\" href=\"#basic-clustering:load-reusable-components\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Load reusable components\n      </h3>\n\n      <p id=\"basic-clustering:load-reusable-components:020bc0ec\">\n        First, load the reusable components – the default language\n        resources for the English language. The\n        <code>LanguageComponents</code> instance is thread-safe, so you should\n        reuse it for all subsequent clustering calls.\n      </p>\n\n      <div class=\"gatsby-highlight\">\n    <pre class=\"language-java\"><code data-language=\"java\"><span class=\"token comment\">// Our documents are in English so we load appropriate language resources.</span>\n<span class=\"token comment\">// This call can be heavy and an instance of LanguageComponents should be</span>\n<span class=\"token comment\">// created once and reused across different clustering calls.</span>\n<span class=\"token class-name\">LanguageComponents</span> languageComponents <span class=\"token operator\">=</span> <span class=\"token class-name\">LanguageComponents</span><span class=\"token punctuation\">.</span><span class=\"token function\">loader</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">load</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">language</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"English\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre>\n  </div>\n    </section>\n\n    <section id=\"basic-clustering:create-disposable-components\">\n      <h3>\n        <a class=\"anchor\" href=\"#basic-clustering:create-disposable-components\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Create disposable components\n      </h3>\n\n      <p id=\"basic-clustering:create-disposable-components:6e05ef49\">\n        Next, create the disposable component – a\n        <code>Lingo3GClusteringAlgorithm</code>\n        instance:\n      </p>\n\n      <div class=\"gatsby-highlight\">\n    <pre class=\"language-java\"><code data-language=\"java\"><span class=\"token class-name\">Lingo3GClusteringAlgorithm</span> algorithm <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Lingo3GClusteringAlgorithm</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre>\n  </div>\n    </section>\n\n    <section id=\"basic-clustering:prepare-documents\">\n      <h3>\n        <a class=\"anchor\" href=\"#basic-clustering:prepare-documents\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Prepare documents\n      </h3>\n\n      <p id=\"basic-clustering:prepare-documents:d751b3c1\">\n        Next, assemble the input for clustering – a stream of\n        <code>Document</code> instances. Each document must implement a single\n        method that presents its clusterable text fields to the algorithm:\n      </p>\n\n      <div class=\"gatsby-highlight\">\n    <pre class=\"language-java\"><code data-language=\"java\"><span class=\"token keyword\">void</span> <span class=\"token function\">visitFields</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">BiConsumer</span><span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">></span></span> fieldConsumer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre>\n  </div>\n\n      <p id=\"basic-clustering:prepare-documents:decb1cb9\">\n        This example uses hardcoded values from an array defined in the\n        <code>ExamplesData</code> class:\n      </p>\n\n      <div class=\"gatsby-highlight\">\n    <pre class=\"language-java\"><code data-language=\"java\"><span class=\"token keyword\">static</span> <span class=\"token keyword\">final</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> DOCUMENTS_DATA_MINING <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token string\">\"http://en.wikipedia.org/wiki/Data_mining\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"Data mining -\"</span> <span class=\"token operator\">+</span> <span class=\"token string\">\" Wikipedia, the free \"</span> <span class=\"token operator\">+</span> <span class=\"token string\">\"encyclopedia\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"Article about knowledge-discovery in databases (KDD), the practice \"</span>\n        <span class=\"token operator\">+</span> <span class=\"token string\">\"of automatically \"</span>\n        <span class=\"token operator\">+</span> <span class=\"token string\">\"searching large stores of data for patterns.\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span></code></pre>\n  </div>\n\n      <p id=\"basic-clustering:prepare-documents:fc542906\">\n        Use Java streams for an easy way to covert data into\n        <code>Document</code> instances. Note that the code only submits the\n        <code>title</code> and <code>snippet</code> fields for clustering, it\n        omits the URL because it is not clusterable text.\n      </p>\n\n      <div class=\"gatsby-highlight\">\n    <pre class=\"language-java\"><code data-language=\"java\"><span class=\"token comment\">// Create a stream of \"documents\" for clustering.</span>\n<span class=\"token comment\">// Each such document provides text content fields to a visitor.</span>\n<span class=\"token class-name\">Stream</span><span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Document</span><span class=\"token punctuation\">></span></span> documentStream <span class=\"token operator\">=</span>\n    <span class=\"token class-name\">Arrays</span><span class=\"token punctuation\">.</span><span class=\"token function\">stream</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">ExamplesData</span><span class=\"token punctuation\">.</span>DOCUMENTS_DATA_MINING<span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span>\n            fields <span class=\"token operator\">-></span>\n                <span class=\"token punctuation\">(</span>fieldVisitor<span class=\"token punctuation\">)</span> <span class=\"token operator\">-></span> <span class=\"token punctuation\">{</span>\n                  fieldVisitor<span class=\"token punctuation\">.</span><span class=\"token function\">accept</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"title\"</span><span class=\"token punctuation\">,</span> fields<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                  fieldVisitor<span class=\"token punctuation\">.</span><span class=\"token function\">accept</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"content\"</span><span class=\"token punctuation\">,</span> fields<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre>\n  </div>\n\n      <p id=\"basic-clustering:prepare-documents:3f7c8f86\">\n        Because the <code>Document</code> interface has a single method, you can\n        implement it with a lambda expression.\n      </p>\n    </section>\n\n    <section id=\"basic-clustering:perform-clustering\">\n      <h3>\n        <a class=\"anchor\" href=\"#basic-clustering:perform-clustering\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Perform clustering\n      </h3>\n\n      <p id=\"basic-clustering:perform-clustering:ea1f85b3\">\n        Finally, invoke clustering, passing the document stream and the language\n        components instance. This example just prints the top-level cluster\n        labels and document counts to the console:\n      </p>\n\n      <div class=\"gatsby-highlight\">\n    <pre class=\"language-java\"><code data-language=\"java\"><span class=\"token class-name\">List</span><span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Cluster</span><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Document</span><span class=\"token punctuation\">></span><span class=\"token punctuation\">></span></span> clusters<span class=\"token punctuation\">;</span>\nclusters <span class=\"token operator\">=</span> algorithm<span class=\"token punctuation\">.</span><span class=\"token function\">cluster</span><span class=\"token punctuation\">(</span>documentStream<span class=\"token punctuation\">,</span> languageComponents<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token class-name\">ExamplesCommon</span><span class=\"token punctuation\">.</span><span class=\"token function\">printClusters</span><span class=\"token punctuation\">(</span>clusters<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre>\n  </div>\n\n      <p id=\"basic-clustering:perform-clustering:d5523dba\">When executed, this example should result in this output:</p>\n\n      <div class=\"gatsby-highlight\">\n    <pre class=\"language-none\"><code data-language=\"none\">Knowledge Discovery [docs: 0, score: 1.00]\n  Software [docs: 4, score: 1.00]\n  Databases [docs: 3, score: 0.94]\n  Application Areas [docs: 2, score: 0.89]\n  Process [docs: 2, score: 0.87]\n  Market [docs: 2, score: 0.86]\nData-mining Software [docs: 0, score: 0.98]\n  Model [docs: 3, score: 1.00]\n  Data Mining and Knowledge Discovery [docs: 4, score: 0.99]\n  Data Mining Applications [docs: 2, score: 0.95]\n  Development [docs: 2, score: 0.90]\n  Field [docs: 2, score: 0.90]\nApplications [docs: 0, score: 0.94]\n  Application Areas [docs: 3, score: 1.00]\n  Algorithms [docs: 2, score: 0.92]\n  Data Mining Software [docs: 2, score: 0.91]\n  SIAM International Conference on Data Mining [docs: 2, score: 0.90]\n  Customers [docs: 2, score: 0.90]\n  Standard [docs: 2, score: 0.90]\n  Trends [docs: 2, score: 0.90]\nText Mining [docs: 8, score: 0.92]\nData Mining Tools [docs: 9, score: 0.92]\nTechniques [docs: 10, score: 0.92]\nData Mining Technology [docs: 8, score: 0.89]\nData Mining Solutions [docs: 7, score: 0.88]\nConference [docs: 8, score: 0.88]\nData Mining Group [docs: 7, score: 0.86]\nBook [docs: 6, score: 0.84]\nData Analysis [docs: 6, score: 0.83]\nPractice [docs: 6, score: 0.83]\nData Management [docs: 5, score: 0.82]\nOracle Data Mining [docs: 4, score: 0.80]\nData Warehousing [docs: 3, score: 0.75]\nAssociation [docs: 3, score: 0.73]\nMicrosoft SQL Server [docs: 2, score: 0.69]\nData Mining Project [docs: 2, score: 0.69]\nCentral Connecticut State University [docs: 2, score: 0.69]\nProcess of Extracting [docs: 2, score: 0.68]\nCCSU [docs: 2, score: 0.65]\nSPSS [docs: 2, score: 0.65]\nDan [docs: 2, score: 0.65]\nScience [docs: 2, score: 0.65]\nSuccess [docs: 2, score: 0.65]\nBusiness Intelligence [docs: 3, score: 0.65]\nPredictive Analytics [docs: 3, score: 0.65]</code></pre>\n  </div>\n    </section>\n  </section>\n\n  <section id=\"iterating-results\">\n    <h2>\n        <a class=\"anchor\" href=\"#iterating-results\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Iterating through results\n      </h2>\n\n    <p id=\"iterating-results:791a2319\">\n      The <code>Cluster</code> class comes with utility methods to retrieve the\n      label, score, list of contained documents and sub-clusters of a cluster.\n      For example:\n    </p>\n\n    <div class=\"gatsby-highlight\">\n    <pre class=\"language-java\"><code data-language=\"java\"><span class=\"token comment\">/** Returns all documents that belong directly to this cluster. */</span>\n<span class=\"token keyword\">public</span> <span class=\"token class-name\">List</span><span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">T</span><span class=\"token punctuation\">></span></span> <span class=\"token function\">getDocuments</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> documents<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n  </div>\n\n    <p id=\"iterating-results:ad499a29\">\n      A method printing a cluster summary, along with subclusters, can look like\n      this:\n    </p>\n\n    <div class=\"gatsby-highlight\">\n    <pre class=\"language-java\"><code data-language=\"java\"><span class=\"token keyword\">static</span> <span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">T</span><span class=\"token punctuation\">></span></span> <span class=\"token keyword\">void</span> <span class=\"token function\">printClusters</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">List</span><span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Cluster</span><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">T</span><span class=\"token punctuation\">></span><span class=\"token punctuation\">></span></span> clusters<span class=\"token punctuation\">,</span> <span class=\"token class-name\">String</span> indent<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">Cluster</span><span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">T</span><span class=\"token punctuation\">></span></span> c <span class=\"token operator\">:</span> clusters<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">printf</span><span class=\"token punctuation\">(</span>\n        <span class=\"token class-name\">Locale</span><span class=\"token punctuation\">.</span>ROOT<span class=\"token punctuation\">,</span>\n        indent <span class=\"token operator\">+</span> <span class=\"token string\">\"%s [docs: %,d, score: %.2f]\\n\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token class-name\">String</span><span class=\"token punctuation\">.</span><span class=\"token function\">join</span><span class=\"token punctuation\">(</span><span class=\"token string\">\", \"</span><span class=\"token punctuation\">,</span> c<span class=\"token punctuation\">.</span><span class=\"token function\">getLabels</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        c<span class=\"token punctuation\">.</span><span class=\"token function\">getDocuments</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        c<span class=\"token punctuation\">.</span><span class=\"token function\">getScore</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printClusters</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">.</span><span class=\"token function\">getClusters</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> indent <span class=\"token operator\">+</span> <span class=\"token string\">\"  \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre>\n  </div>\n\n    <p id=\"iterating-results:f674650b\">\n      Note that the document within the cluster has a generic type identical to\n      the type of the documents you pass for clustering. Therefore, you can add\n      domain-specific fields and methods to your\n      <code>Document</code> implementations and use them when consuming the\n      clusters.\n    </p>\n  </section>\n\n  <section id=\"changing-parameters\">\n    <h2>\n        <a class=\"anchor\" href=\"#changing-parameters\" aria-hidden=\"true\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg></a>Changing parameters\n      </h2>\n\n    <p id=\"changing-parameters:cabcc334\">\n      Lingo3G comes with a number of parameters to adjust its behavior. The\n      <code>Lingo3GClusteringAlgorithm</code> class exposes the parameters as\n      public fields. To modify a parameter, use the <code>set()</code> method of\n      the corresponding field.\n    </p>\n\n    <p id=\"changing-parameters:7e5d5c62\">\n      The following example restricts the cluster hierarchy depth to one level\n      and filters out one-word labels:\n    </p>\n\n    <div class=\"gatsby-highlight\">\n    <pre class=\"language-java\"><code data-language=\"java\"><span class=\"token class-name\">Lingo3GClusteringAlgorithm</span> algorithm <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Lingo3GClusteringAlgorithm</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nalgorithm<span class=\"token punctuation\">.</span>labels<span class=\"token punctuation\">.</span>queryHint<span class=\"token punctuation\">.</span><span class=\"token function\">set</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"data mining\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nalgorithm<span class=\"token punctuation\">.</span>labels<span class=\"token punctuation\">.</span>minLabelWords<span class=\"token punctuation\">.</span><span class=\"token function\">set</span><span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nalgorithm<span class=\"token punctuation\">.</span>hierarchy<span class=\"token punctuation\">.</span>maxHierarchyDepth<span class=\"token punctuation\">.</span><span class=\"token function\">set</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre>\n  </div>\n\n    <p id=\"changing-parameters:2a8355af\">and produces this output:</p>\n\n    <div class=\"gatsby-highlight\">\n    <pre class=\"language-none\"><code data-language=\"none\">Knowledge Discovery [docs: 13, score: 1.00]\nData-mining Software [docs: 13, score: 0.98]\nData Mining Applications [docs: 11, score: 0.93]\nText Mining [docs: 8, score: 0.92]\nData Mining Tools [docs: 9, score: 0.92]\nData Mining Techniques [docs: 10, score: 0.91]\nData Mining Technology [docs: 8, score: 0.88]\nData Mining Solutions [docs: 7, score: 0.88]\nData Mining Conference [docs: 8, score: 0.86]\nData Mining Group [docs: 7, score: 0.85]\nData Analysis [docs: 6, score: 0.83]\nBook on Data Mining [docs: 6, score: 0.82]\nData Management [docs: 5, score: 0.81]\nOracle Data Mining [docs: 4, score: 0.80]\nIntroduction to Data Mining [docs: 4, score: 0.77]\nData Warehousing [docs: 3, score: 0.75]\nPredictive Analytics [docs: 3, score: 0.74]\nMicrosoft SQL Server [docs: 2, score: 0.69]\nCentral Connecticut State University [docs: 2, score: 0.69]\nData Mining Project [docs: 2, score: 0.69]\nProcess of Extracting [docs: 2, score: 0.68]\nBusiness Intelligence [docs: 3, score: 0.65]</code></pre>\n  </div>\n\n    <p id=\"changing-parameters:1202a16b\">\n      Note that Lingo3G validates parameter values when you call the\n      <code>set()</code> method. The method throws exceptions when you submit an\n      incorrect, such as out-of-range, value.\n    </p>\n\n    <p id=\"changing-parameters:a2a53905\">\n      See\n      <a data-external=\"true\" href=\"../javadoc\">JavaDoc documentation</a>\n      and the\n      <a href=\"/lingo3g-parameters/\">parameters reference</a>\n      page for a list and descriptions of the parameters.\n    </p>\n  </section>\n</article>","tableOfContents":[{"heading":"Dependency setup","anchor":"dependency-setup"},{"heading":"API overview","anchor":"api-overview"},{"heading":"Basic clustering","anchor":"basic-clustering","sections":[{"heading":"Load reusable components","anchor":"basic-clustering:load-reusable-components"},{"heading":"Create disposable components","anchor":"basic-clustering:create-disposable-components"},{"heading":"Prepare documents","anchor":"basic-clustering:prepare-documents"},{"heading":"Perform clustering","anchor":"basic-clustering:perform-clustering"}]},{"heading":"Iterating through results","anchor":"iterating-results"},{"heading":"Changing parameters","anchor":"changing-parameters"}]}},"pageContext":{"slug":"/java-api-basics/"}},"staticQueryHashes":["1164750013"]}