【转】http://blog.csdn.net/chenssy/article/details/26961957
原文出自:http://cmsblogs.com/?p=1031。尊重作者的成果,转载请注明出处! --
-- 个人站点:http://cmsblogs.com
同时这里没有状态转换,没有动作,有的只是Query(查找)。我们可以认为,通过S query U、V,通过U query V、P,通过V query U P。通过这样的转变我们可以将状态的转换转变为使用Java集合的查找。
诚然,加入在我们的敏感词库中存在如下几个敏感词:日本人、日本鬼子、毛.泽.东。那么我需要构建成一个什么样的结构呢?
首先:query 日 ---> {本}、query 本 --->{人、鬼子}、query 人 --->{null}、query 鬼 ---> {子}。形如下结构:
样我们就将我们的敏感词库构建成了一个类似与一颗一颗的树,这样我们判断一个词是否为敏感词时就大大减少了检索的匹配范围。比如我们要判断日本人,根据第一个字我们就可以确认需要检索的是那棵树,然后再在这棵树中进行检索。
但是如何来判断一个敏感词已经结束了呢?利用标识位来判断。
所以对于这个关键是如何来构建一棵棵这样的敏感词树。下面我已Java中的HashMap为例来实现DFA算法。具体过程如下:
日本人,日本鬼子为例
1、在hashMap中查询“日”看其是否在hashMap中存在,如果不存在,则证明已“日”开头的敏感词还不存在,则我们直接构建这样的一棵树。跳至3。
2、如果在hashMap中查找到了,表明存在以“日”开头的敏感词,设置hashMap = hashMap.get("日"),跳至1,依次匹配“本”、“人”。
3、判断该字是否为该词中的最后一个字。若是表示敏感词结束,设置标志位isEnd = 1,否则设置标志位isEnd = 0;
敏感词库我们一个简单的方法给实现了,那么如何实现检索呢?检索过程无非就是hashMap的get实现,找到就证明该词为敏感词,否则不为敏感词。过程如下:假如我们匹配“中国人民万岁”。
1、第一个字“中”,我们在hashMap中可以找到。得到一个新的map = hashMap.get("")。
2、如果map == null,则不是敏感词。否则跳至3
3、获取map中的isEnd,通过isEnd是否等于1来判断该词是否为最后一个。如果isEnd == 1表示该词为敏感词,否则跳至1。
通过这个步骤我们可以判断“中国人民”为敏感词,但是如果我们输入“中国女人”则不是敏感词了。
分享到:
相关推荐
在Java中实现敏感词过滤,我们可以采用以下几种方法: 1. **字符串匹配**:最基础的方法是使用字符串的contains()方法,逐个比较敏感词。但这种方法效率较低,不适合大量敏感词的场景。 2. **正则表达式**:将敏感...
在本文中,我们将探讨如何使用DFA(有穷自动机)算法在Java中实现敏感词过滤功能。敏感词过滤在许多应用程序中都是必要的,例如社交媒体、论坛或博客平台,以防止用户发布不当或有害的内容。以下是对DFA算法及其在...
Java实现敏感词过滤功能
在Java开发中,实现敏感词过滤功能是一项常见的需求,特别是在社交媒体...以上就是基于Java实现敏感词过滤功能的一些核心知识点。在实际开发中,还需要考虑到代码的可维护性、扩展性和安全性,以及对不同场景的适应性。
高效敏感词过滤JAVA实现(DFA算法) 5000字2ms 节点 + 2进制标识(节省空间/提高查询效率) 附源码、注释,附带专业敏感词库(3396个敏感词) 看得上就拿去用,替换下一两处util方法、改个路径即可 不求什么,...
我们在开发系统或者应用的过程中,经常需要对用户提交的评论或者文章进行审核,对其中的敏感词进行校验或者过滤,本资源可以帮助各位小伙伴以一个简单的方式实现敏感词的过滤,代码精简易懂,可以应用在实际开发过程...
`SensitivewordFilter.java` 文件很可能是实现敏感词过滤的核心类。在这个类中,可能会包含以下功能: 1. **初始化敏感词库**:首先,需要读取敏感词列表,如从配置文件、数据库或内存中加载。这些敏感词会被转换为...
在Java开发中,敏感词过滤是一项重要的功能,尤其在...通过以上步骤,我们可以有效地在Java项目中实现敏感词过滤,确保内容的合规性,防止不良信息的传播。同时,敏感词库应定期更新,以适应不断变化的敏感词汇环境。
Java作为一种广泛应用的编程语言,提供了多种实现敏感词过滤的方法。本篇将详细探讨如何在Java中进行敏感词过滤,并展示如何显示内容中包含的敏感词。 首先,我们要理解敏感词过滤的核心原理。敏感词过滤通常基于...
在Java编程语言中,敏感词过滤是一项重要的任务,特别是在处理用户输入、社交媒体分析、文本审查等场景中。这个话题涉及到如何有效地检测并替换或者屏蔽文本中的特定词汇,以符合法律法规或者平台规定。以下是对...
本篇文章将深入探讨Java中实现敏感词过滤的技术和方法。 首先,敏感词过滤的核心在于如何有效地匹配和替换敏感词汇。Java提供了一些强大的字符串处理和正则表达式功能,可以用来实现这一目标。正则表达式是匹配文本...
Java实现敏感词过滤,通常会结合上述的匹配算法,并考虑到性能优化,如使用缓存、多线程等手段。 四、应用场景 1. **社交媒体**:评论、帖子内容的审核,防止违规信息传播。 2. **在线教育平台**:作业、讨论区...
从提供的文件内容来看,本文是一篇关于Java Web技术研究的文章,主要介绍了一种基于Java Web的敏感词过滤系统的实现方法。该系统通过自动识别和阻断含有敏感词的聊天内容,并将敏感词替换为特定的符号或关键词,以...
本文将详细解析一个Java实现的敏感词过滤示例,并探讨其工作原理和技术细节。 #### 二、敏感词过滤的基本原理 敏感词过滤技术通常基于两种方式:一种是基于关键字匹配的方式;另一种则是基于规则引擎的方式。本...
使用DFA状态机实现敏感词过滤。 使用Java实现
2. **字符串匹配算法**:在Java中,有多种方式来实现敏感词过滤。基本的字符串匹配可以使用`contains()`方法,但这种方法效率较低。更高效的方法包括: - **正则表达式**:可以使用`Pattern`和`Matcher`类来构建...
在Java编程语言中实现敏感词检索,通常涉及到以下几个关键技术点: 1. **数据结构选择**:敏感词库通常包含大量词汇,为了高效地进行查找,会选择合适的数据结构来存储。常见的选择有数组、链表、哈希表(如HashMap...
提供的两个Java类很可能是实现敏感词过滤的核心组件。其中一个可能是`SensitiveWordFilter`,负责调用DFA或Trie树算法来过滤文本;另一个可能是`SensitiveWordData`,用于加载和管理敏感词库,可能包括解析敏感词...