首页 > 编程知识 正文

python英文单词个数统计,python knn算法代码

时间:2023-05-03 20:21:28 阅读:20107 作者:1952

一、DFA算法介绍

在实现字符滤波的算法中,DFA是唯一比较好的实现算法。

DFA全部称为“Deterministic Finite Automaton”,确定有贫困机器人。 特征在于有限状态的集合和从一个状态通向另一个状态的若干边,每一边都被标记着符号,其中一个状态是初始状态,一个状态是终结状态。 但是,与不确定的有限自动机不同,DFA中从相同状态出发的两个边缘标记不会具有相同的符号。

简而言之,事件和当前状态提供了以下状态: 也就是说,事件状态=下一个状态。 理解为系统中有多个节点,通过传递输入的事件,决定向另一个节点发送哪个根,节点很有限。

二、DEA算法实践敏感单词过滤

1 .敏感词典结构

用王八蛋和王八羔子这样敏感的词记述,首先构筑敏感的词典。 该词典名叫敏感地图,这两个词的二叉树结构如下。

hash表中的结构如下。

{

'王' :{

' isEnd':'0',

'八' :{

“小”:{

“子”:{

' isEnd':'1'

(,

' isEnd':'0'

(,

' isEnd':'0',

“鸡蛋”:{

' isEnd':'1'

}

}

}

}

如何用代码实现这个数据结构?

//*

*读取敏感词典,将敏感词放入HashSet,建立DFA算法模型

*

* @param keyWordSet敏感词典

*/

publicmapaddsensitivewordtohashmap (setkeywordset )。

//初始化敏感的字容器,减少扩展操作

map map=new hashmap (math.max ((int ) ) keyWordSet.size )/.75f ) 1,16 );

重复keyWordSet

for (stringakeywordset : keywords et ) {

映射新映射=映射;

for(intI=0; i aKeyWordSet.length (; I ) {

转换为char类型

char keychar=akeyword set.charat (I;

//获取

objectwordmap=now map.get (keychar );

//如果该key存在,则直接分配值

世界地图!=空) {

新地图=(地图) wordMap;

} else { //不存在时,构建map,同时将isEnd设置为0

mapnewwormap=newHashmap(3;

newwormap.put('isend ','0' );

nowmap.put(keychar,newWorMap );

nowMap=newWorMap;

}

//判断最后

if(I==akeywordset.length ()- 1 ) {

nowmap.put('isend ','1' );

}

}

}

返回图;

}

2 .敏感词过滤

将上面的例子中制作的敏感映射表示为敏感词典,假设在此输入的关键字是“王八不好”,则流程图如下。

如何用代码实现这个流程图逻辑?

//*

*检查字符串是否包含敏感字符

*

* @param txt输入的字符串

* @如果* @return存在,则返回机密字符串; 如果不存在,则返回空字符串

*/

publicstaticstringfindsensitiveword {

sensitivewordinitsensitivewordinit=springcontextholder.get bean (sensitivewordinit.class );

mapsensitivewordmap=sensitivewordinit.getsensitivewordmap (;

stringbuildersensitiveword=new stringbuilder (;

//敏感词结束标志比特表示匹配了最后一个比特

布尔标志=假;

for(intI=0; i txt.length (; I ) {

charword=txt.Charat(I;

//获取指定密钥

sensitivewordmap=(map ) sensitivewordmap.get ) word;

//不存在,直接回去没有敏感的语言

敏感视点映射==null (if ) {

布雷克;

}

//存在,保存其敏感词语,判断是否是最后

敏感word.append (word;

//如果是最后的匹配规则,则结束循环

if(1).equals (敏感工具wordmap.get ) (isend ) ) )

标志=true;

布雷克;

}

}

//表示完全匹配了敏感的词语

if(flag==true ) {

return sensitiveWord.toString (;

}

返回' ';

}

三、优化思路

“文艺的兔蛋”这样的词,中间填着无意义的文字混淆在一起。 我们在搜索敏感词语时,也应该同样进行无意义的词语过滤,循环到这样无意义的文字时跳过,避免干扰。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。