敏感詞過濾

2022-07-24 18:42:17 字數 2530 閱讀 2617

(function () 

function buildtree(words) , // 子節點指標

val: null, // 當前節點的字元,null表示根節點

back: null, // 跳躍指標,也稱失敗指標

parent: null, // 父節點指標,

accept: false // 是否形成了乙個完整的詞彙,中間節點也可能為true

}// make trie tree

for (var i = 0; i < words.length; i++)

// fix backtrace pointer

fallbackall(root);

return root;

}function dedupandsort(words) );

// 濾掉空串

words = words.filter(function (word) );

var seen = {};

var out = ;

for (var i = 0; i < words.length; i++)

}return out.sort();

}function addword(root, word) ,

val: c,

accept: false,

back: root,

parent: current}}

current = current.next[c];

}current.accept = true;

}function fallbackall(root)

var parent = node.parent

var back = parent.back

while (back != null)

back = back.back}}

curexpands = nextexpands}}

function fallback(root, word)

back = back.back

}current = current.next[c]}}

function selectlongest(offsetwords)

for (var i = 0; i < offsetwords.length; i++)

}var offsets = object.keys(stands).map(function (key) ).sort(function (a, b) );

return offsets.map(function (off) );

}fastscanner.prototype.add = function add(word)

addword(this.root, word)

fallback(this.root, word)

}// 從子節點往上直到根結點,收集單詞

function collect(node)

return word.join('')

}// 定位子節點

fastscanner.prototype.locate = function locate(word)

}return current

}fastscanner.prototype.hits = function hits(content, options) ;

for (var i = 0; i < offwords.length; i++)

return seen

}fastscanner.prototype.search = function search(content, options)

for (var i = 0; i < content.length; i++)

back = back.back}}

if (next)

}back = back.back

} while (back != this.root);

current = next;

continue

}// 重置

current = this.root

}// 同乙個位置選最長的

if (options.longest)

return offwords

}if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') else if (typeof define === 'function' && define.amd) );

} else

})();

var scanner = new fastscanner(words)

var offwords = scanner.search(content)

console.log(offwords)

var hits = scanner.hits(content)

console.log(hits)

fastscan - 用於敏感詞過濾的 ahocorasick 演算法快速文字搜尋js實現

敏感詞過濾

最近需要實現對聊天裡的敏感詞過濾,要求比較簡單,只需要對字型檔中存在的關鍵字進行匹配,所以不需要非常複雜的實現,但是需要能夠快速地對乙個關鍵字集合進行匹配。搜了一下相關的資料,比較簡單的乙個演算法是使用aho corasick演算法,以下簡稱ac演算法。該演算法的基本思想中包含了kmp演算法,即利用...

敏感詞過濾

敏感詞過濾 防沉迷,基本所有上線系統都會用的基礎功能吧,網上挺多 的,也很多種方式,看的有點繞寫了個自己感覺比較乾淨清楚的,結構也比較簡單,記錄一下insert 和 審查 檢查 都是遞迴,效率還好,win release版本5700的樣本,length 1000的 str 大概0.2ms支援比如敏感...

敏感詞過濾

分享乙個敏感詞過濾方法 1 public class wordfiltercontroller basecontroller 225 result str result 2627 if s filters null 28 3132 bool check false 33 foreach string...