如何为你的网站构建无服务器NLP聊天机器人


如何为你的网站构建无服务器NLP聊天机器人

文章插图
> Image source: Author
可以为自己的网站构建聊天机器人 , 而无需依赖Dialogflow或Watson等第三方服务 , 也无需服务器 。我将向您展示如何构建一个完全在浏览器中运行的聊天机器人 。
我将假设您对JAVAScript有一定的了解 , 并了解自然语言处理的工作原理 。不需要高级知识或机器学习经验 。
如果有人告诉您在使用JavaScript的浏览器中进行机器学习是疯狂的 , 请不要听 , 因为很快您就会了解自己 。
我们的代码将基于NLP.js版本4 。NLP是一个开放源代码库 , 用于以JavaScript编写的自然语言处理 。该项目将允许您直接从语料库在浏览器中训练NLP , 并将Hook添加到任何以编程方式更改答案的意图 。
最终项目可以在我的GitHub存储库上找到:https://github.com/MeetMartin/nlpjs-web 。您可以下载它 , 打开index.html , 然后与最终的聊天机器人一起玩 。
如今 , 每个真正的开发人员都应具备一些人工智能方面的经验 , 并且比使用您自己开发的东西与您的计算机进行交谈更像是科幻小说 。
安装套件在任何文件夹中创建一个新的npm项目并安装NLP软件包:
npm i -D @nlpjs/core @nlpjs/lang-en-min @nlpjs/nlp @nlpjs/request-rn@nlpjs/request-rn
我们还需要browserify和terser才能构建供浏览器使用的NLP:
npm i -D browserify terser
全新安装的软件包可为您带来新项目的味道 。你应得的 。
建立NLP第一步是使用browserify和terser构建NLP 。为此 , 我们只需要在buildable.js中创建一个基本设置:
我们仅使用NLP的核心和小型英语包 。要构建所有内容 , 只需在您的package.json中添加一个构建命令:
现在运行构建:
npm run build
您应该以./dist/bundle.js结尾 , 大约只有137 KB 。还需要注意的是 , NLP拥有令人印象深刻的受支持语言列表 。但是 , 只有英语具有针对浏览器的优化版本 。
在浏览器中训练NLP现在我们已经创建了包 , 我们可以在浏览器中训练我们的NLP 。创建此index.html:
我们的功能setupNLP负责库的设置以及培训 。语料库是一个JSON文件 , 它以以下格式定义我们的聊天机器人的对话:
该意图是会话节点的唯一标识符 , 其名称应表示聊天机器人做出响应的用户的意图 。言语是用户可以说出触发意图的一系列训练示例 。然后 , 答案是聊天机器人将随机选择的一系列响应 。
为了训练我们的聊天机器人 , 我们从库中的例子中借用了更大的语料库:https://raw.githubusercontent.com/jesus-seijas-sp/nlpjs-examples/master/01.quickstart/02.filecorpus/corpus-en.json 。但是对于您的用例 , 请随时创建自己的语料库 。只要记住 , 库希望从某个URL读取语料库 。
在浏览器中打开index.html时 , 您应该会看到一个简单的聊天表格 , 该表格目前还没有任何作用 。
如何为你的网站构建无服务器NLP聊天机器人

文章插图
 
但是 , 如果打开浏览器控制台 , 您已经可以看到成功的训练输出:
如何为你的网站构建无服务器NLP聊天机器人

文章插图
 
训练非常快速 , 并使训练后的模型可用于浏览器中的聊天机器人 。这是一种更有效的方法 , 因为语料库文件比生成的模型小得多 。
训练您的第一个机器学习代码感觉很好 。您刚刚成为一个传奇人物 , 并且这个星球上的少数人可以说:"是的 , 我曾经训练过一次AI , 没什么大不了的 。"
聊天机器人HTML现在 , 我们将使chatbot表单起作用 。通过添加onChatSubmit函数来扩展index.html:
现在 , 您可以使用新的聊天机器人了:
如何为你的网站构建无服务器NLP聊天机器人

文章插图
 
在https://raw.githubusercontent.com/jesus-seijas-sp/nlpjs-examples/master/01.quickstart/02.filecorpus/corpus-en.json上探索您的主体或主体 , 以了解支持哪些对话主题 。
现在 , 您可以在酒吧中向朋友展示并轻松获得他们的钦佩 , 因为您现在是真正的黑客 。
向意图添加挂钩您可能希望您的聊天机器人能够使用每种意图调用一些其他代码 , 或者使用一些API调用替换某些意图的答案 。让我们将index.html扩展到最终版本 。


推荐阅读