java 聊天机器人_如何编写简单的聊天机器人AI?

本文介绍了如何使用Python编写一个简单的聊天机器人。机器人基于训练文本生成对话,通过选择单词的后续单词来形成响应,虽然反应可能不现实,但可以通过调整训练数据改进。作者提供了训练器和机器人代码,读者可以尝试使用不同文本训练并体验机器人的交互效果。
摘要由CSDN通过智能技术生成

天真的聊天机器人程序 . 没有解析,没有聪明,只是一个训练文件和输出 .

它首先在文本上训练,然后使用该训练中的数据生成对话者输入的响应 . 训练过程创建一个字典,其中每个键都是一个单词,值是在训练文本中的任何位置顺序跟随该单词的所有单词的列表 . 如果一个单词在此列表中不止一次出现,那么这反映出它更可能由机器人选择,不需要概率性的东西就可以用列表来做 .

机器人从您的输入中选择一个随机单词,并通过选择另一个被视为其持有单词的后继单词的随机单词来生成响应 . 然后,它通过依次找到该单词的后继者并反复进行直到它认为已经说得足够重复该过程 . 通过停止在训练文本中的标点符号之前的单词来达到该结论 . 然后它再次返回到输入模式以让您响应,依此类推 .

这不是很现实,但我在此挑战任何人在71行代码中做得更好!!对于任何崭露头角的Python主义者来说,这是一个巨大的挑战,我希望我可以向更广泛的受众开放挑战,而不是我访问此博客的少数访问者 . 要编写一个总是保证语法化的机器人肯定会接近几百行,我只是想通过最简单的规则来简化计算机只是为了让计算机只是在说些什么 .

至少可以说它的反应相当印象派!你也必须把你说的用单引号括起来 .

我使用War and Peace作为我的“语料库”,花了几个小时进行训练,如果你不耐烦则使用较短的文件......

这是培训师

#lukebot-trainer.py

import pickle

b=open('war&peace.txt')

text=[]

for line in b:

for word in line.split():

text.append (word)

b.close()

textset=list(set(text))

follow={}

for l in range(len(textset)):

working=[]

check=textset[l]

for w in range(len(text)-1):

if check==text[w] and text[w][-1] not in '(),.?!':

working.append(str(text[w+1]))

follow[check]=working

a=open('lexicon-luke','wb')

pickle.dump(follow,a,2)

a.close()

这是机器人

#lukebot.py

import pickle,random

a=open('lexicon-luke','rb')

successorlist=pickle.load(a)

a.close()

def nextword(a):

if a in successorlist:

return random.choice(successorlist[a])

else:

return 'the'

speech=''

while speech!='quit':

speech=raw_input('>')

s=random.choice(speech.split())

response=''

while True:

neword=nextword(s)

response+=' '+neword

s=neword

if neword[-1] in ',?!.':

break

print response

当它说出一些似乎有意义的东西时,你往往会有一种不可思议的感觉 .

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值