敏感词过滤

  最近在项目中遇到这样一个需求,一个中文敏感词数组chineseWords,一个英文敏感词数组englishWords,现在有用户聊天中输入的一句话,这句话有三种情况:

  1,全是中文和标点符号

  2,全是英文加标点符号

  3,中英文标点符号混合

现在要判断这句话是不是包含敏感词的(中文或英文),如果包含即为敏感语句。具体需求说明如下:

首先把判断一个语句是否是敏感语句的功能封装成一个npm包,这样无论在哪个项目中需要此功能直接导入使用就可以了。(不会封装npm包的可参考此教程 https://segmentfault.com/a/1190000011095467)

npm包的核心代码如下:

const chineseWords = ['小穴', '寻乐论坛', '小姐威客网', '小姐信息', '二b']
const englishWords = ['zoophilia', 'yiffy', 'yeasty', 'yaoi', 'sb']
const judgeSensitiveWords = (str) => {
  // 如果存在敏感词就返回true , 不存在返回false
  let flag = false
  // 判断中文
  for (let i = 0; i < chineseWords.length; i += 1) {
    if (str.indexOf(chineseWords[i]) !== -1) {
      // 说明中文中包含敏感词
      flag = true
      break
    }
  }

  if (flag === false) {
    // 如果中文中没有敏感词就继续判断英文
    const reg = /[a-zA-Z]+/ig
    // match方法返回的是由匹配结果组成的数组,即语句中所有连写的英文都将被筛选出来,如果没有匹配的会返回null
    const resultS2 = str.match(reg)
    // console.log('judgeSensitiveWords(str) ', resultS2)
    if (resultS2) {
      for (let i = 0; i < englishWords.length; i += 1) {
        if (resultS2.indexOf(englishWords[i]) !== -1) {
          flag = true
          break
        }
      }
    }
  }

  return flag
}

export default judgeSensitiveWords

使用如下:

// @dby-h5-clients/judge-sensitive-words即为npm包中package.json文件中的name
import judgeSensitiveWords from '@dby-h5-clients/judge-sensitive-words'

onChatMsg: (content) => {
      // console.log('judgeSensitiveWords(str) ', judgeSensitiveWords(content))
      if (judgeSensitiveWords(content)) {
        // 更新到 store
        store.chatList.add({
          msg: content,
          username: store.selfUserInfo.nickname,
          timestamp: Date.now(),
          role: store.selfUserInfo.role,
          uid: store.selfUserInfo.uid,
        })
      } else {
        // 发送到 apps
        stepConnectAPPSServer.finish.then((apps) => {
          apps.sendChat(content)
        })
      }
    },

这样此功能就实现了。

 

转载于:https://www.cnblogs.com/chenbeibei520/p/9887984.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值