首页 > 解决方案 > 无论如何在Java Script中模拟“你的意思是”吗?

问题描述

所以我正在创建一个带有 API 的机器人,并且该列表非常区分大小写,并且只允许完全匹配。例如,我有“ENCHANTED_GLISTERING_MELON”这个词。它的全大写有下划线和复杂的拼写,如果不完全匹配,网站不接受。它不是那么用户友好。有什么办法可以让用户在输入内容时自动大写,用下划线替换空格,最重要的是检查拼写错误,然后考虑最接近的单词?我有一本网站接受的字典。

标签: javascriptnode.jsdiscord.js

解决方案


禁止某些带有拼写错误的单词并非易事。

为避免重新发明轮子,我建议您使用RASA等开源引擎之一来启用神经语言处理与您的聊天。

https://rasa.com/

但是,如果您在 JavaScript 中解析字符串时遇到问题,那么使用起来就不是那么容易了。

对于单词相似性,您可以检查 Levenshtein 距离算法:

https://www.npmjs.com/package/autocorrect

https://www.npmjs.com/package/string-similarity

获取最接近的字符串匹配

对于一个简单的解决方案,您可以只替换您不允许的单词:

如何在javascript中替换几个单词

此外,如果它只是您聊天中坏词的过滤器,您可以使用一些现有的库,例如bad-words

https://www.npmjs.com/package/bad-words

您可以针对您的特殊奇怪情况将所有内容大写:

'enchanted glistering melon'.trim().replace(/ /g,'_').toLocaleUpperCase()

推荐阅读