lua 文件读写处理(操作敏感词库)

article/2025/9/19 12:37:49

       最近需要给游戏做一个敏感词新系统,我采用的方法是比较常用的DFA(确定有穷状态机)算

法,先不讲算法,而这种算法的实现需要一个相应的敏感词库。

      我拿到了词库后发现词库中大概有8000+个词,其中包括很多重复的,还有很多有着头包含关

系的词;

  什么是头包含词呢? 看如下例子:

  我们知道在DFA算法读取敏感词后如果存在这种情况:

  词1: "ab"  词2:  "abc" 

  在读取之后“ ab “这个敏感词就会不复存在而被abc覆盖掉, 而我们游戏需要对敏感词进行的

操作不是以其他字符(如 * *)代替句子中的敏感词而是如果判断出句子中含有敏感词,则无法发

出。所以,如果 “ab” 已经是敏感词了,“abc”就没有必要出现在敏感词库中了所以我需要将敏感

词库中的

  1. 相同的词只留下一个 

  2. 删除头包含其他敏感词的敏感词

  但是现有的敏感词库中有8000+ 个词我不可能一个个去找,所以我就想到了利用现有的lua io

文件库对原先的敏感词库进行处理这样可以节省太多的时间 代码如下

local function getNewWord()local wordsDataInput  = {}local wordsDataOutput = {}-- 读取文件-- 以只读方式打开文件local file_input = io.open("sensitive_words_input.txt", "r")-- 设置默认输入文件为 test.luaio.input(file_input)-- 逐行读取文件local string_l = file_input:read("*l") while(string_l ~= nil)dotable.insert(wordsDataInput, string_l)string_l = file_input:read("*l") endio.close(file_input)-- 写入文件-- 以只写方式打开文件local file_output = io.open("sensitive_words.txt", "a")-- 设置默认输出文件为io.output(file_output)-- 对数据进行处理-- 如果有头包含local function ifIsHeadInTable(str)for i = 1, #wordsDataInput dolocal startIndex, endIndex = string.find(wordsDataInput[i], str)if startIndex ~= nil and endIndex ~= nil then-- 如果find到头索引为1,尾索引不为字符串长度则可以认定为是头包含关系if startIndex == 1 and endIndex ~= string.len(wordsDataInput[i]) thenwordsDataInput[i] = "\n"endendend    end -- 是否已经有相同的local function isHasSameInTable(str)if not wordsDataOutput or not next(wordsDataOutput) then return false endfor key, value in ipairs(wordsDataOutput) doif value == str thenreturn trueendendreturn falseend-- 先剔除头包含for key, value in pairs(wordsDataInput) doifIsHeadInTable(value)end-- 再剔除相同的for key, value in ipairs(wordsDataInput) doif not isHasSameInTable(value) thentable.insert(wordsDataOutput, value)endendfor index, word in pairs(wordsDataOutput) doio.write(word.."\n")endio.close(file_output)
end

 

    

  操作后的文件少了整整4000个词,差不多35kb,这样加载词库需要的空间和时间都大大减少。但是要注意的是lua对文件的操作都是以UTF-8编码来的,如果是其他编码的文件就不能用了。

 

转载于:https://www.cnblogs.com/kpxy/p/11256560.html


http://chatgpt.dhexx.cn/article/aQ8XkkBo.shtml

相关文章

小怡同学被骂到清空社交平台?各大平台连敏感词库都没有的吗?

敏感词都没有的平台 最近某加拿大籍贯的 rapper 被曝私生活不检点,且极有可能涉及诱X未成-年少-女,成为一个 raper。 当然至于是否属实,其实一个人是否是海王,微信、QQ 聊天记录里面记得清清楚楚。再上升到刑事案件的时候&#x…

敏感关键词 词库_关键词优化难度分析怎么做?老鸟如何一键筛选优质关键词(悬赏1元)...

关键词优化是SEO工作的重点之一,之前聊了关键词挖掘,就有朋友问如何做关键词优化难度的分析,所以决定把这块详细写一写。 同时也说一下我自己的一个关键词优化性价比算法,目前这个算法已经帮我筛选出大量竞争低、流量高的关键词&a…

谷歌归期未定,但敏感词库已经建起来了

西雅图IT圈:seattleit 【今日作者】 PowerBall选号机 身体和灵魂总有一个要 走在买PowerBall的路上 谷歌回归 中国大陆的消息年年有,次次说的有鼻子有眼,而这回好像比哪一次都更靠谱。 从上周开始,谷歌回国的消息就又沸沸扬扬的传…

Python敏感词过滤DFA算法+免费附带敏感词库

DFA简介参考:https://blog.csdn.net/chenssy/article/details/26961957 此篇是上述JAVA敏感词过滤的python版本,完整版本,修改版本 首先我们看看最终处理效果 实例1: 输入字符串 处理结果 核心代码: SensitiveFilt…

Java实现自定义敏感词库过滤

最近接到一个需求,要添加一个敏感词管理模块,一如既往的CURD,敏感词我们添加到了自己的库里。然后进行一个自定义敏感词过滤,话不多说直接贴代码 1、工具类 这里只是最简单的得到敏感词进行转换,可以根据自己的业务需…

node实现敏感词过滤及敏感词库

核心代码 import * as fs from fs; import * as path from path; import * as readline from readline;export default class BadWords {private static _instance: BadWords;private data: Array<string> [];constructor () {const files fs.readdirSync(path.resol…

百度内容审查做敏感词库筛选

最近在做项目的敏感词库筛选更新。笔者最终的目标是通过百度API将现有的敏感词库筛选更新成。 一、准备工作 读者需在百度智能云登陆账号&#xff0c;然后开通百度内容审核功能&#xff0c;然后根据API Key和Secret Key可以获得调用接口所需的access_token。 二、代码调用API…

敏感词过滤之——自定义构建查询词库与快速查询实现

关于敏感词过滤的一点思考与实践 业务场景思考与研究逻辑分析代码实现(php)构建敏感词树分割字符串敏感词树长分支的递归实现读取敏感词库 敏感词树的查询查询实现调用 测试、分析与总结 业务场景 最近在公司维护的小程序上&#xff0c;遇到一个需要用到敏感词过滤功能的业务模…

计算机网络网络协议与网络结构

协议三要素 语法syntax&#xff1a;数据与控制信息的结构与格式&#xff0c;信号与电平 语义semantics&#xff1a;发出何种信息&#xff0c;做出何种响应&#xff0c;差错控制 时序timing&#xff1a;事件顺序 网络边缘 客户/服务器应用模型client/server&#xff1a;如we…

互联网网络协议 网络三种连接方式描述

学习笔记 目录 网络三种连接方式描述 子网掩码 网络三种连接方式描述 桥接模式: 使用外部统一网段,虚拟机可以和外部系统通讯,但是容易照成IP冲突 NAT模式: 网络地址转换模式,虚拟系统可以和外部系统通讯,不造成IP冲突,外部地址不能访问内部虚拟系统应为虚拟系统是通过代理…

计算机网络 协议三要素

1. 语法&#xff1a;数据与控制信息的结构或特点 2.语义&#xff1a;需要发出何种控制信息&#xff0c;完成何种动作以及做出何种响应 3.同步&#xff1a;事件实现顺序的详细说明 例题&#xff1a;

网络协议 -- 最全的网络协议图

转载自&#xff1a;http://www.52im.net 图片较大&#xff0c;建议单击放大或者下载后查看

计算机术语mls指什么意思,了解计算机网络协议的原则与要素两者

计算机网络协议是有关计算机网络通信的一整套规则&#xff0c;或者说是为了进行数据交换而制订的规则、约定和标准。网络协议由语法、语义和时序三大要素组成。现在就跟着小编共同来学习一下&#xff1a;了解计算机网络协议的原则与要素两者。 想必不需要小编多说&#xff0c;大…

网络协议介绍

一、什么是协议 协议&#xff0c;就是大家共同遵守的一些约定&#xff0c;协议是一种约定&#xff0c;是指通信双方共同指定的一个标准约定 举两个例子&#xff1a; 例子1&#xff1a;一个宿舍的人来自五湖四海&#xff0c;开学来到宿舍后&#xff0c;如果大家都说自己家乡的…

计算机网络协议层次

计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。计算机网络协议同我们的语言一样&#xff0c;多种多样。 为了给网络协议的设计提供一个结构&#xff0c;网络设计者以分层的方式组织协议。 一个协…

网络协议是什么 网络协议三要素是什么

本文向大家详细介绍网络协议是什么以及网络协议三要素是什么的基础知识&#xff0c;不懂的朋友可以通过本文了解学习 网络协议是什么 网络协议的定义&#xff1a;为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 一个网络协议至少包括三要素: 语法&#xff1a;用来…

常见网络协议

一、网络协议 二、TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09; TCP头格式 TCP协议中的三次握手和四次挥手 TCP报文抓取工具三、HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09; 请求报…

网络通信的三要素

一、要素一&#xff1a;IP地址 设备在网络中的地址&#xff0c;是唯一的标识。 IP地址&#xff1a; IP&#xff08;Internet Protocol&#xff09;&#xff1a;全称”互联网协议地址”&#xff0c;是分配给上网设备的唯一标志。 常见的IP分类为&#xff1a;IPv4和IPv6 I…

计算机中的网络协议包括哪些,网络协议三要素有什么关系

网络协议三要素有什么关系?为进行计算机网络中的数据交换而建立的规则、标准或约定的集合&#xff0c;协议总是指某一层的协议。准确地说&#xff0c;它是对同等层实体之间的通信制定的有关通信规则或约定的结合。佰佰安全网看看吧。 一个网络协议至少包括三要素: 语法&#x…

网络协议概述(一)

目录 一、协议三要素 二、常用的网络协议 2.1 由url确定目标ip地址&#xff08;DNS协议&#xff09; 2.2 打包需要发送的信息&#xff08;http/https协议&#xff09; 2.3 有应用层到传输层&#xff08;TCP协议保证应用层包一定送达&#xff09; 2.4 有传输层到达网络层&…