[Java]代码

import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.apache.commons.io.FileUtils;

import org.apache.commons.lang.StringUtils;

public class BadWordsUtil {

public static final int WORDS_MAX_LENGTH = 10;

public static final String BAD_WORDS_LIB_FILE_NAME = "badWords.txt";

//敏感词列表

public static Map[] badWordsList = null;

//敏感词索引

public static Map wordIndex = new HashMap();

/*

* 初始化敏感词库

*/

public static void initbadWordsList() throws IOException {

if (badWordsList == null) {

badWordsList = new Map[WORDS_MAX_LENGTH];

for (int i = 0; i < badWordsList.length; i++) {

badWordsList[i] = new HashMap();

}

}

//敏感词词库所在目录,这里为txt文本,一个敏感词一行

String path = BadWordsUtil.class.getClassLoader()

.getResource(BAD_WORDS_LIB_FILE_NAME)

.getPath();

System.out.println(path);

List words = FileUtils.readLines(new File(path),"UTF-8");

for (String w : words) {

if (StringUtils.isNotBlank(w)) {

//将敏感词按长度存入map

badWordsList[w.length()].put(w.toLowerCase(), "");

Integer index = wordIndex.get(w.substring(0, 1));

//生成敏感词索引,存入map

if (index == null) {

index = 0;

}

int x = (int) Math.pow(2, w.length());

index = (index | x);

wordIndex.put(w.substring(0, 1), index);

}

}

}

/**

* 检索敏感词

* @param content

* @return

*/

public static List searchBanWords(String content) {

if (badWordsList == null) {

try {

initbadWordsList();

} catch (IOException e) {

throw new RuntimeException(e);

}

}

List result = new ArrayList();

for (int i = 0; i < content.length(); i++) {

Integer index = wordIndex.get(content.substring(i, i + 1));

int p = 0;

while ((index != null) && (index > 0)) {

p++;

index = index >> 1;

String sub = "";

if ((i + p) < (content.length() - 1)) {

sub = content.substring(i, i + p);

} else {

sub = content.substring(i);

}

if (((index % 2) == 1) && badWordsList[p].containsKey(sub)) {

result.add(content.substring(i, i + p));

}

}

}

return result;

}

public static void main(String[] args) throws IOException {

String content = "含有敏感词的测试";

BadWordsUtil.initbadWordsList();

List badWordList = BadWordsUtil.searchBanWords(content);

if (badWordList.size() == 0){

System.out.println("没有找到敏感词!");

}else{

for(String s : badWordList){

System.out.println("找到敏感词:"+s);

}

}

}

}

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点!

本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

java检测敏感词,Java实现敏感词检测的代码相关推荐

  1. java判断敏感词_Java实现敏感词检测的代码详解

    [Java]代码 import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.ut ...

  2. java敏感词屏蔽器,“敏感词过滤”功能设置

    "敏感词过滤"功能设置 "敏感词过滤"是指对互联网发布的言论和文章中含有的敏感词进行过滤.敏感词经过在互联网的传播和扩散会影响社会的稳定和用户的使用.云锁的&q ...

  3. Java 实现文章汉字关键词(违禁词)识别1.0

    1.面向应用 最近公司新开发的电商平台,要实现一些违禁词过滤.需求很简单,就是从数据库中读取内容,包括资讯,产品,公司简介之类,看看是否存在违禁词,有的话就把这条记录的ID存入违禁词文档.可以应用于分 ...

  4. python中哪些词是敏感字词_python实现敏感词过滤的几种方法

    1.replace过滤 最简单也是最直接的就是直接循环敏感词,然后使用replace过滤关键词,文章和敏感词少的时候还可以,多的时候效率就真的很一般了. 2.使用正则过滤 有两个技术要点, 1.使用P ...

  5. 微信小程序在java后台获取用户unionid等敏感信息

    最近在弄小程序,阅读了微信官方文档,上面说可以在后台获取用户的openid和unionid这些敏感信息,当然网上也有不少帖子,有的是在前台获取的,不过这里不太建议把这些敏感信息放在前台,毕竟不太安全. ...

  6. Java调用命令行+java生成词云

    java调用命令行 package com.weizu.control; import java.io.BufferedReader; import java.io.InputStreamReader ...

  7. java abc 979899_商品标题由关键词组成,关键词主要包括核心词、类目词、属性词以及长尾词四种类型。其中属性词是指...

    商品标题由关键词组成,关键词主要包括核心词.类目词.属性词以及长尾词四种类型.其中属性词是指 答:商品属性 网签备案具有创设权利的功能,能产生物权变动的效力. 答:错 下列程序执行后输出的结果是\nx ...

  8. java 热门搜索 实现_热门搜索词获取java版

    日常生活中经常会有这样的需求,就是网站上.app上需要展示近期热搜的一些词汇,其实常用的做法当然是自己写爬虫去爬,不过这种办法是在太麻烦了,为了节省时间,可以调用一些接口来实现,比如常用的聚合数据,小 ...

  9. java tableview 双击_java-在TableView JavaFX的行上检测双击

    java-在TableView JavaFX的行上检测双击 我需要检测在TableView行上的双击. 如何侦听该行任何部分的双击并获取该行的所有数据以将其打印到控制台? 6个解决方案 108 vot ...

  10. java如何检测输入合法_使用java写的一个简易的计算器,可以检测输入是否合法。.doc...

    /* 使用java编写的简易计算器,可以实现+,-,*,/四则运算.注意: 括号没有作用,就是一个装饰.待日后有时间定会更新.DEL是退格,CLC是清空.并带有日期,输入语法检测功能 */ impor ...

最新文章

  1. 一次有趣的XSS漏洞挖掘分析(1)
  2. 【PAT甲级 BigDecimal科学计数法转换普通数字】1073 Scientific Notation (20 分) Java开挂解法 全部AC
  3. linux fpga通信,基于Linux的FPGA通信技术研究与实现
  4. JDK和CGLIB动态代理区别
  5. 2020 年 7 个软件开发趋势
  6. Intellij Idea 下包建包,无论怎么建都在同一级,已解决(附图)
  7. Eclipse 调试器
  8. Data-mediator入门系列2
  9. 斜杠“/”与反斜杠“\”的区别
  10. 企业集团合并财务报表
  11. Johnson法则-流水作业调度-动态规划
  12. 搭建表白网站详细教程,小白也可以学懂!!!!
  13. c++小游戏大全(不定时更新)
  14. java jnlp 运行_java怎么运行jnlp文件 jnlp文件怎么打开
  15. 《春·蜂》processing下的动画技术交互应用
  16. 用74ls90组成二十四进制计数器_减法计数器的组成以及原理
  17. RabbitMQ的交换机类型和工作模式
  18. Python execjs(执行js脚本)
  19. Matlab新老版本的差别问题——CAGD课程设计
  20. SEO分类:白帽SEO-黑帽SEO-灰帽SEO

热门文章

  1. 最最牛的SQL客户端软件
  2. pdfminer的安装
  3. 94% Asset Optimization
  4. java写企业员工信息管理系统
  5. tiledmap 图块属性_TiledMap详解
  6. u9系统的使用方法仓库_【用友u9使用教程】
  7. 人脸识别管理系统php源码,完整的人脸识别系统源代码
  8. SQL进阶:数据中间表,多表取身份证号-整理-匹配多表-合并整理
  9. windows自带黑体_win7系统黑体字体
  10. LwIP 协议栈源码详解 ——TCP/IP 协议的实现(二:移植综述)