四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

一個簡單的關(guān)鍵字過濾算法

早上看到老趙的《一個較完整的關(guān)鍵字過濾解決方案(上)》文章,講到怎樣在項目中嵌入過濾方案的問題,以及提到 xingdsumtec 兩位大師發(fā)表的系列互拼的文章,在此我也忍不住談?wù)勛约河龅降膯栴}以及一個的簡化版的算法。

因為過濾關(guān)鍵字機制到處可見,于是聰明的網(wǎng)友就會想到各種各樣的方法突破,例如:

1、中文會用繁體字的方法避開關(guān)鍵字掃描
2、在關(guān)鍵字中間插入無意思的特殊字符,例如 * & # @ 等,而且個數(shù)可變
3、使用諧音或拆字法變換關(guān)鍵字

在實現(xiàn)自己的算法時也有些問題:

4、隨著時間推移,關(guān)鍵字列表會越來越大,有些論壇常用的正則表達式N次掃描的方法顯得效率很低。
5、關(guān)鍵字有不同的嚴重級別,有些需要禁止,有些只需要替換,還有一些可能記錄一下即可。


針對這些問題,可采用的應(yīng)對方法:

1、加載關(guān)鍵字列表時,將所有的關(guān)鍵字轉(zhuǎn)換成繁體字一份,以掃描繁體版的關(guān)鍵字;
這個轉(zhuǎn)換工作只需一句就可以實現(xiàn)了:
s=Microsoft.VisualBasic.Strings.StrConv(word, Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0);

2、在掃描原文本時,如果遇到關(guān)鍵字的首個文字,忽略其后的特殊字符,直到下一個有意義的文字為止,當然這里需要在定義關(guān)鍵字列表時指定哪些才需要這樣掃描,并不是所有關(guān)鍵字都采用這種方式;
例如有關(guān)鍵字 “你好”經(jīng)常會被人輸入成“你x好”或者“你xxxxx好”,那么在關(guān)鍵字列表里就需要定義成“你*好”,在匹配關(guān)鍵字時,如果遇到星號就忽略原文本下一個為特殊的字符。

3、遇到諧音和拆字時,沒什么好辦法了,只好將這些諧音詞和拆分詞也加入到關(guān)鍵字列表。

4、不用正則表達式或者 String.IndexOf方法,可以將所有關(guān)鍵字的首字相同的組成一個一個小組,然后在將首字放到一個散列表(HashTable/Dictionary),在掃描原文本時先在散列表里掃描,如果碰到了首字再掃描同組的關(guān)鍵字,這樣簡單處理一下效率可以提高很多。

還有一個比用散列表更好的方法,將散列表改成一個大小為char.MaxValue的數(shù)組,然后將首個文字轉(zhuǎn)成int,即char->int,然后將關(guān)鍵詞集合放到相應(yīng)下標里。這樣在掃描原文本時,將被掃描的字符轉(zhuǎn)成int,然后試探數(shù)組相應(yīng)下標的元素是否不為NULL。這樣比用散列表會更快一些。

5、在定義關(guān)鍵字時,同時給一個“級別”屬性,例如使用 E,R,B分別表示只記錄、替換、禁止等情況。
于是關(guān)鍵字的列表如下所示:
你滾 E
他niang的 R
成*人*網(wǎng)*站 B

這里貼一下關(guān)鍵的部分代碼:

Code

NET技術(shù)一個簡單的關(guān)鍵字過濾算法,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 赖小子在线观看完整视频高清| 一场风花雪月的事电影| 石锐| 菲律宾电影毕业生代表| 机动战士高达seed destiny| 高级英语第四版课后答案| 红色一号电影| 欠条怎么写才具有法律效力| 我这一辈子电影| cctv16体育频道直播| 吸痰护理ppt课件| 乱世伦情 电影| 胎儿生长指标对照表| 香港之夜在线观看完整版| 任喜宝| 以下关于宏病毒说法正确的是| 阴阳界 电影| 四美人| 6套电影频道节目表| 欢乐的牧童钢琴谱| 亚洲春黄| 免+费+成人黄+色+在线观看| 好妻子全集免费完整版电视剧在线观看| 不得不爱吉他谱| 章莹| 芦苇编剧| 山上的小屋免费阅读小说全文| 被出租车司机带到野外c| 我心灿烂| 炊事班的故事演员表| 影片《边境》| 盛健| 中央八套电视剧| 电影《盲井》| 纵情四海| 台湾卫视| 里番动漫在线观看| 我和我的姐妹| 成全免费观看高清电影大侦探| 直播一级片| 廖凡和莫小棋主演的一半火焰一半海水|