基于RPC服务的智能问答

数据挖掘与机器学习 fireling 4936℃

之前玩了一下微信的自动回复,纯粹为了好玩。后来想看看,要是机器自问自答会出现什么情况呢,最后会收敛吗?

于是,我把问答功能模块搭在了服务器上,提供RPC服务,一来可以实现代码复用,二来可以进行核心代码保密,嘿嘿。RPC(Remote Procedure Call Protocol),也就是远程过程调用协议,是程序B通过网络去调用程序A(可能在另一个机器上)的方法。

如果你想调用该服务,直接如下两三句话就搞定。其中proxy是python内置的rpc服务代理,代理地址为 http://lining0806.com:8888/ ,proxy内封装的子函数auto_reply返回的内容就是针对输出问题的自动回答。

code

如果你想玩人机交互,那么可以这样做:


# 人与机器交谈
print u'请输出你们要交谈的内容: '
# prompt_input = raw_input().strip().decode('utf-8')
while 1:
    prompt_input = raw_input().strip().decode('utf-8')
    if len(prompt_input) != 0:
        prompt_input = proxy.auto_reply(prompt_input)
        print prompt_input
    else:
        break

ai

如果要是机器人与机器人PK呢?实验证明它们会很愚笨,很容易折腾到一句话里面走不出来。为此,我针对问答增加了个判断条件,也就是评价问和答的编辑距离。

字符串的编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离,可以用于于单词的拼写矫正,当然也能很好的评价两个字符串的相似程度。如果编辑距离小于某个阈值,那么就调整话题,这样两个机器人之间也不会冷场。

aiai

试试吧~

 

转载请注明:宁哥的小站 » 基于RPC服务的智能问答

喜欢 (13)