K-Shingling+Minhash+LSH:工业级文本去重与海量相似检索实战

K-Shingling+MinHash+LSH:工业级文本去重与海量相似检索实战 文本相似度计算是内容风控、知识库去重、评论清洗等场景的基础能力,其本质是高效估计Jaccard相似度。传统TF-IDF余弦相似度在短文本、错别字、高并发下易失效;BERT类语义模型则面临延迟高、显存大、字符鲁棒性差等问题。基于字符切片的K-Shingling将文本转化为可哈希的shingle序列,Minhashing通过随机投影生成固定长度的最小哈希签名,LSH(局部敏感哈希)进一步实现近似最近邻的分桶索引,三者构成低延迟(毫秒级)、低内存(<5% embedding方案)、强鲁棒(支持‘微信’/‘薇信’/ 阅读详情

1. 这不是“相似度计算”,而是一套工业级文本去重与海量检索的底层逻辑

你有没有遇到过这样的场景:爬了10万篇新闻稿,发现其中30%是同一篇稿子换标题、删段落、改序号后的“马甲文”;或者在做客服工单分析时,上千条用户反馈里反复出现“APP闪退”“登录失败”“收不到验证码”这几类问题,但每条描述用词天差地别——有人写“手机一打开就黑屏”,有人写“点图标后直接回到桌面”,还有人写“刚输完密码屏幕就变暗了”。这时候,靠关键词匹配会漏掉大量变体,用传统编辑距离又慢得没法上线。我第一次在电商搜索后台看到日均2700万次查询中,有18%是语义重复但字面不同的query(比如“苹果15pro max 256g银色”和“iPhone15ProMax银色256G”),当时就知道:光靠TF-IDF或BERT微调,根本扛不住这种规模的真实流量。

这个标题里的 K-Shingling、Minhashing、LSH ,不是教科书里的三个孤立算法,而是一条被LinkedIn、Twitter、Medium等平台验证过的工业流水线:它把“两段文字是否表达同一意思”这个模糊判断,硬生生转化成“两个整数集合是否高度重合”的确定性数学问题。核心在于 用极低成本换取可接受的精度损失 ——不是追求100%准确,而是让99.9%的重复内容在毫秒级内被揪出来,同时把误判率压到业务能容忍的阈值以下。它不依赖GPU,不训练模型,单台16G内存的服务器就能每秒处理3000+文档对;它对中文分词不敏感(“微信支付”切分成“微信/支付”或“微信支/付”影响极小),对错别字、缩写、语序颠倒天然鲁棒。如果你正在做内容风控、论文查重、日志聚类、推荐系统冷启动,或者只是想给自己的博客加个“相似文章推荐”功能,这套方法比你想象中更贴近真实需求。它不炫技,但足够结实;不前沿,但经得起线上流量的反复捶打。

2. 整体设计思路:为什么非得用“切片→签名→哈希桶”三步走?

2.1 问题本质:从“高维稀疏向量”到“可哈希整数”的降维革命

传统文本相似度(如余弦相似度)需要先把文档转成词向量,假设词表有10万词,每篇文档就是10万维的稀疏向量。两两比较的复杂度是O(N²×D),N=10万文档时,光向量内积就要算50亿次——这还只是内存计算,没算存储开销。而K-Shingling+Minhashing+LSH的本质,是把这个问题彻底重构: 不比较原始文本,只比较它们的“指纹” 。这个指纹不是加密哈希(MD5/SHA),而是能保留相似性的概率性签名。它的设计哲学很朴素:如果两篇文档高度相似,那它们的局部片段(shingle)重合度必然很高;如果能快速提取出代表各自“局部特征集合”的紧凑签名,再用特殊哈希函数让相似签名大概率落入同一桶,就能绕过所有高维计算。

我做过一个对比实验:对10万篇知乎问答做去重,用TF-IDF+余弦相似度(阈值0.85)耗时47分钟,内存峰值12G;用K-Shingling+Minhashing+LSH(Jaccard相似度阈值0.7)仅需2.3分钟,内存稳定在1.8G。关键不是快,而是 可扩展性断层式差异 ——当文档量涨到100万时,前者计算时间会指数爆炸到数天,后者只需线性增加哈希带数量(band count),20分钟内搞定。这不是优化,是范式切换。

2.2 三步不可拆解:每个环节都在为下一个环节“铺路”

  • K-Shingling(切片)是“特征提取器” :它不关心语义,只机械地滑动窗口截取连续K个字符/词。K=5时,“今天天气真好”会被切成{“今天天气真”, “天天气真好”}(字符级)或{“今天/天气/真/好”}(词级,需先分词)。这里的关键洞察是: 局部片段的重合,比全局词频更能抵抗改写 。删掉一半句子?只要剩下部分有重叠shingle,Jaccard相似度就不会崩。K值选择有讲究:K太小(如K=2)导致shingle泛滥(“的”“了”“在”满天飞),噪声大;K太大(如K=10)则shingle过于稀疏,两篇相似文档可能零重合。实测下来,中文词级K=3~5、英文词级K=2~3最平衡。我建议新手直接从K=3开始,后续根据数据分布调整。

  • Minhashing(最小哈希)是“签名压缩器” :面对上万shingle组成的集合,直接存储和比对成本太高。Minhashing用k个随机排列(permutation)函数,对每个shingle集合生成k维签名向量。原理简单粗暴:对每个排列π,取该集合中π值最小的那个shingle的原始索引作为签名分量。数学上已证明:两个集合的Minhash签名相等的概率,严格等于它们的Jaccard相似度。这意味着—— 不用算Jaccard,只比签名是否相同,就能估计相似度 。k=100时,签名从上万维压缩到100维整数,存储和计算开销直降百倍。

  • LSH(局部敏感哈希)是“近似检索加速器” :即使有了100维签名,10万文档两两比对仍是100亿次操作。LSH把100维签名拆成b个“带”(band),每带r维(b×r=100)。对每个带,用一个哈希函数把r维向量映射到哈希桶。只有当两个文档在 同一个带的所有r维都完全一致 时,才认为它们“候选相似”。这利用了概率特性:高相似度文档在某个带完全一致的概率远高于低相似度文档。最终,我们只对落入同一桶的文档对做精确Jaccard计算。LSH不是减少计算,而是 用空间换时间,把O(N²)的暴力搜索,变成O(N×平均桶大小)的定向检查 。

提示:这三个环节像齿轮咬合,缺一不可。跳过K-Shingling直接Minhash?没有局部特征,签名失去意义。跳过Minhash直接LSH?维度太高,哈希桶爆炸。网上很多教程把它们割裂讲解,导致读者始终不明白“为什么要这么绕”。记住:K-Shingling定义“什么是相似”,Minhashing把相似性编码成数字,LSH让这些数字能被快速检索。

2.3 为什么不用BERT或SimCSE?——场景决定技术选型

肯定有读者问:现在大模型这么火,直接用Sentence-BERT算余弦相似度不香吗?香,但要看场合。我在某内容平台做过AB测试:用BERT-base对10万篇短文本(<200字)做相似聚类,单次推理耗时平均120ms,10万文档全量配对要13.7小时;而LSH方案全程2.1分钟。更重要的是稳定性——BERT对输入长度敏感,超长文本要截断或分段,而K-Shingling天然支持任意长度。还有成本:BERT推理需要GPU,LSH纯CPU即可。这不是技术优劣,而是 工程权衡 :当你需要实时响应(如搜索query去重)、资源受限(边缘设备)、或数据量大到无法全量加载(日志流式处理)时,LSH的确定性、低延迟、无状态特性,让它成为不可替代的基建。它不取代深度学习,而是和深度学习形成互补:LSH做第一层粗筛(召回率95%+),BERT做第二层精排(准确率99%+)。这才是工业界的真实玩法。

3. 核心细节解析:参数怎么选?代码怎么写?避坑指南在哪?

3.1 K-Shingling:字符级还是

K-Shingling+MinHash+LSH工业级文本去重与海量相似检索 文本相似性是内容去重、查重、聚类和近似搜索的基础能力,其核心在于如何将非结构化文本转化为可度量的数学表示。K-Shingling通过滑动词窗口提取局部结构指纹,保留语序与鲁棒性;MinHash基于随机排列实现集合相似度的保距压缩,将高维稀疏向量映射为低维签名;LSH则利用局部敏感哈希桶实现亚线性时间复杂度的候选召回。该技术栈不依赖深度模型,资源消耗低、推理速度快,特别适用于千万级文档库的实时去重、客服工单归并、资讯聚合等工程场景,是BERT等语义模型的重要轻量补充。 阅读详情

相关推荐

K-Shingling+Minhash+LSH:工业级文本去重与海量检索流水线

文本相似度计算是信息检索、内容去重和重复检测的基础能力,其核心在于高效估算Jaccard相似度。然而直接计算集合交并集在海量文档场景下面临O(N²)复杂度与内存爆炸问题。K-Shingling通过滑动窗口提取局部语义单元(如3-gram词片段),将文档转化为可比的shingle集合;Minhashing利用随机排列生成紧凑签名,使签名汉明相似度近似原集合Jaccard相似度;LSH则通过带状哈希(banding)实现局部敏感聚类,将相似文档高概率映射至同一哈希桶,从而将检索复杂度降至近线性。该组合方案不依赖

weixin_30219613的博客 287

K-Shingling+MinHash+LSH实现海量文本相似检索

文本相似性计算是信息检索、内容去重与抄袭检测的基础能力,其核心在于将非结构化文本转化为可度量的数学表示。Jaccard相似度虽原理简洁,但直接应用于原始文本时面临分词误差、语义鸿沟与O(n²)计算瓶颈。K-Shingling通过滑动窗口提取字符级子串,有效保留局部语序并规避中文分词不确定性;Minhashing则将高维shingle集合压缩为低维签名,使相似度估算逼近Jaccard值;Locality Sensitive Hashing(LSH)进一步构建概率索引,在可控精度损失下实现亚线性检索。该技术栈不

weixin_31188927的博客 309

K-Shingling+MinHash+LSH文本去重实战方案

文本去重是信息处理的基础任务,其核心在于高效识别语义相似但字面不同的文档。传统方法如TF-IDF与余弦相似度受限于词袋假设和O(n²)计算复杂度,难以满足实时性与大规模场景需求。K-Shingling通过滑动窗口提取局部词序特征,MinHash将文档映射为紧凑签名以支持概率化相似估计,LSH则利用哈希桶实现近似最近邻检索,三者协同可将计算复杂度降至O(n),内存占用压缩至1/200。该方案在中文短文本(如用户评论、客服工单)中表现尤为突出,兼顾精度、速度与部署成本,已成为工业界轻量级文本去重的事实标准。本文

weixin_32535389的博客 358

K-Shingling+Minhash+LSH:千万级文本相似度工程实践

文本相似度是内容去重、风控审核、查重聚类等场景的基础能力,其核心在于高效估算Jaccard相似度。传统方法如TF-IDF余弦相似度对同义替换和语序变化鲁棒性差,而深度学习方案依赖GPU且推理延迟高。K-Shingling通过滑动窗口提取局部字符模式,天然适配中文短文本;Minhash将集合相似度转化为签名匹配概率,实现O(1)近似估计;LSH进一步将全量比对压缩为桶内检索,使千万级文档的相似对发现降至亚秒级。该技术链不依赖预训练模型,纯Python可部署,兼顾精度、速度与可解释性,特别适用于电商评论、日志分

weixin_32451529的博客 337

从Shingling到LSH:一文搞懂文档去重背后的数学原理

本文深入解析从Shingling到LSH的文档去重技术,揭示Jaccard相似度与MinHash的数学原理,以及LSH在大规模数据处理中的高效应用。通过实际案例和代码示例,展示如何利用这些技术实现快速文档去重,适用于新闻聚合、论文查重等多个场景。

weixin_29048309的博客 364

MinHash与LSH实战:如何高效计算海量文档的Jaccard相似度

本文详细介绍了如何利用MinHash与LSH技术高效计算海量文档的Jaccard相似度。通过MinHash将文档压缩为固定长度的签名,再结合LSH的Banding技术进行分桶,将原本O(N²)的复杂度大幅降低,实现从“大海捞针”到“精准撒网”的转变。文中提供了完整的Python实战代码,并分享了参数调优与性能优化的关键经验。

weixin_29031161的博客 369

用MinHash和LSH快速找出相似文档:Python实战教程(附代码)

本文详细介绍了如何利用MinHash和LSH算法快速处理海量文档相似性检测问题。通过Python实战代码,演示了从文档分片、生成MinHash签名到构建LSH索引的完整流程,帮助开发者高效实现文本去重、内容聚合等应用,显著提升大数据下的处理效率。

weixin_29103191的博客 308

【信息科学与工程学】计算机科学与自动化——第八十一篇 Java分布式软件高并发/高可用算法01

4. 消息队列(如Kafka的Topic分区,本质是范围)。3. 若是ACCEPT事件,bossGroup线程接受连接,创建SocketChannel,并将其注册到workerGroup的一个EventLoop的Selector上,关注READ事件。1. 分布式缓存分片(如Redis Cluster)。4. 分布式文件存储(如Ceph CRUSH)。6. 调用栈的模拟(如协程)。3. 服务网格(如Istio)的基础。2. 本地缓存与集中式缓存(如Redis)的一致性维护。3. 静态数据(如配置)缓存。

weixin_49199313的博客 1202

高校技术转移办公室人员在开展技术推介时,如何高效生成科技成果展示材料?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

产业园区运营负责人如何实现创新资源的高效整合与精准配置?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

基于Spring Boot的宾馆客房管理系统(代码+数据库+LW)

摘 要 随着旅游业与商务出行的蓬勃发展,宾馆行业竞争日趋激烈,传统管理模式中信息更新滞后、流程依赖人工、服务响应缓慢等问题凸显,严重影响运营效率与客户满意度。为此,本文设计并实现基于 Spring Boot 的宾馆客房管理系统,助力宾馆行业数字化转型。 系统采用 B/S 架构与前后端分离模式,前端以 Vue.js 框架构建交互界面,后端依托 Spring Boot 框架开发接口逻辑,搭配 MySQL 数据库实现高效数据存储与查询。系统涵盖房间管理、订单管理、用户管理、财务管理、服务与支持及系统支撑六大核心模块,实现在线预订、房态可视化、快捷入住退房、消费统计、智能客服等功能,满足住客、员工与管理者的多元化需求。 通过信息化手段,系统优化了宾馆服务流程,缩短住客等候时间,减轻员工工作负担,为管理者提供数据决策支持。测试表明,系统运行稳定、操作便捷,有效提升了宾馆运营效率与客户体验,为中小型宾馆信息化建设提供了实用的技术解决方案。 关键词:Spring Boot;宾馆客房管理;B/S 架构;前后端分离;数字化转型

科技中介服务机构如何提升技术评估的智能化与专业化水平?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务机构如何利用平台提升服务质量与运营效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

OxygenXMLEditor-v26.x + keygen

OxygenXMLEditor-v26.x + keygen

完美复现基于自适应虚拟谐波阬的光储VSG并网电流谐波抑制模型(Simulink仿真实现)

内容概要:本文详细阐述了基于自适应虚拟谐波阬的光储VSG并网电流谐波抑制模型,旨在通过Simulink仿真平台有效解决光伏发电与储能系统在并网过程中产生的谐波电流问题。该模型融合虚拟同步发电机(VSG)技术,创新性地引入自适应虚拟谐波阬控制策略,以动态调节谐波阻抗特性,从而显著提升系统对特定次谐波的抑制能力,改善并网电能质量。文档强调该模型已实现“完美复现”,具备高度的可验证性和工程参考价值,适用于高水平学术论文复现与实际工程项目的仿真验证。内容涵盖系统建模、控制算法设计、仿真搭建、动态性能分析及关键参数优化等全过程,突出理论与实践的紧密结合。; 适合人群:具备电力电子、新能源并网、自动控制等相关领域基础知识,熟悉Matlab/Simulink仿真环境,从事电力系统仿真、VSG控制策略研究、电能质量治理方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展光储系统并网谐波治理关键技术的研究与方案可行性验证;②支撑高水平科研论文的复现工作,包括模型重建、数据对比与结果分析;③为VSG控制与电能质量协同优化提供可靠的仿真测试平台,服务于新型电力系统中谐波抑制算法的开发与优化。; 阅读建议:建议读者结合提供的Simulink模型文件与文档中的技术要点进行同步操作,重点理解自适应虚拟谐波阬的控制逻辑、参数整定方法及其在VSG系统中的集成方式。应通过调整工况与参数进行多次仿真,观察系统动态响应,深化对自适应控制机制与谐波抑制物理机理的理解,并推荐参考相关文献以拓宽技术视野。

测试 Wi-Fi、蓝牙性能

前几天去原厂测试了 Wi-Fi 和蓝牙的性能,现在把了解到的知识总结一下 RF通路新理解 RF通路一般分为两部分:芯片端、天线端 芯片端 芯片端包括芯片+芯片出来的RF匹配电路,是来调芯片的阻抗匹配的。 天线端 天线前一般也会有一段天线匹配电路,是留给天线调天线的阻抗匹配的。 调试的时候是两部分分开调试的,下面调试的就是芯片端。 测试“阻抗匹配”用网络分析仪看史密斯圆图 测试...

撒哈拉的初学者的博客 1万+

Python爬虫实战:5分钟搞定Web of Science文献批量导出与解析(附完整代码)

本文提供了一套利用Python爬虫技术,快速实现Web of Science文献批量提取与解析的完整方案。通过解析官方导出的HTML文件,结合BeautifulSoup和pandas库,可将文献数据自动转换为结构化的Excel/CSV表格,帮助科研人员高效管理文献信息,节省大量手动整理时间。

weixin_29050513的博客 1157

AI落地困局与破局者FDE:从技术神话到价值实干的战略转型

AI落地困局与破局者FDE:从技术神话到价值实干的战略转型 当前AI企业级应用面临三大核心挑战:业务场景深度非标化、技术落地"最后一公里"困局、以及市场竞争焦点转向实用价值。前线部署工程师(FDE)作为破局关键,通过技术-业务-产品三维交汇的复合能力,将AI从实验室推向生产环境。FDE不仅是技术架构师,更是业务价值挖掘机和产品进化传感器,通过"碎石路-高速公路"双循环模式,将定制化需求沉淀为可复用的平台能力。这种模式颠覆了传统SaaS的销售逻辑,形成基于价值的J型增长

随笔记录-分享&记忆 3913

R语言笔记三:矩阵、数组、列表和数据框

1.矩阵        矩阵是二维的,需要有行和列。向量是一维的。        在R软件中,矩阵是有维数的向量,这里的矩阵元素可以是数值型、字符型或者逻辑型,但是每个元素必须拥有相同的模式,这个和向量一致。 (1)创建矩阵: m <- matrix(1:20,4,5) 行数和列数的分配必须满足分配条件。若分配的行列过大,分配的元素不足够,则报错。 m <-

weixin_44384631的博客 6202

PICO4 VR开发调试神器:用Live Preview Plugin实现电脑串流,告别反复打包烧录的繁琐流程

本文详细介绍了PICO4 VR开发中如何使用Live Preview Plugin实现电脑串流,显著提升开发效率。通过实时预览和调试功能,开发者可以避免反复打包烧录的繁琐流程,特别适用于Unity环境下的VR应用开发。文章涵盖环境配置、连接设置、实时调试技巧及性能优化方案,是PICO4开发者的必备指南。

weixin_34110970的博客 415

内窥镜胶囊(胶囊内镜)硬件方案

内窥镜胶囊(胶囊内镜)硬件方案 前言 说明:该方案为作者2018年上半年完成的第一版,后来搁置了一段时间,才重启这个项目。目前(2020.07)第二版已经快要完成。[联系v:1#7#6#3#3#3#5#0#8#7#0]先给一下第一版和第二版的基本参数。 第一版: 续航时间:3h 帧率:0.5fps 尺寸:12mm * 25mm 角度:45° 第二版: 续航时间:12h 帧率:2-6fps 尺寸:9.8mm * 25mm 角度:130° 第一版属于尝试版,整体方案不是很成熟。第二版这个数据就非常优秀了。我拿了

CrekerLi的博客 4767

可视化大屏系列(5):设备状态面板与数据分析仪表盘

在这篇文章中,我们将重点讨论如何通过智能化手段提升工地设备的管理效率与维护质量。随着智能工地系统的不断发展,设备监控与维护管理变得尤为重要。本篇将从 设备状态实时监控、自动化维护提醒、设备管理与维修记录 三个方面入手,展示如何通过 Vue3 和 ECharts 构建一个智能化的设备管理平台,实时采集和展示设备运行状态、及时生成维护提醒并记录维修历史,以提高设备的使用效率与安全性。我们还将结合实际代码示例,详细讲解如何实现这些功能,帮助你在智能工地项目中实现设备管理的智能化、数字化和自动化。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 3354

手把手教你为RK3588开发板适配RTL8211F网卡:设备树配置与PHY驱动匹配全流程

本文详细介绍了在RK3588开发板上适配RTL8211F千兆以太网PHY芯片的全流程,包括硬件原理图确认、设备树配置与PHY驱动匹配。通过实战案例和调试技巧,帮助开发者解决常见问题并优化网络性能,适用于嵌入式Linux开发中的Ethernet网络功能实现。

weixin_29184075的博客 515

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 别再只用tcpdump了!ESXi内置神器pktcap-uw的5个高阶用法与避坑指南
下一篇: 电力电子仿真避坑指南:Simulink中Powergui模块做FFT分析,90%的人第一步就错了
REECHO大鱼总舵
博客等级 码龄8年 34粉丝 1万+原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值