电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python 敏感詞過濾的實現示例

瀏覽:3日期:2022-08-06 18:46:37
目錄 一個簡單的實現使用BSF(寬度優先搜索)進行實現使用DFA(Deterministic Finite Automaton)進行實現 一個簡單的實現

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

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:寬度優先搜索方式

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,也就是確定有窮自動機。使用了嵌套的字典來實現。

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: returnlevel = self.keyword_chainsfor i in range(len(chars)): if chars[i] in level:level = level[chars[i]] else:if not isinstance(level, dict): breakfor 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}breakif 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 = 0while 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 - 1breakelse: ret.append(message[start]) break else:ret.append(message[start]) start += 1return ’’.join(ret)

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

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 步进电机_agv电机_伺服马达-伺服轮毂电机-和利时电机 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 动物解剖台-成蚊接触筒-标本工具箱-负压实验台-北京哲成科技有限公司 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 中式装修设计_室内中式装修_【云臻轩】中式设计机构 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 企小优-企业数字化转型服务商_网络推广_网络推广公司 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 中国在职研究生招生信息网| 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 托盘租赁_塑料托盘租赁_托盘出租_栈板出租_青岛托盘租赁-优胜必达 | 泰兴市热钻机械有限公司-热熔钻孔机-数控热熔钻-热熔钻孔攻牙一体机 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂| 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | 网站优化公司_SEO优化_北京关键词百度快速排名-智恒博网络 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | Win10系统下载_32位/64位系统/专业版/纯净版下载 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 水性漆|墙面漆|木器家具漆|水漆涂料_晨阳水漆官网 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | 领先的大模型技术与应用公司-中关村科金 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 广西正涛环保工程有限公司【官网】 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 亮点云建站-网站建设制作平台 | 蔡司三坐标-影像测量机-3D扫描仪-蔡司显微镜-扫描电镜-工业CT-ZEISS授权代理商三本工业测量 |