Building a FAQ Chatbot in Python – The Future of Information Searching

Introduction

当我们需要任何信息时我们该怎么办? 简单:“我们问,谷歌告诉”。

但如果答案取决于多个变量,那么现有的Ask-Tell模型往往会出现问题。 最先进的搜索引擎通常无法处理此类请求。 我们必须搜索可用的信息,然后尝试过滤和组装相关的部分。 听起来很费时间,不是吗?

Building a FAQ Chatbot in Python – The Future of Information Searching_第1张图片

随着聊天机器人(也称为“机器人”)的出现,这种Ask-Tell模型正在迅速发展。

本文讨论了用于提取与印度最近推出的商品和服务税(GST)相关的信息的机器人的开发。 作为一个相对较新的概念,很多人仍在试图了解它的工作原理。 聊天机器人可以以自然和对话的方式提供此类信息。 本文演示了如何构建一个聊天机器人来回答与GST相关的查询。 我们称之为GST-FAQ Bot!

Table of Contents

  • Chatbots and NLP
  • Why Rasa-NLU?
  • Building GST FAQ bot architecture
  • Installation
  • Server
    • Steps to build the server of the chatbot
  • Client
  • Engine
  • Our chatbot in action

Chatbots and NLP

要了解更多关于商品及服务税的信息,例如如何申请注册,税务等,公司已在其网站上发布了常见问题解答(FAQ)。 通过这些信息可能是一个艰苦的过程。 在这些情况下,聊天机器人派上用场,有效,因此,已经变得非常受欢迎。

如今,自然语言处理(NLP),特别是其自然语言理解(NLU)组件,使机器人能够更好地理解语言和语境。 他们在理解搜索的含义方面变得更加智能,并且可以返回非常具体的基于上下文的信息。

像WhatsApp,Facebook Messenger,Slack等应用程序越来越多地被企业使用。 机器人也开始取代网站界面。 从可用于构建聊天机器人的大量选择中,这个特定的实现使用Python中的RASA-NLU库。

Why RASA-NLU?

目前有许多聊天机器人平台可用,从基于规则的基本AIML(人工智能标记语言)到高度复杂的AI机器人。 一些流行的聊天机器人平台是API.ai,Wit.ai,Facebook API,Microsoft LUIS,IBM Watson等。

RASA-NLU构建了一个本地NLU(自然语言理解)模型,用于从会话中提取意图和实体。 它是开源的,完全是本地的,最重要的是免费! 它还与wit.ai,LUIS或api.ai兼容,因此您可以将聊天应用程序数据迁移到RASA-NLU模型中。

下面是如何安装RASA-NLU并在Python中构建一个简单的FAQ bot的演示。

Building GST FAQ bot architecture

聊天机器人是客户端 - 服务器应用程序。 在RASA-NLU的情况下,甚至服务器也可以是本地的。 客户端只是chabot UI。 可以通过下图来理解交互和体系结构:

Building a FAQ Chatbot in Python – The Future of Information Searching_第2张图片

Installations

可以在独立计算机上安装和配置RASA。 要遵循的步骤:

  • 1可以通过以下方式完成就绪安装:pip install rasa_nlu
  • 2您可以在此处查看最新文档

RASA-NLU由几个组件组成,每个组件都执行一些特定的工作(意图检测,实体提取等)。 每个组件可能都有一些特定的依赖项和安装。 MITIE(NLP + ML),Spacy和Sklearn等选项可供选择。 我们将在这里使用Spacy-Sklearn。

客户端UI可以是一个网页(使用像Python中的Flask这样的框架)或移动应用程序。 Flask很容易编码并在本地运行。 使用pip install flask并按照本教程获得对该框架的基本了解。

Server

在开始使用之前,需要对RASA-NLU平台进行培训。 我们需要提供一些句子,并提及其中的意图和实体。 意图是句子的动作/类别,实体是完成动作所需的必要变量。

例如,“我希望预订3月27日从孟买飞往浦那的航班”以“航班预订”为目的,以“孟买”,“浦那”和“3月27日”为实体。 类似地,可以使用许多训练示例,以便对从我们的域对话中提取意图/实体的不同方式训练RASA-NLU模型。 该训练数据存储在json中,其中的样本可以在这里看到。

它包含许多条目。 其中一个示例条目如下所示:

    {
        "text": "show me a mexican place in the centre",
        "intent": "restaurant_search",
        "entities": [
          {
            "start": 31,
            "end": 37,
            "value": "centre",
            "entity": "location"
          },
          {
            "start": 10,
            "end": 17,
            "value": "mexican",
            "entity": "cuisine"
          }
        ]
}

以下是上述代码中提到的一些字段的解释:

  • text: 输入句子。
  • intent: 动作或类别,在本例中为“restaurant_search”。 这通常是回调函数名称。
  • entities:实体数组。 这里有两个。 一个是’location’类型,其值为’center’,而另一个是’cuisine’类型,其值为’mexican’。 'start’和’end’指定句子中单词的开始和结束索引。
    您也可以使用以下在线工具生成此json文件:

https://rasahq.github.io/rasa-nlu-trainer/

Steps to build server side of the GST chat bot application:

  • 创建一个新目录并导航到它。
  • 在其中创建以下内容:
    • 数据目录
    • data / demo_gst.json:这里有GST FAQ培训示例,如上所示
    • json:这里有RASA-NLU的设置,如下所示:
{
  "pipeline": "spacy_sklearn",
  "path" : "./",
  "data" : "./data/gstfaq-data.json"
}
  • 在python中训练模型
-m rasa_nlu.train -c config.json
  • 这会创建文件夹model_YYYYMMDD-HHMMSS
  • 运行:
-m rasa_nlu.server -c config.json --server_model_dirs=./model_YYYYMMDD-HHMMSS
  • 这启动了RASA-NLU服务器,让我们知道端口

  • 服务器开始运行后,您可以通过curl进行GET / POST发布或将其用作HTTP服务器

  • 对于HTTP服务器,在运行服务器时添加“-e luis”

  • 然后,在浏览器中键入:http://localhost:5000/parse?q=hello there

  • 输出如下所示:
    Building a FAQ Chatbot in Python – The Future of Information Searching_第3张图片

我们现在可以查看GST FAQ bot的其余组件。

Client

我们的聊天机器人客户端UI是使用Flask框架构建的。 它使用两个html模板来呈现UI(即聊天窗口)。 外部UI使用base.html构建,如下所示:

<!DOCTYPE HTML>
<html lang="en">
<head></head>
    <body>
         <h1 align="center">GST FAQ Chat</h1>
        <div class="container">
            {% block content %}{% endblock %}
        </div>
</body>
    <footer>
        {% block other_footers %}{% endblock %}
    </footer>
</html>

内容和other_footers块在home.html中定义,如下所示:

{% block content %}
    send
  • {% endblock %} {% block other_footers %} {% endblock %}

    Engine

    这是聊天机器人的核心。 根据从RASA-NLU收到的意图,它将实体分派给映射的回调函数。 该函数依次根据实体调用Knowledgebase来获取响应。 收到响应后,会将其发送回UI。

    知识库可以像问题和答案的字典一样简单,也可以像人们想象/要求的那样复杂(如数据库,互联网资源等)。 本文为演示目的而言是简约的,从字典中获取预编码的响应。

    我们来看看示例字典:

    intent_response_dict = {
        "intro": ["This is a GST FAQ bot. One stop-shop to all your GST related queries"],
        "greet":["hey","hello","hi"],
        "goodbye":["bye","It was nice talking to you","see you","ttyl"],
        "affirm":["cool","I know you would like it"],
        "faq_link":['You can check all the events here ]
    }
    
    

    引擎使用RASA-NLU进行意图实体提取和调度回调可以在下面看到:

    @app.route('/chat',methods=["POST"])
    def chat():
        try:
            user_message = request.form["text"]
            response = requests.get("http://localhost:5000/parse",params={"q":user_message})
            response = response.json()
            response = response["topScoringIntent"]
            intent = response.get("intent")
            entities = response.get("entities")
            if intent == "gst-info":
                response_text = gst_info(entities
            elif intent == "gst-query":
                response_text = gst_query(entities)
            else:
                response_text = get_random_response(intent)
            return jsonify({"status":"success","response":response_text})
        except Exception as e:
            print(e)
            return jsonify({"status":"success","response":"Sorry I am not trained to do that yet..."})
    
    

    用户文本使用http://localhost:5000/parse发送到RASA-NLU服务器。 其响应包含意图和实体。 根据意图,调用gst-info和gst-query等函数。 然后将他们的回复发送回UI。

    这个应用程序的源代码可以在github上找到。

    Our chatbot in action

    操作步骤:

    您可以在此处观看视频演示。

    End Notes

    本教程只是一个小例子,展示了开发成熟和实用的东西的潜力。 我们的GST Q&A机器人可以在各个方面得到增强,例如知识库的扩展(即问题和答案的数量),更好的培训以找到更多的意图和实体,自然语言生成的响应具有人类语言感觉等。

    GST常见问题Bot只是使用政府信息构建直观前端的一个示例。 随着更多API和开放公共数据的可用性,我们可以为这些数据库构建类似的(如果不是更好的)机器人。 想象一下,使用健谈的机器人与政府部门进行互动!

    References

    RASA-NLU 创建,安装 https://github.com/RASAHQ/rasa_nlu
    Bhavani Ravi’s event-bot code
    Building chatbots using Python/Django – Youtube video.
    GST FAQ http://www.cbec.gov.in/resources//htdocs-cbec/deptt_offcr/faq-on-gst.pdf

    你可能感兴趣的:(聊天机器人,AI应用部署)