美文网首页
你好,Leon!

你好,Leon!

作者: Xpitz | 来源:发表于2020-03-28 18:18 被阅读0次

文章首发于个人公众号:「阿拉平平」

随着人工智能的兴起,相信大家对智能助理不会感到陌生,比如苹果的 Siri,微软的 Cortana。这些智能助理与我们形影不离,却又触不可及。那么,有没有可以由我们自己定制功能的私人助理呢?

今天和大家分享一个开源的私人助理:Leon。本文演示环境为 Windows x64。

Leon 简介

Leon 是一个开源的私人助理项目。部署后,我们可以通过文本或者语音的方式和它进行互动。

环境准备

  • Node.js >= 10

Leon 的核心功能由 Node.js 开发,本文 Node.js 版本为 v12.16.1。

  • npm >= 5

Node.js 包管理工具,本文 npm 版本为 6.13.4。

  • Python >= 3

Leon 的模块由 Python 编写,本文 Python 版本为 3.6.5。

  • Pipenv

Leon 的模块会在虚拟环境中运行。建议安装的 Python 版本在 3.5 以上。

下载安装

下载 develop 分支的代码:

git clone https://github.com/leon-ai/leon.git leon

执行以下命令安装,整个过程会花费一些时间:

# 进入项目目录
cd leon

# 安装
npm install

运行检查命令确保整个安装过程无误:

npm run check

由于还未配置 Leon,所以结果中会提示 warnings,可以不用理会。

运行启动

安装正常就可以启动了:

# 构建
npm run build

# 启动
npm start

在浏览器中输入 http://localhost:1337 进行访问:

Leon

Leon 实践

接下来,我将对 Leon 进行扩展,增加一个获取诗词的功能。

需要说明的是:

  • Leon 的全局配置文件为 .env,示例中未做修改,详情可以查阅官方文档。
  • Leon 是支持多语言的,但是目前全局配置中仅支持 enfr。所以示例中 answers 和 expressions 的数据文件均以 en.json 命名。

包是一个目录,可以包含多个模块,位于 leon/packages 下。先新建一个 poem 包,目录结构如下:

poem
|-- __init__.py
|-- config
|   `-- config.json
|-- data
|   |-- answers           
|   |   `-- en.json
|   `-- expressions  
|       `-- en.json
|-- getpeom.py
`-- version.txt

说明:

poem:包名。
config.json:配置文件。
answers:应答。
expressions:表达式。
getpoem.py:模块。
version.txt:版本号。

配置

模块的配置项可以加到配置文件 config/config.json 里。示例中的接口地址和方法即配置项:

{
  "getpoem": {
    "url": "https://v1.jinrishici.com/all",
    "method": "GET",
    "options": {}
  }
}

模块

Leon 的功能是通过模块实现的,模块中可以包含多个动作。编辑 getpoem.py,代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import json
import utils


def run(string, entities):
    """Leon peom action"""

    r = utils.http(utils.config('method'), utils.config('url'))
    res = json.loads(r.text)
    content = res['content']
    origin = res['origin']
    author = res['author']  
    
    return utils.output('end', 'getpoem', utils.translate('listpoem', {
              'content': content,
              'origin': origin,
              'author': author
            }
        )
    )

说明:

  • 模块中的函数 run 表示一个动作,与表达式对应。
  • utils 位于 leon/bridges/python/,具体用法可以查看源码,这里不做赘述。

表达式

表达式是用来训练 Leon 理解力的数据,位于 data/expressions 下。编辑 en.json,内容如下:

{
  "getpoem": {
    "run": {
      "expressions": [        
        "give me poem."      
      ]
    }
  }  
}

说明:

  • getpoem 是模块名。
  • run 是模块中定义的行为。
  • expressions 是一个列表,每条表达式都有自己的置信度,表达式内容越多,前端输入可以越模糊。

应答

应答是 Leon 用于提供模块输出的数据,位于 data/answers 下,在 1.0.0-beta.2 版本已支持 HTML 格式。编辑 en.json,内容如下:

{
  "getpoem": {
    "listpoem": [
      "%content%<br><br><div style='text-align:right'>——《%origin%》 %author%</div>"
    ]
  } 
}

说明:

  • 当调用 utils.translate() 时,会解析应答数据。
  • 模块传递的变量可通过 %% 进行渲染。

效果演示

运行以下命令进行检查:

npm run train expressions en

没报错的话,重新构建并启动。输入 give me poem 后可以看到:

poem

写在最后

相信能看到这里的小伙伴一定是真爱了,非常感谢你的阅读。最后我会以 Q & A 的形式对文章进行补充以及分享一下踩坑的经历,希望大家在使用 Leon 的过程中可以少踩点坑。

Q: Leon 的交互可以通过文本和语音,但是文章中为什么没有介绍语音的部分?
A:Leon 的语音功能分为 在线 和 离线 两种模式。在线模式需要三方服务的支持,如 Google Cloud 或者 Watson。而离线模式无法在 Windows 平台使用。
Q:能否在虚拟机上体验到 Leon 的离线语音功能?
A:我在 VMware 上测试的结果是:TTS 可以,STT 失败,即能够听到 Leon 应答的声音,但是无法对 Leon 说话。测试环境为 Ubuntu 16.04,且确保麦克风已和虚拟机连接。
Q:运行 npm run check 时提示 ModuleNotFoundError: No module named 'tinydb',要怎么解决?
A:运行 npm run postinstall
Q:运行 npm run check 时提示 The exported locale is "C.UTF-8" but it is not supported
A:系统没有 C.UTF-8 字符集,修改 .env 文件中 LC_ALLLANG 即可。

References

[1] GitHub: https://github.com/leon-ai/leon
[2] 官方文档:https://docs.getleon.ai/#demo

相关文章

  • 你好,Leon!

    文章首发于个人公众号:「阿拉平平」 随着人工智能的兴起,相信大家对智能助理不会感到陌生,比如苹果的 Siri,微软...

  • Leon: the professional director

    Mathilda & Leon Leon is such a nice name. The deepest lov...

  • LEON

    礼拜一还是那么忙,并没有跟忙碌的周六周天有什么太大的区别,要说区别的话,应该可以说最大的区别就是明天休息,但昨天的...

  • Leon

  • LEON

  • Leon

    周五晚上看了一下这部久负盛名的豆瓣佳片,也为了明证一下僵尸作还是有在打字(好吧这不重要)。 Mathilda敲开了...

  • Leon

    一开始听到这部电影的名字潜意识里是不想看的,因为“杀手”二字足以让我觉得浑身起鸡皮疙瘩。后来英语老师的作业是让看这...

  • Leon

    You just have known of me, not know me. 在看《Leon》的过程中,我注意到...

  • leon

    --is life always this hard.Or is it just when you are a k...

  • LEON

    The movieLeonis telling us audiences a story about save.T...

网友评论

      本文标题:你好,Leon!

      本文链接:https://www.haomeiwen.com/subject/swumyhtx.html