从零开始写聊天机器人

目录

简介

先把目录与思路写在这儿,有机会慢慢补. 
aiml如何支持中文补充完毕

搭建聊天机器人的嘴巴之对话功能

websocket简介

Tornado实现websocket服务端

Tornado实现websocket客户端

搭建聊天机器人的大脑之知识库与思考功能

AIML文件简介

PyAIML如何支持中文

PyAIML解析如何支持中文

请先参考我的github上pyaiml的代码

 
 
  • 1
  • 2

https://github.com/lemontreeshy/PyAIML

请允许我先废话介绍一下aiml的解析过程

 
 
  • 1
  • 2
读取aiml文件利用xml解析工具解析将问题转为词语列表将问题与答案转为树结构结束
xml解析这一部分,我就不多说了,主要是xml.sax进行的.
将问题转为词语列表这一步,由于aiml只支持空格分隔的语言,如英语,法语等等,对于中文的
支持力度差了一点,不过我们可以利用中文分词插件来将中文切割成空格分隔的字符串.

 
 
  • 1
  • 2
  • 3
  • 4
import jieba as jb
def splitChinese(s):   
    result = jb.cut(s)  
    ret = '|'.join(result)
    return ret.split("|")
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
这段代码利用jieba分词天然能够区分中英文的优势,省去了判断中英文的过程,不过我还是要解释一下如何区别中英文(在unicode编码情况下)

 
 
  • 1
  • 2
def isChinese(c):
    # http://www.iteye.com/topic/558050

    r = [
        # 标准CJK文字
        (0x3400, 0x4DB5), (0x4E00, 0x9FA5), (0x9FA6, 0x9FBB), (0xF900, 0xFA2D),
        (0xFA30, 0xFA6A), (0xFA70, 0xFAD9), (0x20000, 0x2A6D6), (0x2F800, 0x2FA1D),
        # 全角ASCII、全角中英文标点、半宽片假名、半宽平假名、半宽韩文字母
        (0xFF00, 0xFFEF),
        # CJK部首补充
        (0x2E80, 0x2EFF),
        # CJK标点符号
        (0x3000, 0x303F),
        # CJK笔划
        (0x31C0, 0x31EF)]
    return any(s <= ord(c) <= e for s, e in r)
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
返回值为True即为中文,False为英文.

至于在代码何处调用splitChinese,参考链接里的aiml/AimlParser.py文件.

 
 
  • 1
  • 2
  • 3
  • 4

PyAIML查找时如何支持中文

通过自定义标签扩展AIML文件

AIML如何扩展以支持SQL查询

AIML如何扩展以支持SQL插入

AIML如何扩展以支持个性化标签

AIML如何生成以及存储知识库

AIML如何通过知识库实现推理过程

数据库如何帮助AIML扩展专业方向知识库

中文语义分析以及模糊匹配

如何通过扩展知识库实现推理过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值