首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从句子中挑出冒犯词或与冒犯词混合匹配的句子

如何从句子中挑出冒犯词或与冒犯词混合匹配的句子
EN

Stack Overflow用户
提问于 2018-10-22 08:09:21
回答 2查看 77关注 0票数 3

我想避免在用户创建内容的区域(社交平台,比如用户在平台上为Post写东西)的冒犯性词汇。

为此,我有一个方法,我有一个数组,所有的攻击性词将被储存。

现在,为了检查这个句子包含了任何冒犯性的词,我写了一个方法,即

代码语言:javascript
复制
//NOTE: This array has offensive words. But I have not written here for not spreading any vulgarity to this platform.
const offensiveHolder = ["Test1", "Test2", "Test3", "Test4", "Test5"];
    if (offensiveHolder.indexOf(req.body.word) > -1) {
      console.log("Username has exist offensive word");
    } else {
      console.log("Username has not exist offensive word");
    }

这是一个非常基本的脚本,它可以识别文字是否准确地写成这样.

假设我写了H1TEST1KL,所以在这里,如果我从开始删除H1,从末尾删除KL,那么这个词是冒犯的。

我的脚本会失败,因为它没有足够的逻辑来识别..。是有人有任何方法,我可以得到线索,写逻辑,可以执行我想要的任务.

我希望这个算法能解决很多为用户交互搭建平台的人,他们不想看到任何可能破坏用户交互的脏话。

真的很感谢有人为此建议/帮助我

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-22 08:24:53

要解决问题中代码的基本问题,您需要采取相反的方法--而不是检查输入字符串是否与offensiveHolder数组中的一个字符串完全匹配(这很不可能),检查offensiveHolder中字符串的.some是否包含在输入字符串中。还要确保在比较之前将所有字符串转换为小写:

代码语言:javascript
复制
const offensiveHolder = ["test1", "test2", "test3", "test4", "test5"];
function hasBadWord(input) {
  const lowerInput = input.toLowerCase();
  return offensiveHolder.some(badword => lowerInput.includes(badword));
};
console.log(hasBadWord('fooTEST1bar'));
console.log(hasBadWord('footest999bar'));
console.log(hasBadWord('H1TEST1KL'));

票数 4
EN

Stack Overflow用户

发布于 2018-10-22 14:05:44

简单的没有箭头功能,

代码语言:javascript
复制
var offensiveWords = ["test1", "test2", "test3", "test4", "test5"];


function hasBadWord(input){
return offensiveWords.some(function(offesnsiveWord) {
    return input.toLowerCase().includes(offesnsiveWord);
});
}

console.log(hasBadWord('H1TEST1KL'));
console.log(hasBadWord('H1TES91KL'));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52924838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档