Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ng-check.php

汎用NGワード判定ツール。ハッシュ化されたNG辞書(SHA-256ハッシュの改行区切りリストをgzip圧縮したもの)を用いて、 任意の長さのテキスト中に含まれるNGワードを部分一致で検出する。辞書側は平文の単語を一切保持しないため、 辞書ファイル自体からNGワードを読み取ることはできない。

入力は文字列(CLI引数)・ファイル(任意の文字コード)の両方に対応。ファイル読み込み時は to-utf8.php と同一のバイトパターンヒューリスティックで CP932 / EUC-JP / UTF-8 を自動判定し、UTF-8へ正規化してから判定する(mbstring不在の環境でも動作)。

使い方

php ng-check.php "<text>" [options]
php ng-check.php --file=<path> [options]

オプション

オプション 説明
--file=PATH 入力をファイルから読み込む(テキスト引数と排他、両方指定時はこちらを優先)
--hashes=PATH NG辞書(gzip圧縮ハッシュリスト)のパス(省略時: ./hashes-txt.gz
--from=AUTO|CP932|EUCJP ファイル読み込み時の変換元エンコーディング(省略時AUTO)
--min-len=N 部分一致探索の最小文字数(省略時2)
--max-len=N 部分一致探索の最大文字数(省略時16)
--mask-char=CHAR 伏字に使う文字(省略時「〇」)
--out=PATH 置換後テキストの出力先ファイル(省略時は標準出力に表示のみ)
-h, --help ヘルプを表示

終了コード: 0=NG該当なし, 3=NG該当あり, 1=引数/入力エラー

php ng-check.php "チェックしたい文章" --hashes=./hashes-txt.gz
php ng-check.php --file=input.txt --from=CP932 --out=masked.txt

判定方式

テキストを文字単位に分割し、--min-len--max-len文字の全ての部分文字列をSHA-256化して辞書ハッシュ集合と照合する (スライディングウィンドウ方式)。左から右へ貪欲に走査し、一致した位置では最長一致を優先して1回だけマスクし、 次はその直後から再開する(重複検出・多重置換を避けるため)。

NG辞書(hashes-txt.gz)について

このリポジトリにはNG辞書自体は含まれない。利用者が用意したSHA-256ハッシュの改行区切りリストをgzip圧縮したファイルを --hashesで指定して使用する。

ライセンス

MIT License(LICENSE参照)

ドキュメント

開発経緯は doc/changelog.md を参照。

About

汎用NGワード判定ツール。ハッシュ化辞書(SHA-256)による部分一致検出、CP932/EUC-JP/UTF-8の文字コード自動判定に対応。/ Generic NG-word (profanity) checker using a hashed dictionary with substring matching and automatic CP932/EUC-JP/UTF-8 encoding detection.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages