国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python 敏感詞過濾的實現示例

Python 敏感詞過濾的實現示例

2021-12-27 00:38waws520 Python

本文主要介紹了Python 敏感詞過濾的實現示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

 一個簡單的實現

主要是通過循環和replace的方式進行敏感詞的替換

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class NaiveFilter():
 
    '''Filter Messages from keywords
 
    very simple filter implementation
 
    >>> f = NaiveFilter()
    >>> f.parse("filepath")
    >>> f.filter("hello sexy baby")
    hello **** baby
    '''
 
    def __init__(self):
        self.keywords = set([])
 
    def parse(self, path):
        for keyword in open(path):
            self.keywords.add(keyword.strip().decode('utf-8').lower())
 
    def filter(self, message, repl="*"):
        message = str(message).lower()
        for kw in self.keywords:
            message = message.replace(kw, repl)
        return message

使用BSF(寬度優先搜索)進行實現

對于搜索查找進行了優化,對于英語單詞,直接進行了按詞索引字典查找。對于其他語言模式,我們采用逐字符查找匹配的一種模式。

BFS:寬度優先搜索方式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
class BSFilter:
 
    '''Filter Messages from keywords
 
    Use Back Sorted Mapping to reduce replacement times
 
    >>> f = BSFilter()
    >>> f.add("sexy")
    >>> f.filter("hello sexy baby")
    hello **** baby
    '''
 
    def __init__(self):
        self.keywords = []
        self.kwsets = set([])
        self.bsdict = defaultdict(set)
        self.pat_en = re.compile(r'^[0-9a-zA-Z]+$'# english phrase or not
 
    def add(self, keyword):
        if not isinstance(keyword, str):
            keyword = keyword.decode('utf-8')
        keyword = keyword.lower()
        if keyword not in self.kwsets:
            self.keywords.append(keyword)
            self.kwsets.add(keyword)
            index = len(self.keywords) - 1
            for word in keyword.split():
                if self.pat_en.search(word):
                    self.bsdict[word].add(index)
                else:
                    for char in word:
                        self.bsdict[char].add(index)
 
    def parse(self, path):
        with open(path, "r") as f:
            for keyword in f:
                self.add(keyword.strip())
 
    def filter(self, message, repl="*"):
        if not isinstance(message, str):
            message = message.decode('utf-8')
        message = message.lower()
        for word in message.split():
            if self.pat_en.search(word):
                for index in self.bsdict[word]:
                    message = message.replace(self.keywords[index], repl)
            else:
                for char in word:
                    for index in self.bsdict[char]:
                        message = message.replace(self.keywords[index], repl)
        return message

使用DFA(Deterministic Finite Automaton)進行實現

DFA即Deterministic Finite Automaton,也就是確定有窮自動機。
使用了嵌套的字典來實現。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
class DFAFilter():
 
    '''Filter Messages from keywords
 
    Use DFA to keep algorithm perform constantly
 
    >>> f = DFAFilter()
    >>> f.add("sexy")
    >>> f.filter("hello sexy baby")
    hello **** baby
    '''
 
    def __init__(self):
        self.keyword_chains = {}
        self.delimit = '\x00'
 
    def add(self, keyword):
        if not isinstance(keyword, str):
            keyword = keyword.decode('utf-8')
        keyword = keyword.lower()
        chars = keyword.strip()
        if not chars:
            return
        level = self.keyword_chains
        for i in range(len(chars)):
            if chars[i] in level:
                level = level[chars[i]]
            else:
                if not isinstance(level, dict):
                    break
                for j in range(i, len(chars)):
                    level[chars[j]] = {}
                    last_level, last_char = level, chars[j]
                    level = level[chars[j]]
                last_level[last_char] = {self.delimit: 0}
                break
        if i == len(chars) - 1:
            level[self.delimit] = 0
 
    def parse(self, path):
        with open(path,encoding='UTF-8') as f:
            for keyword in f:
                self.add(keyword.strip())
 
    def filter(self, message, repl="*"):
        if not isinstance(message, str):
            message = message.decode('utf-8')
        message = message.lower()
        ret = []
        start = 0
        while start < len(message):
            level = self.keyword_chains
            step_ins = 0
            for char in message[start:]:
                if char in level:
                    step_ins += 1
                    if self.delimit not in level[char]:
                        level = level[char]
                    else:
                        ret.append(repl * step_ins)
                        start += step_ins - 1
                        break
                else:
                    ret.append(message[start])
                    break
            else:
                ret.append(message[start])
            start += 1
 
        return ''.join(ret)

到此這篇關于Python 敏感詞過濾的實現示例的文章就介紹到這了,更多相關Python 敏感詞過濾內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/7002068513070268424

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩看片 | 国产精品无码久久久久 | 日韩欧美专区 | 久久久中文字幕 | 人人射在线观看 | 欧美专区在线观看 | 欧美激情视频一区二区三区在线播放 | 黄色片视频免费 | 国产精品99久久久久久久vr | 高清一区二区三区 | 成人在线免费 | 欧美日韩专区 | 夜夜骑日日操 | 人人射人人舔 | 99久久婷婷国产综合精品电影 | 色爽| 久久久久久久久久久久国产 | 一级黄色片子看看 | 国产精品久久久久久亚洲调教 | 黄网免费看 | 久久国产精品久久久久久电车 | 欧美国产精品一区 | 久久精品2019中文字幕 | 国产成人精品久久二区二区 | 不用播放器的av | 中日韩欧美风情视频 | 人人九九精| 性欧美另类| 午夜激情视频在线观看 | 国产精品久久国产精品 | 欧美性猛交一区二区三区精品 | 国产精品片aa在线观看 | 欧美国产日韩在线 | 亚洲一区二区在线视频 | 亚洲一区二区三区视频 | 男人的天堂久久精品 | 久久精品2 | 久久久在线 | 蜜桃视频成人在线观看 | 国内精品久久久久久 | 国产精品第一国产精品 |