摘要:序本文簡單介紹下敏感詞或者臟詞檢測算法。經(jīng)典算法經(jīng)典的算法由三部分構(gòu)成,表,表和表,共包含四種具體的算法,分別是計(jì)算三張查找表的算法以及算法本身。表是由模式集合中的所有模式構(gòu)成的狀態(tài)轉(zhuǎn)移自動(dòng)機(jī)。
序
本文簡單介紹下敏感詞或者臟詞檢測算法。
經(jīng)典AC算法經(jīng)典的AC算法由三部分構(gòu)成,goto表,fail表和output表,共包含四種具體的算法,分別是計(jì)算三張查找表的算法以及AC算法本身。
goto表是由模式集合P中的所有模式構(gòu)成的狀態(tài)轉(zhuǎn)移自動(dòng)機(jī)。(goto表就是一棵trie樹)
failure表作用是在goto表中匹配失敗后狀態(tài)跳轉(zhuǎn)的依據(jù),這點(diǎn)與KMP中next表的作用相似。(這個(gè)表是trie樹沒有的,加了這個(gè)表,AC自動(dòng)機(jī)就看起來不像一棵樹,而像一個(gè)圖)
output表示輸出,又稱:emits,即代表到達(dá)某個(gè)狀態(tài)后某個(gè)模式串匹配成功
普通DFA算法AC自動(dòng)機(jī)本質(zhì)上來說是一種基于trie樹的kmp算法,AC算法需要三個(gè)函數(shù)來進(jìn)行字符串匹配,而且這三個(gè)函數(shù)的求解都和一個(gè)確定的DFA(有限狀態(tài)自動(dòng)機(jī))有關(guān)。
使用hashmap確定性有窮自動(dòng)機(jī),用于正則表達(dá)式的匹配,最長左子式匹配
public void createKeyWord(String keyWord) { Map nowMap = sensitiveWordMap; for (Character c : keyWord.toCharArray()) { Object obj = nowMap.get(c); if (obj == null) { Map使用自定義數(shù)據(jù)結(jié)構(gòu)childMap = new HashMap<>(); childMap.put("isEnd", "false"); nowMap.put(c, childMap); nowMap = childMap; } else { nowMap = (Map) obj; } } nowMap.put("isEnd", "true"); }
public class WordNode { private int value; // 節(jié)點(diǎn)名稱 private ListdocsubNodes; // 子節(jié)點(diǎn) private boolean isLast;// 默認(rèn)false public WordNode(int value) { this.value = value; } public WordNode(int value, boolean isLast) { this.value = value; this.isLast = isLast; } //...... }
字符串多模式匹配:AC算法
Java實(shí)現(xiàn)DFA算法對(duì)敏感詞、廣告詞過濾功能
敏感詞過濾的算法原理之 Aho-Corasick 算法
敏感詞過濾的算法原理之DFA算法
AC自動(dòng)機(jī)和Fail樹
基于雙數(shù)組的AC匹配算法學(xué)習(xí)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/70247.html
摘要:人工智能技術(shù)的初步應(yīng)用隨著網(wǎng)絡(luò)強(qiáng)國戰(zhàn)略思想加強(qiáng)網(wǎng)絡(luò)內(nèi)容建設(shè)等指導(dǎo)思想的推出和強(qiáng)化,內(nèi)容安全已經(jīng)成為互聯(lián)網(wǎng)企業(yè)生存和發(fā)展的生命線。 歡迎訪問網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營經(jīng)驗(yàn)。 10月16日,2018年 AIIA人工智能開發(fā)者大會(huì)在蘇州舉辦。會(huì)議邀請了國內(nèi)外人工智能產(chǎn)業(yè)知名人物、國家政府主管部門、行業(yè)內(nèi)頂尖企業(yè)、知名學(xué)者代表、開源社區(qū)優(yōu)秀貢獻(xiàn)團(tuán)隊(duì)及個(gè)人,共同交流了技術(shù)現(xiàn)狀趨勢、生態(tài)...
摘要:基于深度學(xué)習(xí)的語義匹配語義匹配技術(shù),在信息檢索搜索引擎中有著重要的地位,在結(jié)果召回精準(zhǔn)排序等環(huán)節(jié)發(fā)揮著重要作用。在美團(tuán)點(diǎn)評(píng)業(yè)務(wù)中主要起著兩方面作用。 寫在前面美團(tuán)點(diǎn)評(píng)這兩年在深度學(xué)習(xí)方面進(jìn)行了一些探索,其中在自然語言處理領(lǐng)域,我們將深度學(xué)習(xí)技術(shù)應(yīng)用于文本分析、語義匹配、搜索引擎的排序模型等;在計(jì)算機(jī)視覺領(lǐng)域,我們將其應(yīng)用于文字識(shí)別、目標(biāo)檢測、圖像分類、圖像質(zhì)量排序等。下面我們就以語義匹配、圖...
摘要:在樹中,每個(gè)節(jié)點(diǎn)表示一個(gè)狀態(tài),每條邊表示一個(gè)字符,從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)經(jīng)過的邊即表示一個(gè)詞條。查找一個(gè)詞條最多耗費(fèi)的時(shí)間只受詞條長度影響,因此的查找性能是很高的,跟哈希算法的性能相當(dāng)。 Last-Modified: 2019年5月10日15:25:35 參考文章 c++ 使用map實(shí)現(xiàn)Trie樹 關(guān)鍵詞過濾擴(kuò)展,用于檢查一段文本中是否出現(xiàn)敏感詞,基于Double-Array Trie...
摘要:異步事件處理本項(xiàng)目涉及到多種異步事件的處理。即是的粉絲,是的關(guān)注對(duì)象。模式定義優(yōu)缺點(diǎn)推事件觸發(fā)后廣播給所有粉絲。具體來說,推模式就是事件觸發(fā)后產(chǎn)生,觸發(fā)事件的用戶下所有粉絲的實(shí)現(xiàn)中都存入該的。 項(xiàng)目源代碼已托管在 Github,歡迎 Star、Fork。 Q & A 問答社區(qū) QA 是一個(gè)基于 B/S 架構(gòu)而設(shè)計(jì)開發(fā)的社區(qū)網(wǎng)站。 showImg(https://segmentfault...
閱讀 695·2021-11-24 09:39
閱讀 3534·2019-08-30 15:53
閱讀 2578·2019-08-30 15:44
閱讀 3299·2019-08-30 12:54
閱讀 2268·2019-08-29 12:23
閱讀 3356·2019-08-26 14:05
閱讀 2164·2019-08-26 13:36
閱讀 3498·2019-08-26 13:33