当前位置:   article > 正文

php 调用 chatterbot,ChatterBot + Spacy/Jieba + Nonebot 打造免费qq可调教机器人

chatterbot对应版本spacy

自从上次弄明白了qq bot机器人的架构之后,就一直很想真正的写一个小机器人,但真正弄的时候发现就算QQ bot可以用Nonebot/Http Coolq通信之后,其实想要写一个可以对话的机器人还是比较困难。

最直接的方法当时是直接用Tuling Api,这个免费版本一天只有100次的家伙。

但除了上限不说,这个最大的问题在于封闭的model提供的API完全没有成长性(尊贵豪华版的可能有?),总之就算你辛辛苦苦教他说话,也没用的。

唯一可行的就是自己从头写一个Model进行训练了,这方面很显然需要涉及到NLP,数据库等等,以及如何和Nonebot集成等等,工作量想象就是很大,一直也懒得去弄(毕竟这就是个娱乐

然后趁着三天放假的时间,花心思看了一下上次看到的那个ChatterBot 库,然后集合Spacy和Jieba的框架,弄了一个可以训练的Model,结合Nonebot,虽然还是看起来很蠢,但总之看到了如果长期训练下去——会稍微聪明一点的AI。

下面简单说一下难点。

ChatterBot 用pip安装的时候,因为我在Vultr上面的主机上内存不够,总是因为spacy 2.1.9的问题挂掉了,上面显示的不是Memory Error 而是Killed

解决方法:

在安装的目录下面吧Spacy>=2.1 <2.2的requirement 删掉,变成Spacy。

这样他就会直接安装Spacy,而Spacy 2.2.3解决了Memory Issue,哪怕memory不够也可以直接安装

然后是用的时候会发现Chatterbot没办法Create,这是因为Spacy的model直接load的是“en”,我们需要下一个2.2版本兼容的en_web_sm model,然后link到en上面

·

pip install https://github.com/explosion/spacy-models/releases/download/en\_core\_web\_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz#egg=en_core_web_sm `

pip -m spacy en\_core\_web\_sm en

然后就可以 create了。(但其实这一步没弄好也无所谓,因为我们用的是Jieba和Spacy内置的Chinese model 不需要这个训练好的en模型)

总之在解决了安装之后,按照教程走,一个简单的能回答的robot肯定可以实现了。但仔细观察后发现这个robot对于中文的回答非常的蠢,只有一模一样的回答才能给出答案

类似于 训练“你的名字是什么” 回答 “千夏”。

然后遇到了“你的名字是”,就完全不知道怎么回答了。

稍微思考了一下,这应该就是NLP的问题了。观察了一下Chattbot Source code里面的tagger(https://github.com/gunthercox/ChatterBot/blob/master/chatterbot/tagging.py),

self.nlp =

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/882038
推荐阅读
相关标签
  

闽ICP备14008679号