using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Collections;namespace BLL.Common
{#region 操作类public class KeywordsFilter{#region 关键字过滤/// <summary>/// 关键字过滤/// /// </summary>/// <param name="keywords"></param>/// <returns></returns>public static string Filter(string keywords){//需过滤关键字集合List<string> badwords = new List<string>();KeywordsFilterClass kf = new KeywordsFilterClass();keywords = kf.BadwordInKeywords(keywords, badwords);return keywords;}#endregion}#endregion#region 关键字过滤类/// <summary>/// 关键字过滤类/// </summary>public class KeywordsFilterClass{private Dictionary<string, object> hash = new Dictionary<string, object>();//脏字字典 开头脏字存储private BitArray firstCharCheck = new BitArray(char.MaxValue);//脏字字典 单个char存储private BitArray allCharCheck = new BitArray(char.MaxValue);private int maxLength = 0;/// <summary>/// 初始化 已存储的 过滤字符串/// </summary>/// <param name="words"></param>private void InitHash(List<string> badwords){foreach (string word in badwords){//保存字典内不存在的脏字if (!hash.ContainsKey(word)){hash.Add(word, null);//设置脏字计算长度this.maxLength = Math.Max(this.maxLength, word.Length);firstCharCheck[word[0]] = true;foreach (char c in word){allCharCheck[c] = true;}}}}/// <summary>/// 替换字符串中的脏字为指定的字符/// </summary>/// <param name="text"></param>/// <returns></returns>public string BadwordInKeywords(string text, List<string> badwords){//初始化 脏字字典this.InitHash(badwords);int index = 0;while (index < text.Length){//判断开头脏字if (!firstCharCheck[text[index]]){//未找到开头脏字 则索引累加while (index < text.Length - 1 && !firstCharCheck[text[++index]]) ;}for (int j = 1; j <= Math.Min(maxLength, text.Length - index); j++){if (!allCharCheck[text[index + j - 1]]){break;}string sub = text.Substring(index, j);if (hash.ContainsKey(sub)){text = text.Replace(sub, "**");//this.InitHash(badwords);index += j;break;}}index++;}return text;}}#endregion
}

转载于:https://www.cnblogs.com/TiestoRay/articles/2686115.html

【转】关键字过滤算法相关推荐

  1. 字符串多模式精确匹配(脏字/敏感词汇/关键字过滤算法)——TTMP算法 之实战F模式...

    前面那么多篇文章都太抽象,这次来一个稍微实际一点的.F模式是我实际上选用的模式,对该模式我做了不少实际的测试,因此代码也算是比较稳定的.不过由于实际上为了得到该算法的效率,算法本身做了一些优化,对于初 ...

  2. cocos脏话过滤_字符串多模式精确匹配(脏字/敏感词汇/关键字过滤算法)——TTMP算法 之实战F模式...

    前面那么多篇文章都太抽象,这次来一个稍微实际一点的.F模式是我实际上选用的模式,对该模式我做了不少实际的测试,因此代码也算是比较稳定的.不过由于实际上为了得到该算法的效率,算法本身做了一些优化,对于初 ...

  3. 一个较完整的关键字过滤解决方案(上)

    如果您希望看到关键字过滤算法的话那么可能就要失望了.博客园中已经有不少关于此类算法的文章(例如这里和这里),虽然可能无法直接满足特定需求,但是已经足够作为参考使用.而本文的目的,是给出一个较为完整的关 ...

  4. 推荐系统--基于用户的协同过滤算法

    1.         概述 和搜索引擎一样,推荐系统是为了帮助人们更快速的获得对自己有用的信息. 和搜索引擎不同,推荐系统是人们被动的获取,由系统根据用户行为或其他的信息推荐给用户的,儿搜索引擎是用户 ...

  5. [机器学习] 推荐系统之协同过滤算法(转)

    [机器学习]推荐系统之协同过滤算法 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.本文将带你深入了解协同过滤的秘密.下面直接进入正题. 1. 什么是推荐算法 推荐算法最 ...

  6. 基于用户的协同过滤算法

    最近写搜索引擎文章写多了,来一篇之前写的老文,给那些对推荐算法感兴趣想入门的人吧,最近也在做推荐广告系统,又翻出来看了看. 什么是推荐算法 推荐算法最早在1992年就提出来了,但是火起来实际上是最近这 ...

  7. 【毕业设计_课程设计】基于协同过滤算法的个性化推荐系统(源码+论文)

    文章目录 0 项目说明 1 研究目的 2 研究方法 3 系统设计 3.1 前台模块 3.1.1 首页 3.1.2 个人中心 3.1.3 发布者中心 3.2 后台模块 3.2.1 首页 3.2.2 新闻 ...

  8. 毕业设计之基于协同过滤算法的电影推荐系统设计(一) - 项目简介

    由于本人今年毕业,为完成毕设特地想着实现一个简单的推荐系统设计,思来想去,小电影不就是很好的切入点嘛! 于是诞生该项目,将会一步步带着大家实现一个自己的电影推荐系统. 1 研究目标 从应用场景来看,基 ...

  9. 基于协同过滤算法的个性化新闻推荐系统

    基于协同过滤算法的个性化新闻推荐系统能够根据对用户在网站内的操作记录的分析,为用户推荐可能喜欢的新闻内容.另外,该系统还实现了新闻的新增.改.查.删操作,以及新闻的评论和回复.新闻评论管理等. 二.研 ...

最新文章

  1. Vijos1683 有根树的同构问题
  2. CVPR2021|CenterPoint :基于点云数据的3D目标检测与跟踪
  3. rmi反序列化导致rce漏洞修复_JAVA反序列化漏洞解决办法
  4. Struts(十):OGNL表达式(一)
  5. matlab simulink_运用MATLAB和Simulink开发自动驾驶控制系统
  6. Flex itemReanderer(转)
  7. 关于 php mysql pdo cannot find driver 解决方案
  8. php 注册自动登录,php – 创建第二个自动登录用户的登录页面
  9. 大学计算机知识考试题,大学计算机基础重点知识考试试题
  10. 【雷达通信】基于matlab多普勒连续波测速【含Matlab源码 642期】
  11. 牛腩新闻发布系统-概要介绍
  12. 前端特效 - 前置- - 01. 百叶窗
  13. antdesign 所兼容的浏览器_牛人推荐的跨浏览器兼容性总结
  14. 搞清楚p问题、NP问题、NP完全问题和NP难问题
  15. 继承viewgroup
  16. 配置中心—Consul配置管理
  17. 自制变压器,要注意几个内容
  18. python量化策略——大类资产配置模型(最小方差模型)
  19. 10个谈话技巧让你平步青云(转贴)
  20. JSON.stringify详解

热门文章

  1. 没有varselect这个函数_C++的虚函数,虚析构函数,纯虚函数
  2. 可选版本 安装软件_【Linux软件】在Deepin系统下安装LibreOffice 6.1.4版本的方法
  3. excel中如何对矩阵得对角线进行求和_如何利用图卷积网络进行图形深度学习(第2部分)...
  4. w ndows7文档加密取消,win7文件夹怎么加密?windows7文件加密方法
  5. window10维护不了华为服务器,win10怎么打开云服务器异常
  6. 结构体内部申请空间_墙体的重要承重结构以及作用方向分类
  7. Yapi Mock 远程代码执行漏洞
  8. wordpress phpmyadmin_西部数码使用指南:虚拟主机WordPress部署SSL注意事项
  9. linux 查看path文件,linux入门之环境变量与文件查找
  10. php如何加密图片,php实现图片加密解密,支持设置密码 (两年后版本!)