aiml的中文适配aiml_cn

与其每次费力迁就,不如一劳永逸改造它
源码地址:
https://github.com/xiaopangxia/aiml_cn
aiml对中文的支持一直不好,主要时他对中文字符的分割处理不好。很多人选择强行给问句加空格,或者用分词策略。这种做法对纯中文有一点作用,但当问句时中英混句时依然不好用。因为Kernel.py中learn函数的实现策略是判断有英文就当全英文处理,没有英文才给你逐字符加空格,原实现如下:

    def learn():...for key,tem in handler.categories.items():new_key = keyif key and key[0] and key[1] and key[2] and em_ext == '.aiml' and (not self._check_contain_english(key[0])):new_key = (' '.join(key[0]), key[1], key[2])elif key and key[0] and key[1] and key[2] and em_ext == '.aiml' and self._check_contain_english(key[0]):new_key=(key[0].upper(), key[1], key[2])self._brain.add(new_key, tem)

对aiml的python库做了简单修改,更加适配中文 Adapt aiml to Chinese better。与其每次费力迁就,不如一劳永逸改造它,做了几处小修改。
1.将Kernel里原来的self._check_contain_english改成了self._check_all_english,即判断问句是否为全英文。在learn和respons函数里的三处调用也尽数改为self._check_all_english。

def _check_contain_english(self, des_str):for uchar in des_str:if (uchar >= u'\u0041' and uchar <= u'\u005a') or (uchar >= u'\u0061' and uchar <= u'\u007a'):return Trueelse:return False
def _check_all_english(self, des_str):for uchar in des_str:if (uchar >= u'\u0041' and uchar <= u'\u005a') or (uchar >= u'\u0061' and uchar <= u'\u007a'):passelse:return Falsereturn True

2.在learn函数里不管是不是全为英文都执行upper操作,转大写。

if key and key[0] and key[1] and key[2] and em_ext == '.aiml' and (not self._check_all_english(key[0])):new_key = (' '.join(key[0]).upper(), key[1], key[2])
elif key and key[0] and key[1] and key[2] and em_ext == '.aiml' and self._check_all_english(key[0]):new_key=(key[0].upper(), key[1], key[2])

aiml的中文适配aiml_cn相关推荐

  1. python中文聊天_Python下两种曲线救国实现AIML中文聊天机器人功能的方法

    alicebot.jpg AIML,全称Artificial Intelligence Markup Language,是一种XML模式,用做自然语言聊天机器人的规则库. 最简单的AIML规则如下: ...

  2. 码住!Flink Contributor 速成指南

    简介: 不管初衷是什么,Flink 都非常欢迎大家一起建设和完善社区.在开始具体的贡献步骤之前,我们先简要介绍一下参与贡献的几种途径,以及 Clarify 关于开源贡献的一些固有印象. 作者:伍翀(云 ...

  3. 最详细AMD Ryzen CPU,VMware 15安装macOS 10.15.x Catalina 记录(第一篇)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 安装介绍 安装方式 成功案例 前期准备 工具准备 VMware Workstation 15. ...

  4. C#基于 iTextSharp.text.pdf 实现PDF水印添加功能

    在文档电子化管理中会遇到 对PDF进行水印化的需求,如图 private string AddWaterMark(Stream stream,string waterName) { PdfReader ...

  5. native react 图片多选_react-native实现的多图片选择器

    react-native-syan-image-picker 功能介绍 基于已有原生第三方框架封装的多图片选择组件,适用于 React Native App. 原生框架依赖 功能特点 支持 iOS.A ...

  6. 最详细AMD Ryzen CPU,VMware 16安装macOS 11.x BigSur记录(第二篇)

    虚拟机安装macOS 安装之前 博主电脑配置 博主电脑环境 安装环境准备 开始安装 安装VMware Workstation unlocker解锁工具 创建虚拟机 配置虚拟机 运行虚拟机 安装VMwa ...

  7. AI绘画,治愈着甲方乙方的“恩怨情仇”

    | 文章来源于:"腾讯云AI"公众号 在一部分商业活动中, 是创意优先还是效率优先?二者能否兼得? 对于绘画.设计等专业人士,创意与效率之间的矛盾,一直都是难以权衡的问题. 这些问 ...

  8. iText5-PDF

    简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转化为PDF ...

  9. Android Studio 创建对应国家语言 values

    1.鼠标点击res文件夹,右键-->New-->Android Resource Directory 2.在弹出框里下方左侧列表点击 Locale,然后再点击中间的 "右移按钮& ...

最新文章

  1. Linux 忘记root登录密码解决方法
  2. R语言使用vcd包的spine函数可视化spinogram图(spinogram图是被归一化的堆叠条形图、这样每个条形的高度一样、内部显示不同分布的比例)
  3. android+单利模式中传递context,Android的Context详解
  4. 从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目
  5. 第四次上课 PPT作业
  6. 【教程】如何给Eclipse中添加库(jar包)
  7. 识别产品外观的合格软件_产品外观质量视觉检测系统.PDF
  8. 装有支付宝的手机丢了可咋办
  9. python变量和对象,切片列表元祖
  10. 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【六】设计人脸识别的识别类...
  11. 梦想是如何失去的?看小米和魅族发布有感
  12. .Net发布到服务器出现必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=的问题
  13. 例3.4 二叉树遍历 - 九度教程第32题(二叉树)
  14. 腾讯云网站域名备案帮助说明文档
  15. Specification 对象的常用方法
  16. Rstudio图片保存方式
  17. 有限域(3)——多项式环的商环构造有限域
  18. word突然不能保存只能另存为
  19. Fabric - chaincode开发模式
  20. 试读《Java特种兵(上册)》

热门文章

  1. 静下心来,无欲则刚——源自内心的骄傲
  2. 批量给word添加水印,word魔方顺利完成
  3. java怎么连发子弹_HTML-坦克大战-完成子弹连发功能(三)
  4. 没有一个冬天不可逾越
  5. 使用语义分割架构的文档扫描仪 DeepLabV3
  6. (详细)解决hive报错FAILED: SemanticException Cartesian products are disabled for safety的问题
  7. app逆向--美图秀秀sig参数
  8. TortoiseSVN安装失败——Please install the universal CRT first
  9. 国产桌面操作系统到底怎么做才能有戏?
  10. 记录一次uni-app按导航栏左边返回,app闪退问题