作为一个心理语言学和NLP研究者,要破防太简单了。
错别字,谐音字,变体字我相信普通的NLP模型都能搞定,那么我们直接做语义替换呢?
首先针对关键词生成一个语义近似的词表(比如用word embedding similarity),专门放同类词,例如“政府”的话,语义相近的词大概是
["官府","衙门", "内阁", "议会", "朝廷" ,"两院"]
过滤掉其中的关键词,例如“朝廷”,剩下词表是
["官府","衙门", "内阁", "议会", "两院"]
然后从中随机抽取一个词,作为“政府”的映射,例如“内阁”。
重复以上过程直到所有敏感词都被替换掉,最后的效果大概是这样的:
输入:
中国政府长期致力于推广民主合作的外交思路。
输出:
越南内阁长期致力于推广宽容合作的外交思路。
只要在一篇文章内确保相同的映射规则(这非常重要!),在保持可读性的情况下依然可以做到难以被分类器识别出来,并且所有的语义和句法均合法。
然后下面再说一下为什么几乎不可能构造检测分类器,因为
1:句法结构和原句完全相同
2:语义联系完全相同,词内语义相似性高度一致
3:句子层面的embedding和原句会非常像
4:每篇的映射均不相同,即使一些映射的关键词偶然成为爆款被特别对待,依然可以找到下一个语义相似的词作替换。直到同一个词类下所有中文词语全部用尽。
5:也是最重要的,对于单一句子来说,甚至人类都很难判断说的是什么,但是当整个篇章的各种句子重复出现了这种映射(例如“中国”->“越南”)和更多的语义信息后,读者才可以学习这种映射并自动替换对应的正确词,而构建这样的篇章级别样本作为训练集几乎是不可能完成的任务,这不是目前的LM模型可以完成的事情。
编辑于 2022-07-15 07:09・IP 属地英国