鉴于当前各大 LLM 逐步普及以零宽字符为代表的文本隐写水印手段,为此我特地写了一个小工具,专门用于扫描文本中的隐蔽/不可见 Unicode 码点,便于快速定位可能存在的 「文本水印」。
目前可检测的特殊 Unicode 码点与类别如下 (包括但不限于):
- ZWSP: 零宽空格
- ZWNJ: 零宽非连字
- ZWJ: 零宽连字
- BOM: 字节序标记
- WJ: 单词连接符
- MVS: 蒙古元音分隔符
- SHY: 软连字符
- 特殊标点混用,例如:
连字符混用: - (U+002D) vs. − (U+2212) vs. – (U+2013)
撇号混用: ' (U+0027) vs. ’ (U+2019)
句点混用: . (U+002E) vs. . (U+0323)
除字符扫描外,还支持基于 cl100k_base (GPT-4) & o200k_base (GPT-4o) BPE Tokenization 进行分词,便于辅助判定
快速体验: https://links.xmsl.dev/analyzer 欢迎反馈
示例文本 (内含隐写水印):
ZWSP: LoremIpsumDolor
ZWNJ: HelloWorld
ZWJ: FooBar
BOM: StartOfText
WJ: AlphaBeta
MVS: FirstSecond
* 更新: LLM 文本水印实现原理和解释请参考 https://t.me/hatschannel/1127
目前可检测的特殊 Unicode 码点与类别如下 (包括但不限于):
- ZWSP: 零宽空格
- ZWNJ: 零宽非连字
- ZWJ: 零宽连字
- BOM: 字节序标记
- WJ: 单词连接符
- MVS: 蒙古元音分隔符
- SHY: 软连字符
- 特殊标点混用,例如:
连字符混用: - (U+002D) vs. − (U+2212) vs. – (U+2013)
撇号混用: ' (U+0027) vs. ’ (U+2019)
句点混用: . (U+002E) vs. . (U+0323)
除字符扫描外,还支持基于 cl100k_base (GPT-4) & o200k_base (GPT-4o) BPE Tokenization 进行分词,便于辅助判定
快速体验: https://links.xmsl.dev/analyzer 欢迎反馈
示例文本 (内含隐写水印):
ZWSP: LoremIpsumDolor
ZWNJ: HelloWorld
ZWJ: FooBar
BOM: StartOfText
WJ: AlphaBeta
MVS: FirstSecond
* 更新: LLM 文本水印实现原理和解释请参考 https://t.me/hatschannel/1127