node.js - 我如何实现 NodeJS “你的意思是”功能?
问题描述
如何在 NodeJS 中实现“您的意思是”功能?我在互联网上搜索并找到了一个使用网络服务器的教程,但我将把它用于 Discord 机器人,所以我不能真正使用涉及网络服务器等的教程。
例如:
User enters command: restrat
Actual command: restart
Bot Message: Command not found, did you mean "restart"?
这可能使用NodeJS吗?如果是这样,我可以知道如何实现吗?
任何帮助将不胜感激!谢谢。
解决方案
无论是在 NodeJS 中还是在浏览器中,都需要一些代码来找到与用户输入的文本最相似的命令。
此代码使用Levenshtein 距离计算来返回最接近的匹配。
const jsLevenshtein = require("js-levenshtein");
function closestCommand (userText, commands) {
let minDistance = Infinity;
return commands.reduce((closest, cmd) => {
const cmdDistance = jsLevenshtein(userText, cmd);
if (cmdDistance < minDistance) {
minDistance = cmdDistance;
return cmd;
}
return closest;
}, '');
}
const myCommands = ['quit', 'login', 'logout', 'restart', 'refresh'];
const userCommand = 'restrat';
console.log(`closest command is '${closestCommand(userCommand, myCommands)}'`);
// closest command is 'restart'
将它添加到 NodeJS 应用程序应该很简单。
推荐阅读
- git - GIT - 查找本地分支中提交的所有文件
- python - Twitter 付费高级 API 搜索返回“Twitter 请求错误 422”
- azure - 无法下载 Azure 订阅的发票
- mysql - mysql:/usr/local/lib/libssl.so.1.1:未找到版本“OPENSSL_1_1_1”(mysql 需要)
- python - 如何在 SQLAlchemy 中自动映射自定义 SQL 查询的结果集
- aws-auto-scaling - AWS Auto Scaling 单节点组?
- reactjs - antd autocomplete的值如何重置,如果值不在数据源中
- python - 恼人的 Python 列表索引超出范围错误
- c++ - 如何使用 CMake 在 KDevelop 中定义多配置?
- vue.js - nativescript 等待请求,直到 vuex 完成请求