如何实现 NodeJS "Did you mean"功能?



如何实现一个"你是说";NodeJS中的功能?我在互联网上搜索了一下,发现了一个使用网络服务器的教程,但我会将其用于Discord机器人,所以我不能真正使用涉及网络服务器等的教程。

例如:

User enters command: restrat
Actual command: restart
Bot Message: Command not found, did you mean "restart"?

使用NodeJS可以做到这一点吗?如果是的话,我可以知道如何实现这一点吗?

任何帮助都将不胜感激!谢谢

无论是在NodeJS还是浏览器中,都需要一些代码来找到与用户输入的文本最相似的命令。

此代码使用Levenstein距离计算来返回最接近的匹配。

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'

正在运行RunKit中的代码。

将其添加到NodeJS应用程序中应该很简单。

相关内容

最新更新