lllliuliu / sword

本工具主要针对监管部门出具的敏感词表,提供excel到sqlite转换、获取原始词库、内容检查、获取所有检查词、HTTP服务等功能。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

sword 敏感词工具

本工具主要针对监管部门出具的敏感词表,提供excel到sqlite转换、获取原始词库、内容检查、获取所有检查词、HTTP服务等功能。

环境和编译

使用Golang 1.12.1+开发,基于 sqlite 数据库,因为使用了 cgo,所以暂时不支持交叉编译,在不同的系统上本地编译即可使用。

# window 系统编译
go build -o sword.exe

# linux 系统编译
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o sword

可以直接下载编译好的工具,点击下载

使用说明

首先,工具包含一个全局参数 -c 或者 --config,在使用任何子命令的时候都可以使用这个参数指定配置文件,默认使用当前目录下的 .sword.toml,一般修改这个文件即可。

其次可以使用 --help 可以查看所有命令帮助。

下面分别介绍各项子命令的功能:

data - 生成数据库

监管部门的原始数据是一份特定格式的 excel 文件(,包含多种不同分类的敏感词,每一类敏感词都分为动词、名词、专属名词三类;所以首先,我们需要使用 data 命令生成一个规范化的数据库,本工具默认使用 sqlite 数据库。

配置文件中,和数据库相关的配置为:

[db]
# 驱动类型,目前只支持sqlite
Driver = "sqlite3" 
# 生成的数据库文件地址,默认在/data目录
DB = "data/20190403.db"

带上 -e 参数指定原始数据 excel 文件,使用以下命令即可生成数据库,

$sword data -e "data/xxx.xlsx"
数据库生成中...
数据库生成成功 ✔

目前/data目录下已经包含了原始的 excel 文件,和生成好的数据库文件,都是2019年4月3日的,如果有新的原始数据可以自行重新生成;如果没有可以直接略过此命令。

fetch - 获取所有需要检查的敏感词

原始数据中敏感词包含动词、名词、专属名词三类,那么实际使用过程中我们需要检查的词的集合应当是:

(动词集合X名词集合)∪专属名词集合

也就是动名词集合的笛卡尔积和专属名词集合的并集,这个词集合的所有词都需要检查,我们叫它所有敏感词集合

fetch 命令会直接获取这个所有敏感词集合,格式如下:

[
 {
  "class": "分类",
  "word": "词"
 },
 {
  "class": "分类",
  "word": "词"
 },
 ...
]

check - 检查内容是否包含敏感词

基于所有敏感词集合,本自命令检查文字内容是否包含敏感词,有两种使用方式对应两个参数:

  1. -t or --content:直接指定需要检查的文字内容
  2. -p or --path:指定需要检查的文档路径

如果返回 null 则说明没有敏感词,如果有敏感词则返回以下JSON格式内容:

[
 {
  "class": "分类",
  "word": "词"
 },
 {
  "class": "分类",
  "word": "词"
 }
 ...
]

serve - 启动 HTTP 网络服务

本子命令直接启动一个 HTTP 服务,提供敏感词获取、原始词数据获取、内容检查接口。接口文档请点击查询文档平台

相关配置内容如下:

[server]
# 是否打开 debug 模式
Debug=true
# 模式
Mode = "release"
# 服务端口
Port = 8777
# 相关参数
DefaultReadTimeOut = 10
DefaultWriteTimeOut = 10
DefaultMaxHeaderBytes = 20
# 日志路径
AccessLog = "logs/access.log"

目前命令执行后 HTTP 服务会直接启动并前台运行阻塞提供服务,可以使用 & or nohup 等后台运行;如果需要部署到正式服务器,请使用 systemd 或 shell 自行处理;并暂时不提供启停命令。后续会继续完善 HTTP 服务启停和部署等方面的功能。

About

本工具主要针对监管部门出具的敏感词表,提供excel到sqlite转换、获取原始词库、内容检查、获取所有检查词、HTTP服务等功能。

License:Apache License 2.0


Languages

Language:Go 100.0%