---
active_crumb: Docs
layout: documentation
id: overview
---

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<div class="col-md-8 second-column">
    <section id="overview">
        <h2 class="section-title">Overview <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>

        TODO:!

        <p>
            Apache NLPCraft is a JVM-based <a target=_blank href="https://www.apache.org/licenses/">open source</a> library
            for adding a natural language interface to modern applications.  It enables people to interact with your products using voice or text. NLPCraft can connect with
            any private or public data source, and has no hardware or software lock-ins. Its design is based on advanced
            <a href="/intent-matching.html">Intent Definition Language</a> (IDL) for defining non-trivial intents and a fully deterministic intent matching
            algorithm for the input utterances. You can build intents for NLPCraft using any JVM-based languages like Java, Scala, Kotlin, Groovy, etc. NLPCraft
            exposes REST APIs for integration with end-user applications.
        </p>
        <p>
            One of the key features of NLPCraft is its use of <a href="/intent-matching.html">IDL</a> coupled with deterministic intent matching that are tailor made for
            <em>domain-specific</em> natural language interface. This design doesn't force developers to use direct deep learning
            approach with time consuming corpora development and model training - resulting in much a
            <em>simpler <span class="amp">&</span> faster</em> implementation.
        </p>
        <p>
            Another key aspect of NLPCraft is its initial focus on processing English language. Although it may sound
            counterintuitive, this narrower initial focus enables NLPCraft to deliver unprecedented ease of use combined with
            unparalleled comprehension capabilities for English input out-of-the-box. It avoids academic, watered down functionality or overly
            complicated configuration and usage - following on project's <em>"built for engineers by engineers"</em> ethos.
            English language is spoken by more
            than a billion people on this planet and is de facto standard global language of the business and commerce.
        </p>
        <p>
            So, how does it work in a nutshell?
        </p>
        <p>
            When using NLPCraft you will be dealing with three main components:
        </p>
        <ul>
            <li><a href="#data-model">Data model</a></li>
            <li><a href="#data-probe">Data probe</a></li>
            <li><a href="#server">REST Server</a></li>
        </ul>
        <figure>
            <img class="img-fluid" src="/images/homepage-fig1.1.png" alt="">
            <figcaption><b>Fig 1.</b> NLPCraft Architecture</figcaption>
        </figure>
    </section>
    <section id="data-model">
        <h2 class="section-title">Data Model <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
        <p>
            NLPCraft employs a <em>model-as-a-code</em> approach where everything you do in NLPCraft is part of your source code. Data model is simply an implementation of
            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a> Java interface that
            can be developed using any JVM programming language like Java, Scala, Kotlin or Groovy.
            Data model defines named entities, various configuration properties as well as intents to interpret user input. Model-as-a-code natively supports
            any software lifecycle tools and frameworks in Java ecosystem.
        </p>
        <p>
            Declarative portion of the model can be stored in a separate JSON or YAML file
            for simpler maintenance. There are no practical limitation on how complex or simple a model
            can be, or what other tools it can use. Data models use <a href="/intent-matching.html">intents</a> to match the user input.
        </p>
        <p>
            To use data model it has to be deployed into a data probe.
        </p>
    </section>
    <section id="data-probe">
        <h2 class="section-title">Data Probe <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
        <p>
            Data probe is a light-weight container designed to securely deploy and manage user data models.
            Each probe can deploy and manage multiple models and many probes can be connected to the REST server (or a cluster of REST servers).
            The main purpose of the data probe is to separate data model hosting from managing REST calls from the clients.
            While you would typically have just one REST server, you may have multiple data probes deployed
            in different geo-locations and configured differently.
        </p>
        <p>
            Data probes can be deployed and run anywhere as long as there is an ingress connectivity from the REST server, and are
            typically deployed in DMZ or close to your target data sources: on-premise, in the cloud, etc. Data
            probe uses strong 256-bit encryption and ingress only connectivity for communicating with the REST server.
        </p>
    </section>
    <section id="server">
        <h2 class="section-title">REST Server <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
        <p>
            REST server (or a cluster of REST servers behind a load balancer) provides URL endpoint for end-user applications
            to securely query data sources using natural language via data models deployed in data probes. Its main purpose is to
            accept REST-over-HTTP calls from end-user applications and route these requests to and from requested data probes.
        </p>
        <p>
            Unlike data probe that gets restarted every time the model is changed, i.e. during development, the
            REST server is a "fire-and-forget" component that can be launched once while various data probes can
            continuously reconnect to it. It can typically run as a Docker image locally on premise or in the cloud.
        </p>
        <p>
            Learn more about <a href="data-model.html">data model</a>,
            <a href="server-and-probe.html#probe">data probe</a> and <a href="server-and-probe.html#server">REST server</a>.
        </p>
    </section>
    <section id="in-depth">
        <h2 class="section-title">In-Depth Look <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
        <p>
            Watch this full video (34:42) of the presentation from
            <a target=_ href="https://www.apachecon.com/acasia2021/">ApacheCon Asia 2021</a> conference to get in-depth understanding of
            the reasons why NLPCraft project was developed and what are the key principles that underlying it:
        </p>
        <div>
            <iframe
                    width="514"
                    height="289"
                    src="https://www.youtube.com/embed/O7iK0AXvcJ8?modestbranding=1"
                    title="NLPCraft - Breaking Years Of Dogma In NLP"
                    frameborder="0"
                    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
                    allowfullscreen>
            </iframe>
        </div>
    </section>
</div>
<div class="col-md-2 third-column">
    <ul class="side-nav">
        <li class="side-nav-title">On This Page</li>
        <li><a href="#overview">Overview</a></li>
        <li><a href="#data-model">Data Model</a></li>
        <li><a href="#data-probe">Data Probe</a></li>
        <li><a href="#server">REST Server</a></li>
        {% include quick-links.html %}
    </ul>
</div>




