标签归档:对话系统

《自然语言处理综论(Speech and Language Processing)》第三版终于在2020年年底更新了

自然语言处理领域的圣经《自然语言处理综论(Speech and Language Processing)》第三版(简称SLP3)备受瞩目,该书的正式出版日期一再推迟,不过该书作者NLP领域的大神 Daniel Jurafsky 教授和 James H. Martin 教授一直在该书官网上更新着相关章节的电子版,终于在2020年即将结束的前两天,两位教授发布了一个更新了若干章节的完整草稿版本(2020.12.30 version),而此前的版本大概是2019年10月版,估计这应该是正式出版前的最后一个完整电子草稿版了。

之前写过一篇《如何学习自然语言处理:一本书和一门课》,介绍了NLP领域经典书籍《自然语言处理综论(Speech and Language Processing)》第三版的相关情况,作为我的NLP入门书籍,十多年前我读过这本书的第一版中文翻译版,第二版英文版,进入深度学习自然语言处理时代,第三版英文版的更新迟迟未完结,也可能与目前NLP领域“日新月异”的发展有关,不过基础的东西不会过时,打好基础才是王道。

这个版本的更新官方说明如下:

  • new version of Chapter 8 (bringing together POS and NER in one chapter),
  • new version of Chapter 9 (with Transformers)
  • Chapter 11 (MT)
  • neural span parsing and CCG parsing moved into Chapter 13 (Constituency Parsing) and Statistical Constituency Parsing moved to Appendix C
  • new version of Chapter 23 (QA modernized)
  • Chapter 26 (ASR + TTS)
  • Plus a modernizing pass (and typo fixing, thanks to all of you!!!) on all the other chapters.

与之前的版本相比,这个版本新增了第8章(将词性标注和命名实体识别合并为一个章节),第9章(Transformer模型相关),第11章(机器翻译),第23章(对话技术),第26章(语音识别和语音合成),调整了句法分析中的部分内容到相应的章节和附录,以及修复了相关章节中错误内容。不过从全局来看,这本书剩下的章节已经不多了,预计2021年可以出版:

关于作者,两位都是NLP领域的神牛,以下是第二版中文翻译版中详细的介绍:

Daniel Jurafsky现任斯坦福大学语言学系和计算机科学系副教授。在此之前,他曾在博尔德的科罗拉多大学语言学系、计算机科学系和认知科学研究所任职。他出生于纽约州的Yonkers,1983年获语言学学士,1992年获计算机科学博士,两个学位都在伯克利加利福尼亚大学获得。他于1998年获得美国国家基金会CAREER奖,2002年获得Mac-Arthur奖。他发表过90多篇论文,内容涉及语音和语音处理的广泛领域。

James H. Martin现任博尔德的科罗拉多大学语言学系、计算机科学系教授,认知科学研究所研究员。他出生于纽约市,1981年获可伦比亚大学计算机科学学士,1988年获伯克利加利福尼亚大学计算机科学博士。他写过70多篇关于计算机科学的论著,出版过《隐喻解释的计算机模型》(A Computational Model of Metaphor Interpretation)一书。

最后是如何下载这个电子版,其实官网上已经提供了相关的下载链接:https://web.stanford.edu/~jurafsky/slp3/ ,包括最新的完整草稿电子版和相关章节电子版,以及对应的Slides。如果下载速度较慢或者希望保存到网盘上,可以关注我们的公众号:"AINLP" , 回复 "slp3" 获取该书电子版以及 Daniel Jurafsky 教授之前在Coursera上开播的斯坦福大学自然语言处理课程相关资料视频(目前已绝版),一并学习自然语言处理。

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:https://www.52nlp.cn

本文链接地址:https://www.52nlp.cn/?p=12985

Rasa 入坑指南二:基于 Rasa 构建天气查询机器人

天气查询是聊天机器人里面常见和常用的功能之一,本文基于 Rasa 构建一个中文的天气查询机器人。幸运的是,这件事已经有同学操作过了:使用 Rasa 构建天气查询机器人,不仅有文章,还有训练数据和相关代码,以及Web UI查询界面,相当完备。而问题在于, Rasa的版本跳跃貌似比较大,我接触Rasa比较晚,第一篇文章《Rasa入坑指南一:初识Rasa》使用的Rasa版本是 1.2.3,貌似目前看到的很多实战文章都是0.x的 Rasa 相关版本,在一些操作方面好像有不小的区别,包括之前罗列的一些参考文章,以及这篇天气查询机器人实战教程。

学习一个项目最好是首先跑通它,从该项目的Github主页入手:https://github.com/howl-anderson/WeatherBot,一个使用 Rasa 技术栈 (Rasa NLU, Rasa Core, Rasa Core SDK)构建的简单的中文天气情况问询机器人(chatbot), 附带有基于 Web 的用户界面(UI) http://weather_bot.xiaoquankong.ai/ ,不过目前这个demo页面可以访问,但是chatbot demo无法使用,具体原因不详。该项目采用了组件相互隔离来构建整个系统:

整个系统分成 4 个 APP:

组件 仓库地址 说明
User Interface WeatherBot_UI 负责提供用户 UI ,方便用户使用,Rasa Core 支持和多种即时通讯软件(IM)的整合,Rasa Core 提供了一种称之为 Channel 的特性来方便接入 API。
Diaglog Manager WeatherBot_Core 负责管理整个对话的流程,它会主动调用 NLU 来解析用户的意图和提取相关的实体,在需要执行业务动作的时候会调用 Action Server 执行具体的业务动作。
NLU WeatherBot_NLU 负责理解用户的意图和提取相关的实体。
Action Server WeatherBot_Action 负责执行自定义 Action (通常都是具体的业务动作,在本项目中是请求远程服务器以查询天气情况)

继续阅读

Rasa 入坑指南一:初识 Rasa

最近对 Rasa 产生了浓厚的兴趣,准备用Rasa打磨一下聊天机器人,所以做了一些调研和学习,准备记录一下,这是第一篇,感兴趣的同学可以参考。

Rasa是一套开源机器学习框架,用于构建基于上下文的AI小助手和聊天机器人。Rasa有两个主要模块:Rasa NLU 用于对用户消息内容的语义理解;Rasa Core 用于对话管理(Dialogue management)。Rasa官方还提供了一套交互工具 RasaX 帮助用户提升和部署由Rasa框架构建的AI小助手和聊天机器人。

学习一套东西最好的方法是从官方文档开始,Rasa官方文档相当贴心,我们从 Rasa User Guide 走起。

一、安装Rasa及RasaX

我是在Ubuntu16.04, Python3 的 virtualenv 环境下测试安装的:

virtualenv -p python3 venv
source venv/bin/activate
pip install rasa-x --extra-index-url https://pypi.rasa.com/simple

如果一切正常,rasa 及 rasa x 将同时被安装,如果你不希望使用 RasaX,那么安装时直接"pip install rasa"即可,当然还可以继续安装 Rasa NLU 文本分析时所需的一些依赖,此处暂时忽略。

二、运行官方示例

Rasa 官方 tutorial 示例相当贴心,即使你没有安装rasa,也可以在这个页面通过浏览器运行示例代码,如果已经安装了,可以在自己的电脑上通过命令行follow整个流程。

1. 创建默认的初始项目

在终端运行:

rasa init --no-prompt

这个过程将有一个很快速的 Rasa 相关模型训练过程展示,最终提示:

...
NLU model training completed.
Your Rasa model is trained and saved at '/home/textminer/rasa/default/models/20190821-205211.tar.gz'.
If you want to speak to the assistant, run 'rasa shell' at any time inside the project directory.

如果不加 --no-prompt,会有几个问题提示。你也可以直接通过浏览器在官方页面执行“run”按钮,结果是这样的:

这个命令将在当前目录下新建以下文件:

__init__.py 空文件
actions.py 可以自定义 actions 的代码文件
config.yml ‘*’ Rasa NLU 和 Rasa Core 的配置文件
credentials.yml 定义和其他服务连接的一些细节,例如rasa api接口
data/nlu.md ‘*’ Rasa NLU 的训练数据
data/stories.md ‘*’ Rasa stories 数据
domain.yml ‘*’ Rasa domain 文件
endpoints.yml 和外部消息服务对接的 endpoins 细则,例如 fb messenger
models/<timestamp>.tar.gz 初始训练的模型数据

其中标志有 ‘*’ 的文件是比较重要的文件,以下我们来详细的了解。
继续阅读

AINLP公众号对话接口新增成语接龙

成语接龙很有意思,原本计划找一些成语语料自己做一个,不过Google一圈后发现Github上有一个现成的项目:IdiomsSolitaire

Github链接:https://github.com/WangYihang/IdiomsSolitaire

这个项目自带2万多条成语数据,用法也很简单:

API Usage

>>> import IdiomsSolitaire
>>> IdiomsSolitaire.init()
>>> print IdiomsSolitaire.guess("一心一意")

Script Usage

# Install it first
pip install -r requirements.txt
# Use it in your termianl
$ python IdiomsSolitaire.py
Usage : 
        python IdiomsSolitaire.py [Idioms]
Example : 
        python IdiomsSolitaire.py '一心一意'
Author : 
        WangYihang <wangyihanger@gmail.com>
$ python IdiomsSolitaire.py '一心一意'
[+] Init finished! [23594] words.
[一语破的] : [一句话就击中要害。的,箭靶的中心,比喻要害之处。]
$ python IdiomsSolitaire.py '一心一意'
[+] Init finished! [23594] words.
[一至於此] : [竟到如此地步。]

所以很快把这个接口接入了AINLP的对话功能中,感兴趣的同学可以关注AINLP公众号直接测试:

也可以直接尝试语音输入,不过个别地方识别确实有点歪打正着:

最后,欢迎关注我们的公众号AINLP,可以对对联,自动作诗,查询相似词,玩词语加减游戏等:

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:https://www.52nlp.cn

本文链接地址:AINLP公众号对话接口新增成语接龙 https://www.52nlp.cn/?p=12067

算法工程师需不需要架构思维-许式伟首次完整架构经验分享

做算法的同学需不需要架构思维?个人觉得非常需要,特别是工作了几年之后,无论是广告系统,推荐系统,还是问答(对话)系统,机器翻译系统,都需要系统架构思维,特别是近期,在斯坦福举行的新学术会议SysML发布了一份白皮书,确定了 机器学习+系统 这个新方向:Machine Learning System(机器学习系统),这大概就是大势所趋吧。

最近,看到七牛云老大许式伟在极客时间开了个专栏讲「架构」http://gk.link/a/102Yh ,首次进行完整的架构经验分享。上线仅三天,订阅就破 W 了,真没想到像老许这种资历和背景的架构师,竟然还这么乐于输出。他应该是为数不多的,能把「架构」这事儿讲明白的人了。所以这次,我心动并且行动了。

看了开篇词,写得很朴实,没有什么商业的辞藻,结合自己的实战经历,非常落地的感觉,不论你已经是一位架构师,还是想成为架构师的程序员,通过这个专栏,你能收获的都比付出的更多。

这个专栏,是老许第一次完整系统地分享自己的架构经验,一个架构师 20 年的经验沉淀,实在难得。几年后,你会感谢自己今天的投资:许式伟的架构课-从源头出发,带你重新理解架构设计
继续阅读