LLM实践--数据去重:Simhash&Minhash 原理分析&代码实现

数据处理是LLM pretrain的核心环节,去重又是数据处理的重要组成部分,这篇文章就分享一下数据去重的一般做法。我写东西的主要是想学会什么,而仅仅是了解什么,所以回答和文章大多都会附上代码,这篇也是一样。这个系列的文章估计废话会比较多。

数据去重大致可以分为三个粒度:文档粒度、段落粒度和句子粒度。

顾名思义,文档粒度就是以文档为单位,删除重复文档。这种做法最为普遍,主要是为了删除完全重复或几乎一致的文档,这种文档一般来自于相同文档的不同源发布转载、重复爬取等。段落粒度和文档粒度没有特别本质的差别,一般适用于一些特殊的源和场景,比如法律相关的文档大量引述法条这种,可能产生大面积引用的场景,做法和文档去重也不会差太多,不过要额外关注一下分段方法。句子粒度的去重则是主要为了去除一些边界词,比如所有知乎文章最后都有一句“真诚赞赏,手留余香”。句子级别的去重就为了删除这些前后缀、边栏之类的东西。句子级别的去重一般是相同句子匹配,设置一个阈值卡掉就可以了,不过要注意下计算成本,这里大规模句子去重无论是用统计查表,还是分桶聚合都是不小的计算量。这篇文章主要是分享minhash去重,句子和段落的去重就不再多说,主要来说说文档粒度去重。

文档这个叫法比较笼统,实际上就是指我们训练的一条数据。不管是一句话,一段话,还是几万字,只要他被收录在一条训练数据里(这里指没有经过拼接处理的数据),就算是一个文档。基础的文档去重是删除重复key,这个key一般是文档的来源,比如网址。之后就是想办法将一篇文档向量化,通过比较两个文档向量的相似度,判断两个文档是否为重复文档。文档向量化的方法有很多,比如使用基于transformer结构的模型比如GLM推出的BGE系列模型,再简单一点的比如fastte

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值