首页 > 解决方案 > 我如何实现 NodeJS “你的意思是”功能?

问题描述

如何在 NodeJS 中实现“您的意思是”功能?我在互联网上搜索并找到了一个使用网络服务器的教程,但我将把它用于 Discord 机器人,所以我不能真正使用涉及网络服务器等的教程。

例如:

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

这可能使用NodeJS吗?如果是这样,我可以知道如何实现吗?

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

标签: node.js

解决方案


无论是在 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'

RunKit 中的工作代码。

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


推荐阅读