如何在WIT.AI上实现BOT引擎的内部部署解决方案?

时间:2016-09-13 14:19:19

标签: nlp opennlp

我想为客户服务应用程序构建一个聊天机器人。我尝试过像Wit.Ai,Motion.Ai,Api.Ai,LUIS.ai等SaaS服务。这些认知服务找到了" intent "和" 实体"在使用典型的交互模型进行训练时。

我需要为内部部署解决方案构建chatbot,而不使用任何这些SaaS服务。

例如典型的对话如下 -

    Can you book me a ticket?
    Is my ticket booked?
    What is the status of my booking BK02?
    I want to cancel the booking BK02.
    Book the tickets

StandFord NLP工具包看起来很有前景,但存在许可限制。因此我开始尝试使用OpenNLP。我假设,涉及两个OpenNLP任务 -

  1. 使用'文档分类程序'找出意图
  2. 使用'命名实体识别'找出实体
  3. 确定上下文后,我将调用我的应用程序APIS来构建响应。

    • 这是一种正确的方法吗?
    • OpenNLP在解析文本方面有多好?
    • 我可以使用Facebook FASTTEXT 库进行意图识别吗?
    • 是否有其他开源库可以帮助您构建BOT?
    • 将" SyntaxNet "对我的冒险有用吗?

    我更喜欢用Java来做这件事。但是对节点或python解决方案也是开放的。

    PS - 我是NLP的新手。

7 个答案:

答案 0 :(得分:5)

看看这个。它说这是对机器人的开源语言理解,以及对诸如wit.ai,api.ai或LUIS等流行的NLP工具的直接替代。

https://rasa.ai/

答案 1 :(得分:2)

使用Luis.ai时,请查看我对攻击计划的其他答案:

Creating an API for LUIS.AI or using .JSON files in order to train the bot for non-technical users

简而言之,使用Luis.ai并设置一些意图,从一两个开始,并根据您的域进行训练。我正在使用asp.net来调用上面概述的Cognitive Service API。然后通过一些JQuery自定义响应...当Luis的响应引发每个意图或动作时,您可以在javascript数组中搜索规则列表。

如果您的Bot是基于英语的,那么我会使用OpenNLP的句子解析器将客户输入转储到数据库中(我今天这样做)。然后我使用OpenNLP标记器并将关键字(减去停用词)和词性推送到数据库表中以进行关键字分析。我有一个为OpenNLP构建的自定义Sentiment模型,它将使用Pos,Neg,Neutral情绪标记每个句子......然后您可以使用它来识别负面的客户服务反馈。要构建自己的Sentiment模型,请查看SentiWord.net并下载其域不可知数据文件以构建和训练OpenNLP模型或查看此Node版本...

https://www.npmjs.com/package/sentiword

希望有所帮助。

答案 2 :(得分:0)

我绝对推荐Rasa,它非常适合您的用例,轻松地在本地工作,为您处理意图和实体,而且它还有一个友好的社区。

查看我的回购,了解如何使用与简单数据库交互的Rasa构建聊天机器人:https://github.com/nmstoker/lockebot

答案 3 :(得分:0)

我尝试了RASA,但是我发现一个小故障是Rasa无法回答不匹配/未经训练的用户文本。

现在,我正在使用 ChatterBot ,我完全爱上了它。

使用“ ChatterBot”,并使用“ flask-chatterbot-master”在本地托管

链接:

ChatterBot安装: https://chatterbot.readthedocs.io/en/stable/setup.html

使用-flask-chatterbot-master 在本地托管:https://github.com/chamkank/flask-chatterbot

干杯

Ratnakar

答案 4 :(得分:0)

借助RASA和Botkit框架,我们可以为任何渠道构建本地聊天机器人和NLP引擎。请按照此链接进行构建的端到端步骤。一个很棒的博客,它帮助我为办公室创建了一个博客

https://creospiders.blogspot.com/2018/03/complete-on-premise-and-fully.html

答案 5 :(得分:0)

首先,所有聊天机器人都将是与NLP一起运行的程序,它是将知识带给聊天机器人的NLP。 NLP掌握在机器学习技术上。

内置聊天机器人更少的原因很少。

  • 我们需要构建基础架构
  • 我们需要经常训练模型

但是使用基于云的NLP可能无法提供数据隐私性和安全性,并且包含我的业务逻辑的灵活性也非常低。

一起进入内部还是在云上都是基于需求和需求的用例。

但是,请参阅此链接以获取在端到端的前提下以很少的步骤就可以轻松,完全自定义地构建聊天机器人的知识。

Complete On-Premise and Fully Customisable Chat Bot - Part 1 - Overview

Complete On-Premise and Fully Customisable Chat Bot - Part 2 - Agent Building Using Botkit

Complete On-Premise and Fully Customisable Chat Bot - Part 3 - Communicating to the Agent that has been built

Complete On-Premise and Fully Customisable Chat Bot - Part 4 - Integrating the Natural Language Processor NLP

答案 6 :(得分:0)

免责声明:我是该软件包的作者。

Abodit NLP(https://nlp.abodit.com)可以做您想要的,但目前仅是.NET。

特别是,您可以轻松地将其连接到数据库,并可以提供自定义令牌,这些令牌是针对数据库的查询。这些都是强类型的,添加新规则就像在C#中添加方法一样容易。

它还特别擅长将日期时间表达式转换为查询。例如,“下个月的下一个下午4点后的星期四”变为((((DatePart(year,[DATEFIELD])=2019) AND (DatePart(month,[DATEFIELD])=7)) AND (DatePart(dw,[DATEFIELD])=4)) AND DatePart(hour,[DATEFIELD])>=16)