构建自己的NLU平台(一)

nlu.png

NLU(自然语言理解)系统是任何现代语音系统的最关键模块。如上图nlu.png所示,第二部分NLP Tool就是我们这篇文章要讨论的,我们这里不讨论NLU和NLP的区别,都以NLU指代。

NLU的输入输出

  1. 输入是一段人类语言文本,如上图1模块所示
  2. 输出是一段结构化数据(json/xml etc.),如上图模块3所示。主要包含意图(Intent)和实体(Entities)的抽取结果

NLU服务提供商

正如上图模块2所指示,现在很多服务以Restful API和SDK形式向外提供服务。

  • 国外:

    1. Dialogflow 也就是改名前的API.ai (被Google收购的公司)
    2. Wit.ai (被Facebook收购的公司)
    3. LUIS (微软的服务)
  • 国内:

    1. UNIT (Baidu服务)
    2. DUI (思必驰服务)

笔者用过Dialogflow做英文,也是支持中文,但是服务国内可能被墙;使用过UNIT做中文;同时了解过其他几个,给出建议是:

  • 英文用Dialogflow,免费好用
  • 中文可以直接试试DUI,思必驰的这个开放比较晚,更接近Dialogflow的感觉,UNIT对于需要大规模自己训练内容的领域来说,泛化效果一般
  • 当然,大家自己都可以试试,有好的结果还望相互交流

自己搭建NLU平台的原因

  1. 数据敏感
    因为前面提到过的平台都是需要将数据上传训练才能获得服务,对于数据敏感的需求,显然不能满足。
  2. 领域效果差
    开放平台都是通用NLU平台,各个公司的不收费还愿意提供服务的原因就是想要更多的数据上传来训练自己的模型,那么你们业务所在领域的模块如果是重要的模型,这些平台不一定开放已经训练好的模型。那么结果就是你自己需要大量的训练。
  3. 本地支持
    如果你还需要本地NLU,而不仅仅是联网NLU,显然也不符合要求。

开源NLU引擎选择

NLU是一个巨大的轮子,没有足够的资源自己是搞不起的,寻找开源方案是最快速实现商业模式的方法,目前找到两家:

  1. Rasa nlu
    • 开源时间长,社区稍微活跃
    • 官方还不支持中文,但是有童鞋已经搭建了中文版,引用并感谢
    • 支持本地部署,但是是python程序,各种平台得自己解决,比如android, ios等等
  2. Snips nlu
    • 刚刚开源
    • 官方不支持中文,也没有童鞋搞过中文版
    • 支持本地部署,而且跨平台支持,是Rust实现

所以结论

本人NLU小白,想要快速达到效果并可实现,得站在巨人肩膀。所以计划如下:

  • 基于Rasa nlu来实现
  • 密切关注Snips nlu
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,979评论 1 180
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,569评论 25 709
  • 问:简单谈谈你对 HashSet 原理的认识? 答:HashSet 在存元素时会调用对象的 hashCode 方法...
    Little丶Jerry阅读 2,144评论 0 0
  • 在那样一个纬度上,有这样一所房子,每天都可以把脚丫踩进温热细软的白沙里,带着只巧克力色的拉布拉多踩一排大小不一的脚...
    大王老师的日记阅读 2,463评论 0 1
  • 文I秋晓 (1) 刚毕业那会,进入一家贸易公司工作,说是朝九晚五,但是因为各国时差的关系所以常常晚上九十点钟还泡在...
    慕容秋晓阅读 8,109评论 16 16

友情链接更多精彩内容