文档去重
文档去重是在针对预训练语料中非常重要的一个步骤,重复的文档在预训练过程中会降低模型的性能。文档去重的方法其实有很多,比如模糊去重,SimHash,MinHash,KSentence,KShingle等算法去重,通过计算计算最长子串去重也同样适用。
这里我们不过多赘述相关算法的定义与推理,详情可以观看该博客。
我们直接给出多种去重算法的对比结论:
算法 | 优缺点 |
---|---|
KShingle | Jaccard similarity不适合较长的文本,文档的特征集合比较大,会遇到时间和空间的双重瓶颈。 |
MinHash | MinHash利用hash加随机的方式减少文档特征集合的大小,有损但是近似Jaccard similarity的估计,同时与LSH算法结合能够大大提高效率。 |
SimHash | SimHash文本较长的情况,准确率较高,针对短文本的准确率不能保证。 |
KSentence | KSentence准确率较高,召回率低于MinHash与SimHash,算法实现简单,效率高同时也可以并行化,但是对抄袭后部分修改的文本识别度较低。 |
这里我们主推MinHash也是参考LLaMA与Falcon的操作,同时我们实现了SimHash与MinHash的组合去重,能够得到更好的效果,但是带来的牺牲可能就是时间的问题。