3-前缀树算法过滤敏感词 高级项目

一、前缀树算法:又称字典树,单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。

二、前缀树算法过滤敏感词图示
  首先我们假设敏感词是abc ,bf ,be。然后根据敏感词建立一棵前缀树如图所示。然后输入待过滤的字符串,此处假设是:c b a b c b f e a。利用前缀树算法过滤敏感词,我们需要三个指针:指针a指向前缀树的根节点,指针b指向待查找字符串的第一个节点,指针c作为游标标识当前判定的字符的位置。
  第一步:指针a指向根节点,指针b和指针c都指向字符c,敏感词中没有c开头的词汇,则指针b和指针c都向后移动一位指向字符b,字符c进入缓冲区。
  第二步:指针a指向根节点,指针b和指针c都指向字符b,敏感词中有b开头的词汇,则移动指针a指向第二层的b节点, 指针c继续向后移动一位指向字符a,指针a没有在b节点下找到值为a的子节点,说明ba不是敏感词。 指针c回退到指向b字符,然后指针b和指针c都向后移动一位指向字符a,指针a重新指向根节点。字符b进入缓冲区。
  第三步:指针a指向根节点,指针b和指针c都指向字符a,敏感词中有a开头的词汇, 则移动指针a指向第二层的a节点,指针c继续向后移动一位指向字符b,指针a发现a节点有值为b的子节点, 则继续向下移动指向第三层的b节点,指针c继续向后移动一位指向字符c,指针a发现节点b有值为c的子节点, 指针a继续向下移动指向c节点,发现c节点被标识为敏感词结束,则说明abc是一个完整的敏感词, 用"xxx"替代abc进入缓冲区。然后指针c退回到指向字符a,指针b和指针c向后移动三位指向字符b。 指针a重新指向根节点。
  第四步:指针a指向根节点,指针b和指针c指向字符b,敏感词中有b开头的词汇, 则移动指针a指向第二层的b节点,指针c向后移动一位指向字符f,指针a发现b节点有值为f的子节点, 则移动指针a指向f节点,发现f节点被标识为敏感词结束,说明bf是一个完整的敏感词,用"xx"替代bf进入缓冲区。 指针a重新指向根节点,指针b和指针c指向字符e。
  第五步:指针a指向根节点,指针b和指针c指向字符e, 敏感词中没有e开头的词汇,则说明字符e不是敏感词,指针b和指针c向后移动一位指向字符a,字符e进入缓冲区。
  第六步:指针a指向根节点,指针b和指针c指向字符a,敏感词中有a开头的词汇, 则移动指针a指向第二层的a节点,指针c无法向后移动, 指针a没有发现a节点被标识为敏感词结束。则说明字符a不是敏感词,字符a进入缓冲区。
  缓冲区中的字符串:cbxxxxxea即是过滤后的字符串。至此,前缀树算法过滤敏感词的具体步骤介绍完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值