目录
简介
先把目录与思路写在这儿,有机会慢慢补.
aiml如何支持中文补充完毕
搭建聊天机器人的嘴巴之对话功能
websocket简介
Tornado实现websocket服务端
Tornado实现websocket客户端
搭建聊天机器人的大脑之知识库与思考功能
AIML文件简介
PyAIML如何支持中文
PyAIML解析如何支持中文
请先参考我的github上pyaiml的代码
https://github.com/lemontreeshy/PyAIML
请允许我先废话介绍一下aiml的解析过程
读取aiml文件利用xml解析工具解析将问题转为词语列表将问题与答案转为树结构结束
xml解析这一部分,我就不多说了,主要是xml.sax进行的.
将问题转为词语列表这一步,由于aiml只支持空格分隔的语言,如英语,法语等等,对于中文的
支持力度差了一点,不过我们可以利用中文分词插件来将中文切割成空格分隔的字符串.
import jieba as jb
def splitChinese(s):
result = jb.cut(s)
ret = '|'.join(result)
return ret.split("|")
这段代码利用jieba分词天然能够区分中英文的优势,省去了判断中英文的过程,不过我还是要解释一下如何区别中英文(在unicode编码情况下)
def isChinese(c):
r = [
(0x3400, 0x4DB5), (0x4E00, 0x9FA5), (0x9FA6, 0x9FBB), (0xF900, 0xFA2D),
(0xFA30, 0xFA6A), (0xFA70, 0xFAD9), (0x20000, 0x2A6D6), (0x2F800, 0x2FA1D),
(0xFF00, 0xFFEF),
(0x2E80, 0x2EFF),
(0x3000, 0x303F),
(0x31C0, 0x31EF)]
return any(s <= ord(c) <= e for s, e in r)
返回值为True即为中文,False为英文.
至于在代码何处调用splitChinese,参考链接里的aiml/AimlParser.py文件.
PyAIML查找时如何支持中文
通过自定义标签扩展AIML文件
AIML如何扩展以支持SQL查询
AIML如何扩展以支持SQL插入
AIML如何扩展以支持个性化标签
AIML如何生成以及存储知识库
AIML如何通过知识库实现推理过程
数据库如何帮助AIML扩展专业方向知识库
中文语义分析以及模糊匹配
如何通过扩展知识库实现推理过程