自然语言水印技术解析
1. 文本选择与基础概念
为了将转换形式与解析器输出相匹配,我们选择了一份政府文档作为样本语料库,具体是“核武器事故响应程序”手册( 链接 ),该文本长度为 5980 个单词,具有典型的句法结构分布,基于句法树的系统便是在这份文本上实现的。
在介绍自然语言水印方案之前,我们需要了解一些基础概念。设待加水印的文本由 n 个句子 (s_1, \cdots, s_n) 组成,每个句子 (s_i) 对应一个树 (T_i),在当前原型实现中,(T_i) 从句法上表示 (s_i),未来实现可能从语义上表示。对于每个树 (T_i),可按以下步骤得到一个二进制字符串 (B_i)(其中 (H) 是哈希函数,且忽略 (T_i) 节点的标签):
1. 按照树的前序遍历为 (T_i) 的节点编号(根节点编号为 1,根节点最左边的子节点编号为 2,依此类推)。
2. 将节点上的每个编号 (i) 替换为一个比特:若 (i + H(p)) 是模 (p) 的二次剩余,则为 1,否则为 0。这里的 (p) 是用于插入和读取水印的大素数密钥。
3. (B_i) 是按照树的后序遍历列出 (T_i) 节点上得到的比特(根节点的比特在 (B_i) 的末尾,最左边叶子节点的比特在 (B_i) 的开头,依此类推)。
需要注意的是,在后续原型中,可能会在步骤 2 的计算中考虑每个树节点的标签,当前原型未做此处理。另外,(B_i) 还有其他可能的定义方式,后续会分析上述定义的优势。
设 (\hat{B}_i = H(B
超级会员免费看
订阅专栏 解锁全文
65

被折叠的 条评论
为什么被折叠?



