搭建一个根据语义相似度进行文本去重服务

背景

1、在做大模型训练的时候,我们需要进行数据集的处理,而很多情况下我们收集到的数据集会存在重复数据,针对去重,有两种,一种是完全重复,也就是数据集里面有一个A,还有存在了着另外一个A;还有一种重复是语义上面非常相似,比如“天龙八部”当前热度1800W,“天龙八部”当前热度1810W,其实这两个数据对训练/测试来说并没有什么特别的地方,所以作为这样的数据的处理,需要进行语义级别的去重。

解决方案

利用SentenceTransformer框架来搭建一个语义搜索服务,也就是将待去重的文本内容,利用sentence embedding,然后根据向量计算余弦值,得出句子的相似度,然后利用util的semantic_search方法进行搜索

代码

import torch
from sentence_transformers import SentenceTransformer, utildef 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(corpus)))query_embedding = embedder.encode(queries, convert_to_tensor=True)if not semantic_search_exist(query_embedding, corpus_embeddings, threshold, line):corpus.append(line)print('before corpus_embeddings size: {0}'.format(len(corpus_embeddings)))# 沿着指定维度拼接张量corpus_embeddings = torch.cat((query_embedding, corpus_embeddings), dim=0)print('end corpus_embeddings size: {0}'.format(len(corpus_embeddings)))return corpusdef semantic_search_exist(query_embedding, corpus_embeddings, threshold, query):hits = util.semantic_search(query_embedding, corpus_embeddings, top_k=1)hits = hits[0]hits = hits[0]score = hits['score']print('input: {0} and output: {1}'.format(query, hits['score']))if score > threshold:return Truereturn Falsecorpus = ["A man is riding a horse.","A woman is playing violin.","Two men pushed carts through the woods.","A man is riding a white horse on an enclosed ground.","A monkey is playing drums.","A cheetah is running behind its prey.",
]result = semanticTextualDeduplication_loop(corpus, 0.9)print("result:", result)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

花趣短视频源码淘宝客系统全开源版带直播带货带自营商城流量主小游戏功能介绍

1、首页仿抖音短视频 ,关注 ,我的 本地 直播 可发布短视频 可录制上传 2、商城页面 广告位、淘口令识别、微信登录、淘宝登录、淘宝返佣、拼多多返佣、京东返佣、唯品会返佣、热销榜、聚划算、天猫超市、9.9包邮、品牌特卖、新人攻略 、小米有品、优惠加…

不知摄像机网段IP地址?别担心,这里有解决之道

在数字化、智能化的今天,摄像机作为安全监控和日常记录的重要工具,其应用越来越广泛。然而,在实际使用中,我们可能会遇到一些问题,比如忘记了摄像机的网段IP地址,这往往会让我们感到头疼。那么,…

LearnOpenGL(十五)之深度测试

一、深度缓冲 深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色:视觉输出)一样,在每个片段中储存了信息,并且(通常)和颜色缓冲有着一样的宽度和高度。深度缓冲是由窗口系统自动创建的&a…

Linux操作系统基础题库

一. 单选题(共2题,40分) 1. (单选题)Linux操作系统自诞生至今,有数十万的程序开发人员参与到了它的开发与完善中,如今Linux已发展成为是一个成熟、稳定的操作系统。从以下选项中选出关于Linux特点描述完全正确的一项。…

C++的相关知识集

1、C概述 1 两大编程思想 c语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c继承了c语言高效,简洁,快速和可移植的传统。 2 起源 与c语言一样,c也是在贝尔实验室诞生的,Bjarne Stroustrup(本贾尼斯特劳斯特卢普)在2…

解决kali linux ssh连接失败

kali linux 默认ssh是禁止root登录的 为了通过 SSH 进入你的 Kali Linux 系统,你可以有两个不同的选择。第一个选择是创建一个新的非特权用户然后使用它的身份来登录。第二个选择,你可以以 root 用户访问 SSH 。为了实现这件事,需要在SSH 配…

企业任职资格机制的剖析

任职资格是指为了保证工作目标的实现,任职者必须具备的知识、技能、能力和个性等方面的要求。它常常以胜任职位所需的学历、专业、工作经验、工作技能、能力加以表达。近年来,员工能力的开发得到越来越多企业的重视,为有效提升员工能力&#…

AI早班车5.11

📢📢📢📣📣📣 哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝 一位上进心十足的【Java ToB端大厂…

(二)Spring教程——Spring框架特点

Spring框架是为了简化企业级应用开发而创建的,其强大之处在于对Java SE和Java EE开发进行全方位的简化,Spring还对常用的功能进行封装,可以极大地提高Java EE的开发效率。 Spring的应用极其广泛,无论是服务器开发还是任何Java应用…

虽然工作好久好久了,Spring 框架还是很有必要反复的去思考去理解

各位客观老爷们,此篇为移花接木,借花献佛 --> 访问链接地址↓ https://blog.csdn.net/weixin_44207403/article/details/106736102?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171539922216800184117607%2522%252C%2522scm%2…

粒子奇观:用Processing创造宇宙级的动态效果

前言: 👋 今天,我们将一起探索宇宙的奥秘,不是在星空下,而是在Processing的代码世界中。这是我们的第八篇文章,我们将深入粒子系统的神奇领域,学习如何创造出令人惊叹的动态效果。 粒子系统:构建动态世界的基石 🔨 粒子系统是计算机图形学中用于模拟复杂自然现象…

经纬恒润亮相AutoSec中国汽车网络安全及数据安全合规峰会

近日,由谈思实验室、谈思汽车、上海市车联网协会联合举办的AutoSec 8周年年会暨中国汽车网络安全及数据安全合规峰会在上海举办。本次大会主要聚焦数据合规、汽车网络与数据安全趋势与挑战、软件供应链安全、车辆网络安全、网络安全管理等话题。经纬恒润作为智能网联…

C语言 [力扣]详解环形链表和环形链表II

各位友友们,好久不见呀!又到了我们相遇的时候,每次相遇都是一种缘分。但我更加希望我的文章可以帮助到大家。下面就来具体看看今天所要讲的题目。 文章目录 1.环形链表2.环形链表II 1.环形链表 题目描述:https://leetcode.cn/problems/link…

部署Discuz论坛项目

DIscuz 是由 PHP 语言开发的一款开源社交论坛项目。运行在典型的LNMP/LAMP 环境中。 安装MySQL数据库5.7 主机名IP地址操作系统硬件配置discuz-db192.168.226.128CentOS 7-mini-20092 Core/4G Memory 修改主机名用来自己识别 hostnamectl set-hostname discuz-db #重连远程…

uniapp h5 配置代理服务器

"devServer": {"disableHostCheck": true,"proxy": {"/api": {// 需要被代理的后台地址"target": "http://自己的地址","changeOrigin": true,"secure": false,"pathRewrite": {&q…

管理者总是浪费时间盯细节,怎么办?

事情总的来说可以分为4个象限: 1、重要紧急 2、重要不紧急 3、不重要紧急 4、不重要不紧急 作为管理者,应该把6成的时间放在重要不紧急的事务上,把3成时间放在重要紧急的事务上,未来才有机会把重要紧急的事越来越少,否…

机器学习(2)

目录 2-1泛化能力 2-2过拟合和欠拟合 2-3三大问题 2-4评估方法 2-5调参和验证集 2-6性能度量 2-7比较检验 2-1泛化能力 如何进行模型评估与选择? 2-2过拟合和欠拟合 泛化误差:在“未来”样本上的误差 经验误差:在训练集上的误差&am…

10、Go Gin 连接Redis以及CookieSession

一、Redis 在Go语言中,使用Gin框架结合Redis数据库可以构建高性能的Web应用程序。Gin是一个轻量级的HTTP框架,提供了快速构建RESTful API的能力;而Redis则是一个高性能的键值存储系统,常用于缓存、消息队列、计数器等多种场景 1、…

每日OJ题_贪心算法四⑧_力扣767. 重构字符串

目录 力扣767. 重构字符串 解析代码 力扣767. 重构字符串 767. 重构字符串 难度 中等 给定一个字符串 s ,检查是否能重新排布其中的字母,使得两相邻的字符不同。 返回 s 的任意可能的重新排列。若不可行,返回空字符串 "" 。 …

Jetson Orin NX L4T35.4.1平台自启动时间优化调试记录1

1.前言 尝试优化Orin NX (p3767+p3768)与R35.4.1 BSP的启动时间; 从USB引导Orin设备; 最初,引导时间是55-57秒; 在内核端进行了一些优化之后,我们现在是38-40秒; 正试图在15秒内启动Orin设备,但是UEFI本身需要12秒才能完成 UEFI 优化: (1)https://github.com/NVI…