潜力巨大的开源项目——Apache NLPCraft

潜力巨大的开源项目——Apache NLPCraft

经验文章nimo972025-02-24 15:56:1512A+A-

Apache NLPCraft是基于Java语言的开源库,可以用于向任何应用程序添加自然语言应用。它可以与任何私有或公共数据源一起使用,并且没有硬件或软件限制。您可以使用任何基于JVM的语言(例如Java,Scala,Kotlin,Groovy等)为NLPCraft构建模型。NLPCraft公开了REST API,以与可以用任何语言或系统编写的用户应用程序集成。

NLPCraft的关键功能之一是其使用高级语义建模,该语义建模是针对特定于领域的自然语言界面量身定制的。它不需要涉及模型训练或语料库开发的传统ML方法,从而可以进行更简单,更快速的实现。

NLPCraft虽然只能够处理英语。但是它可以使NLPCraft能够提供前所未有的易用性,并具有无与伦比的开箱即用英语输入理解能力。已经表明,在单个框架中支持多种语言会导致功能淡化或配置,培训和使用过于复杂。

NLPCraft是一个Apache基金会正在孵化的项目。刚开始的时候可能有一些地方会不太尽如人意。但是相信其在后续的版本更新中会有所改善。

使用NLPCraft时,您将处理三个主要组件:

  • 资料模型
  • 数据探针
  • REST服务器

资料模型

NLPCraft采用按模型编码的方法,其中整个数据模型是NCModel Java接口的实现,可以使用Java,Scala,Kotlin或Groovy等任何JVM编程语言进行开发。数据模型实现定义了如何解释用户输入,以及如何查询或控制特定数据源。代码即代码本机支持Java生态系统中的任何软件生命周期工具和框架。

通常,模型的声明部分将存储在单独的JSON或YAML文件中,以简化维护。对于模型的复杂程度或可使用的其他工具,没有任何实际限制。数据模型使用NLPCraft提供的现成的基于意图的匹配。

要使用数据模型,必须将其部署到数据探针中。

数据探针

数据探针是一种轻量级的容器应用程序,旨在安全地部署和管理数据模型。每个探针可以部署和管理多个模型,并且许多探针可以连接到REST服务器(或REST服务器群集)。数据探针的主要目的是将数据模型托管与管理来自客户端的REST调用分开。虽然通常只有一台REST服务器,但是您可能有多个数据探针部署在不同的地理位置,并且配置不同。

只要有来自REST服务器的入口连接,数据探针就可以部署和运行在任何地方,并且通常部署在DMZ或靠近目标数据源的位置:本地,云中等。数据探针使用强大的256位加密和进入口连接,用于与REST服务器进行通信。

REST服务器

REST服务器(或负载均衡器后面的REST服务器群集)为用户应用程序提供URL终结点,以通过数据探针中部署的数据模型使用NLI安全地查询数据源。其主要目的是接受来自用户应用程序的REST-over-HTTP调用,管理连接的数据探针,以及将用户请求路由到请求的数据探针或从请求的数据探针路由。

与每次更改模型(即在开发过程中)时都会重新启动的数据探针不同,REST服务器是一个“启动后忘记”组件,可以启动一次,而各种数据探针可以不断地重新连接到它。它通常可以在本地或在云上作为Docker映像运行。

了解有关数据模型,数据探针和REST服务器的更多信息。


官网还提供了几个例子的教程。也可以去看看。都还比较简单

比如:

  • 开关电灯的例子

这个简单的示例为NLI供电的电灯开关提供了非常简单的实现。您可以说“关闭整个房子的灯”或“打开主卧室壁橱的照明”之类的内容。您可以使用HomeKit或基于Arduino的控制器轻松修改意图回调以执行实际的灯光切换。

  • 语音设置闹钟的例子

这个简单的示例提供了“闹钟”实现,您可以在其中请求将计时器设置为从现在开始的特定持续时间,以小时,分钟和/或秒表示。您可以说“在3分钟内ping我”,“在1小时15分钟内给我报警”或“设置我的闹钟30秒”。当计时器计时到时,它将在数据探针控制台中简单地打印出“ BEEP BEEP BEEP”。

  • 天气机器人的例子

此示例演示了相对完整的基于NLI的天气服务,具有JSON输出和非平凡的意图匹配逻辑。它使用Apple的DarkSky REST服务获取实际的天气信息。


尽管这些例子相对来说比较简单,并且仅支持英语。

但是我相信这种类似的支持中文的开源项目也会慢慢多起来的。

并且应用场景也会逐渐的丰富起来!

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7