> 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
全新安装的软件包可为您带来新项目的味道。 你应得的。
第一步是使用browserify和terser构建NLP。为此,我们只需要在buildable.js中创建一个基本设置:
我们仅使用NLP的核心和小型英语包。要构建所有内容,只需在您的package.json中添加一个构建命令:
现在运行构建:
npm run build
您应该以./dist/bundle.js结尾,大约只有137 KB。 还需要注意的是,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时,您应该会看到一个简单的聊天表格,该表格目前还没有任何作用。
但是,如果打开浏览器控制台,您已经可以看到成功的训练输出:
训练非常快速,并使训练后的模型可用于浏览器中的聊天机器人。这是一种更有效的方法,因为语料库文件比生成的模型小得多。
训练您的第一个机器学习代码感觉很好。 您刚刚成为一个传奇人物,并且这个星球上的少数人可以说:"是的,我曾经训练过一次AI,没什么大不了的。"
现在,我们将使chatbot表单起作用。 通过添加onChatSubmit函数来扩展index.html:
现在,您可以使用新的聊天机器人了:
在https://raw.githubusercontent.com/jesus-seijas-sp/nlpjs-examples/master/01.quickstart/02.filecorpus/corpus-en.json上探索您的主体或主体,以了解支持哪些对话主题。
现在,您可以在酒吧中向朋友展示并轻松获得他们的钦佩,因为您现在是真正的黑客。
您可能希望您的聊天机器人能够使用每种意图调用一些其他代码,或者使用一些API调用替换某些意图的答案。让我们将index.html扩展到最终版本。
在setupNLP中,我们添加了一行:
nlp.onIntent = onIntent;
我们创建了onIntent函数。请注意,onIntent将每个意图的响应对象记录到控制台中。它还通过根据用户的当前时间用答案替换其输出,从而为greetings.hello意图添加了逻辑。就我而言,现在是下午:
这不是很棒吗?如果您正准备创建自己的AI创业公司,则高五。
请注意,NLP的浏览器版本不支持某些常见的自然语言处理功能,例如完整库中可用的命名实体或实体提取。
NLP作为图书馆目前也不支持故事或后续意图。 这些是chatbot业务流程当前开发的一部分,但是在撰写本文时,该功能仍处于试验阶段。
使用此解决方案时,请记住,访问您网站的任何人都可以在浏览器中使用整个语料库及其功能。 这也使任何人都能够简单地下载您的语料库,对其进行操作以及以其他方式使用它。 确保您的漫游器没有公开任何私人信息。
使用仅浏览器的解决方案具有某些优势,但也消除了一些机会,因为您仍然需要一些后端解决方案,以便能够记录用户与您的聊天机器人在谈论什么。 同时,如果您记录整个对话,请考虑隐私问题,尤其是在GDPR之类的立法中。
(本文由闻数起舞翻译自Martin Novák的文章《Natural Language Processing in the Browser》,转载请注明出处,原文链接:https://medium.com/better-programming/natural-language-processing-in-the-browser-8ca5fdf2488b)