背景
1、在做大模型训练的时候,我们需要进行数据集的处理,而很多情况下我们收集到的数据集会存在重复数据,针对去重,有两种,一种是完全重复,也就是数据集里面有一个A,还有存在了着另外一个A;还有一种重复是语义上面非常相似,比如“天龙八部”当前热度1800W,“天龙八部”当前热度1810W,其实这两个数据对训练/测试来说并没有什么特别的地方,所以作为这样的数据的处理,需要进行语义级别的去重。
解决方案
利用SentenceTransformer框架来搭建一个语义搜索服务,也就是将待去重的文本内容,利用sentence embedding,然后根据向量计算余弦值,得出句子的相似度,然后利用util的semantic_search方法进行搜索
代码
import torch
from sentence_transformers import SentenceTransformer, util
def semanticTextualDeduplication_loop(lines, threshold):
embedder = SentenceTransformer("/data/dh/model/LaBSE")
corpus = []
corpus.append(lines[0])
corpus_embeddings = embedder.encode(corpus, convert_to_tensor=True)
lines.pop(0)
for line in lines:
queries = [line]
print('line: {0} and corpus.size: {1}'.format(line, len(corp