KART-RERANK模型在Python爬虫数据排序中的应用实战
KART-RERANK模型在Python爬虫数据排序中的应用实战你是不是也遇到过这种情况用Python爬虫吭哧吭哧抓了一大堆电商商品数据结果发现里面什么都有——标题相似的、描述跑题的、甚至完全不相关的商品都混在一起。最后还得自己一条条看手动筛选费时又费力。传统的爬虫就像个“搬运工”只管把数据搬回来至于搬回来的东西有没有用、质量怎么样它可不管。特别是在电商数据抓取这种场景下商品标题、描述、用户评论海量又杂乱人工筛选的效率实在太低。最近我在做一个电商比价项目时就遇到了这个痛点。后来尝试把KART-RERANK模型集成到爬虫流程里让模型帮我对抓取的结果做智能排序和过滤效果提升非常明显。今天就来聊聊具体是怎么做的以及在实际应用中需要注意哪些问题。1. 从问题出发为什么爬虫需要智能排序先来看一个真实的例子。假设我们要抓取“无线蓝牙耳机”这个关键词下的商品信息。一个简单的爬虫可能会返回几百甚至上千条结果包括真正的无线蓝牙耳机有线耳机但标题里碰巧有“蓝牙”两个字耳机配件比如耳机套、充电盒完全不相关的商品比如“蓝牙音箱”或者只是描述里提到了“耳机”如果只是简单按照价格、销量或者上架时间排序很多无关结果还是会排在前面。更麻烦的是有些商品标题看起来相关但点进去发现根本不是那么回事——可能是商家为了蹭流量故意写的标题。这时候就需要一个能“理解”内容的智能排序器。KART-RERANK模型就是干这个的——它不是简单匹配关键词而是真正理解查询意图和文档内容然后给出相关性评分。简单来说它的工作流程是这样的爬虫先抓取一批初步结果比如前100个商品把这些商品的标题、描述、关键属性提取出来用KART-RERANK模型对每个商品进行相关性打分按照分数从高到低重新排序只保留分数超过阈值的高质量结果这样处理后排在前面的基本都是真正相关的商品那些蹭流量的、描述不符的都会被压到后面甚至直接过滤掉。2. 搭建环境与模型准备在开始集成之前需要先准备好Python环境和必要的库。这里假设你已经有了基本的爬虫框架比如用Scrapy或RequestsBeautifulSoup。2.1 安装依赖库首先安装KART-RERANK相关的Python包。模型可以通过Hugging Face的Transformers库来使用pip install transformers torch pip install sentence-transformers # 如果需要使用sentence-transformers版本如果你打算用REST API的方式调用比如模型部署在单独的服务器上还需要安装requestspip install requests2.2 两种模型使用方式KART-RERANK模型主要有两种使用方式各有优缺点方式一本地加载适合数据量不大、对延迟敏感的场景from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch # 加载模型和分词器 model_name your-kart-rerank-model-name # 替换为实际的模型名称 tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForSequenceClassification.from_pretrained(model_name) def local_rerank(query, documents): 本地推理的排序函数 scores [] for doc in documents: # 将查询和文档拼接 inputs tokenizer(query, doc, return_tensorspt, truncationTrue, max_length512) with torch.no_grad(): outputs model(**inputs) # 获取相关性分数通常是第二个logit score torch.softmax(outputs.logits, dim1)[0][1].item() scores.append(score) # 将文档和分数配对按分数降序排序 sorted_results sorted(zip(documents, scores), keylambda x: x[1], reverseTrue) return sorted_results方式二API调用适合数据量大、需要弹性扩展的场景import requests import json def api_rerank(query, documents, api_urlhttp://your-model-server/rerank): 通过API调用的排序函数 payload { query: query, documents: documents, top_k: len(documents) # 返回所有文档的排序 } try: response requests.post(api_url, jsonpayload, timeout30) response.raise_for_status() results response.json() # API通常返回已经排序好的结果 return results[ranked_documents] except requests.exceptions.RequestException as e: print(fAPI调用失败: {e}) # 降级处理返回原始顺序 return [(doc, 0.0) for doc in documents]本地加载的方式延迟低但需要GPU资源API方式更灵活但会有网络延迟。根据你的实际需求选择合适的方式。3. 集成到爬虫工作流现在来看看怎么把排序模型实际集成到爬虫流程中。我会用一个简化的电商爬虫例子来说明。3.1 传统爬虫流程的问题先看一个没有排序的简单爬虫import requests from bs4 import BeautifulSoup import time class SimpleEcommerceCrawler: def __init__(self): self.session requests.Session() self.session.headers.update({ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 }) def crawl_products(self, keyword, page_count3): 抓取商品数据 - 传统方式 all_products [] for page in range(1, page_count 1): # 模拟搜索请求这里用示例URL search_url fhttps://example-store.com/search?q{keyword}page{page} try: response self.session.get(search_url, timeout10) soup BeautifulSoup(response.text, html.parser) # 解析商品列表 product_items soup.select(.product-item) for item in product_items: product { title: self._extract_text(item, .product-title), price: self._extract_text(item, .product-price), description: self._extract_text(item, .product-desc), url: self._extract_attr(item, a.product-link, href) } if product[title]: # 简单过滤空标题 all_products.append(product) time.sleep(1) # 礼貌性延迟 except Exception as e: print(f第{page}页抓取失败: {e}) continue return all_products def _extract_text(self, element, selector): 提取文本 found element.select_one(selector) return found.text.strip() if found else def _extract_attr(self, element, selector, attr): 提取属性 found element.select_one(selector) return found[attr] if found and attr in found.attrs else 这个爬虫能抓取数据但抓回来的商品质量参差不齐。接下来我们加入智能排序。3.2 集成KART-RERANK的智能爬虫我们在原有爬虫基础上增加一个排序层class SmartEcommerceCrawler(SimpleEcommerceCrawler): def __init__(self, rerank_modelNone): super().__init__() self.rerank_model rerank_model # 排序模型实例 def crawl_and_rank(self, keyword, page_count3, min_score0.5): 抓取并智能排序商品 # 1. 先抓取原始数据 print(f开始抓取 {keyword} 的商品...) raw_products self.crawl_products(keyword, page_count) print(f原始抓取到 {len(raw_products)} 个商品) if not raw_products: return [] # 2. 准备排序用的文本 # 把标题和描述组合起来作为排序的文档内容 documents [] for product in raw_products: # 组合标题和描述增加上下文信息 doc_text f{product[title]}。{product[description]} documents.append(doc_text) # 3. 使用模型进行排序 print(正在进行智能排序...) ranked_results self.rerank_model.rank(keyword, documents) # 4. 重新组织排序后的商品数据 sorted_products [] for doc_text, score in ranked_results: if score min_score: # 找到对应的原始商品数据 for product in raw_products: if doc_text.startswith(product[title]): # 添加相关性分数 product[relevance_score] round(score, 3) sorted_products.append(product) break print(f排序后保留 {len(sorted_products)} 个高质量商品 (分数{min_score})) return sorted_products # 排序模型的封装类 class KartRerankWrapper: def __init__(self, modelocal, model_pathNone, api_urlNone): self.mode mode if mode local and model_path: from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch self.tokenizer AutoTokenizer.from_pretrained(model_path) self.model AutoModelForSequenceClassification.from_pretrained(model_path) self.device torch.device(cuda if torch.cuda.is_available() else cpu) self.model.to(self.device) self.model.eval() elif mode api and api_url: self.api_url api_url else: raise ValueError(请提供正确的模型路径或API地址) def rank(self, query, documents): 对文档进行排序 if self.mode local: return self._local_rank(query, documents) else: return self._api_rank(query, documents) def _local_rank(self, query, documents): 本地模型排序 import torch scores [] for doc in documents: inputs self.tokenizer( query, doc, return_tensorspt, truncationTrue, max_length512, paddingTrue ) inputs {k: v.to(self.device) for k, v in inputs.items()} with torch.no_grad(): outputs self.model(**inputs) # 假设二分类0表示不相关1表示相关 probs torch.softmax(outputs.logits, dim1) score probs[0][1].item() # 相关性的概率 scores.append(score) # 组合文档和分数按分数排序 ranked list(zip(documents, scores)) ranked.sort(keylambda x: x[1], reverseTrue) return ranked def _api_rank(self, query, documents): API方式排序 import requests import json payload { query: query, documents: documents, return_scores: True } try: response requests.post( self.api_url, jsonpayload, timeout30, headers{Content-Type: application/json} ) response.raise_for_status() result response.json() # 假设API返回格式{ranked_documents: [{text: ..., score: 0.9}, ...]} ranked [(item[text], item[score]) for item in result[ranked_documents]] return ranked except Exception as e: print(f排序API调用失败: {e}) # 降级返回原始顺序分数为0 return [(doc, 0.0) for doc in documents]3.3 实际使用示例现在让我们看看这个智能爬虫怎么用# 初始化排序模型 reranker KartRerankWrapper( modelocal, # 或者 api model_pathpath/to/your/kart-rerank-model # 本地模型路径 # api_urlhttp://your-model-server/rerank # 如果用API方式 ) # 创建智能爬虫 crawler SmartEcommerceCrawler(rerank_modelreranker) # 抓取并排序商品 keyword 无线蓝牙耳机 降噪 products crawler.crawl_and_rank( keywordkeyword, page_count2, min_score0.6 # 只保留相关性分数0.6的商品 ) # 查看排序结果 print(f\n 排序后的商品列表 ) for i, product in enumerate(products[:10], 1): # 只看前10个 print(f{i}. [{product[relevance_score]}] {product[title]}) print(f 价格: {product[price]}) print(f 描述: {product[description][:100]}...) # 只显示前100字符 print()4. 排序策略与效果优化直接使用模型排序可能还不够我们需要根据电商场景的特点做一些优化。4.1 多字段加权排序在电商场景中不同字段的重要性不一样。比如标题比描述更重要品牌信息比普通描述更重要。我们可以给不同字段分配不同的权重class EnhancedReranker(KartRerankWrapper): def rank_with_weights(self, query, products, field_weightsNone): 带权重的多字段排序 Args: query: 搜索查询 products: 商品列表每个商品是字典 field_weights: 字段权重如 {title: 0.6, description: 0.3, brand: 0.1} if field_weights is None: field_weights {title: 0.6, description: 0.4} final_scores [] for product in products: weighted_score 0 total_weight 0 for field, weight in field_weights.items(): if field in product and product[field]: # 对每个字段单独计算相关性 field_text str(product[field]) field_score self._calculate_score(query, field_text) weighted_score field_score * weight total_weight weight if total_weight 0: final_score weighted_score / total_weight else: final_score 0 final_scores.append((product, final_score)) # 按最终分数排序 final_scores.sort(keylambda x: x[1], reverseTrue) return final_scores def _calculate_score(self, query, text): 计算单个文本的相关性分数 # 这里简化处理实际应该调用模型的单个文档评分 # 为了演示我们模拟一个评分 inputs self.tokenizer(query, text, return_tensorspt, truncationTrue, max_length512, paddingTrue) inputs {k: v.to(self.device) for k, v in inputs.items()} with torch.no_grad(): outputs self.model(**inputs) probs torch.softmax(outputs.logits, dim1) return probs[0][1].item()4.2 结合业务规则的混合排序有时候纯模型排序可能不符合业务需求。比如我们可能希望相关性高的排前面但价格太高的要适当降权有货的优先于缺货的评分高的商品有加分这时候可以设计一个混合排序策略def hybrid_ranking(products, relevance_scores, config): 混合排序结合相关性、价格、库存、评分等因素 Args: products: 商品列表 relevance_scores: 模型计算的相关性分数 config: 排序配置 ranked_products [] for product, rel_score in zip(products, relevance_scores): # 基础分相关性分数 total_score rel_score * config[relevance_weight] # 价格因子价格越低加分越多 price self._parse_price(product.get(price, 0)) if price 0: # 价格在合理范围内加分过高则减分 if price config[price_threshold]: price_factor 1.0 else: # 价格越高因子越小 price_factor config[price_threshold] / price total_score price_factor * config[price_weight] # 库存因子有货加分 if product.get(in_stock, False): total_score config[stock_weight] # 评分因子评分高加分 rating product.get(rating, 0) if rating 0: total_score (rating / 5.0) * config[rating_weight] ranked_products.append({ product: product, total_score: total_score, relevance_score: rel_score, price: price }) # 按总分排序 ranked_products.sort(keylambda x: x[total_score], reverseTrue) return ranked_products def _parse_price(price_str): 解析价格字符串 import re # 移除货币符号和逗号 cleaned re.sub(r[^\d.], , str(price_str)) try: return float(cleaned) if cleaned else 0 except: return 04.3 批量处理优化当商品数量很多时一条条调用模型效率太低。我们可以用批量处理def batch_rerank(query, documents, batch_size32): 批量排序提高效率 all_scores [] for i in range(0, len(documents), batch_size): batch_docs documents[i:ibatch_size] # 准备批量输入 batch_inputs [] for doc in batch_docs: inputs tokenizer(query, doc, truncationTrue, max_length512, paddingmax_length, return_tensorspt) batch_inputs.append(inputs) # 这里需要根据实际模型调整批量处理逻辑 # 假设模型支持批量输入 batch_scores process_batch(batch_inputs) all_scores.extend(batch_scores) return list(zip(documents, all_scores))5. 效果评估与调优排序模型用上了但效果到底怎么样我们需要一些方法来评估和优化。5.1 人工评估样本最简单直接的方法就是人工看def evaluate_ranking_quality(keyword, ranked_products, sample_size20): 人工评估排序质量 Returns: precision_at_k: 前k个结果的准确率 avg_relevance: 平均相关性评分人工 print(f\n 排序效果评估: {keyword} ) print(f评估样本数: {min(sample_size, len(ranked_products))}) # 取前k个结果进行评估 k min(10, len(ranked_products)) sample_products ranked_products[:k] relevant_count 0 total_relevance 0 for i, product in enumerate(sample_products, 1): print(f\n{i}. 分数: {product.get(relevance_score, 0):.3f}) print(f 标题: {product.get(title, )[:50]}...) print(f 描述: {product.get(description, )[:80]}...) # 人工判断相关性这里模拟实际应该由人工评估 # 0: 不相关, 1: 有点相关, 2: 相关, 3: 非常相关 relevance int(input(请评估相关性 (0-3): )) if relevance 2: # 相关或非常相关 relevant_count 1 total_relevance relevance precision_at_k relevant_count / k avg_relevance total_relevance / k print(f\n 评估结果 ) print(f前{k}个结果的准确率: {precision_at_k:.2%}) print(f平均相关性: {avg_relevance:.2f}/3.0) return precision_at_k, avg_relevance5.2 自动化评估指标对于大规模应用我们需要一些自动化评估指标class RankingEvaluator: def __init__(self, test_queries): test_queries: 测试查询列表每个查询包含 - query: 搜索词 - relevant_docs: 相关文档的ID列表 - all_docs: 所有文档带ID self.test_queries test_queries def evaluate_model(self, rerank_function): 评估排序模型 results { mrr: [], # 平均倒数排名 precision_at_5: [], precision_at_10: [], ndcg_at_10: [] # 归一化折损累计增益 } for test_case in self.test_queries: query test_case[query] relevant_ids set(test_case[relevant_docs]) all_docs test_case[all_docs] # 获取文档文本 doc_texts [doc[text] for doc in all_docs] doc_ids [doc[id] for doc in all_docs] # 使用模型排序 ranked_results rerank_function(query, doc_texts) # 计算指标 mrr self._calculate_mrr(ranked_results, doc_ids, relevant_ids) p5 self._calculate_precision_at_k(ranked_results, doc_ids, relevant_ids, k5) p10 self._calculate_precision_at_k(ranked_results, doc_ids, relevant_ids, k10) ndcg self._calculate_ndcg(ranked_results, doc_ids, relevant_ids, k10) results[mrr].append(mrr) results[precision_at_5].append(p5) results[precision_at_10].append(p10) results[ndcg_at_10].append(ndcg) # 计算平均值 avg_results {k: sum(v)/len(v) for k, v in results.items()} return avg_results def _calculate_mrr(self, ranked_results, doc_ids, relevant_ids): 计算平均倒数排名 for i, (doc_text, score) in enumerate(ranked_results): # 找到对应的文档ID idx doc_texts.index(doc_text) if doc_text in doc_texts else -1 if idx ! -1 and doc_ids[idx] in relevant_ids: return 1.0 / (i 1) # 排名从1开始 return 0.0 def _calculate_precision_at_k(self, ranked_results, doc_ids, relevant_ids, k10): 计算前k个结果的准确率 relevant_count 0 for i, (doc_text, score) in enumerate(ranked_results[:k]): idx doc_texts.index(doc_text) if doc_text in doc_texts else -1 if idx ! -1 and doc_ids[idx] in relevant_ids: relevant_count 1 return relevant_count / k def _calculate_ndcg(self, ranked_results, doc_ids, relevant_ids, k10): 计算NDCGk # 简化的NDCG计算 dcg 0 for i, (doc_text, score) in enumerate(ranked_results[:k]): idx doc_texts.index(doc_text) if doc_text in doc_texts else -1 if idx ! -1 and doc_ids[idx] in relevant_ids: # 相关文档的增益 relevance 1 # 假设相关度为1 dcg relevance / np.log2(i 2) # i从0开始所以2 # 理想DCGIDCG ideal_relevant_count min(len(relevant_ids), k) idcg sum(1 / np.log2(i 2) for i in range(ideal_relevant_count)) return dcg / idcg if idcg 0 else 05.3 常见问题与调优建议在实际使用中可能会遇到这些问题问题1排序结果不稳定表现同样的查询不同时间排序结果差异大可能原因模型推理的随机性、输入文本预处理不一致解决方案设置固定的随机种子、标准化文本预处理流程问题2某些商品总是排不到前面表现明明相关的商品分数就是不高可能原因商品描述文本质量差、与查询的表述方式差异大解决方案优化商品文本提取、尝试查询扩展或重写问题3排序速度太慢表现处理大量商品时耗时太长可能原因模型太大、没有使用批量处理、硬件资源不足解决方案使用更轻量级的模型、实现批量推理、考虑模型量化或蒸馏问题4领域适应性差表现在特定商品类别上效果不好可能原因预训练模型对领域知识不足解决方案使用领域数据微调模型、集成领域词典或规则这里提供一个简单的调优脚本框架def optimize_reranker(config, test_data): 简单的排序器调优 best_score 0 best_config None # 尝试不同的参数组合 for weight_title in [0.4, 0.5, 0.6, 0.7]: for weight_desc in [0.3, 0.4, 0.5]: for min_score in [0.4, 0.5, 0.6]: # 更新配置 config[field_weights] { title: weight_title, description: weight_desc } config[min_score] min_score # 评估当前配置 score evaluate_config(config, test_data) if score best_score: best_score score best_config config.copy() print(f最佳配置: {best_config}) print(f最佳分数: {best_score}) return best_config6. 实际应用中的注意事项在实际项目中应用KART-RERANK模型时有几个点需要特别注意性能考虑排序模型会增加额外的计算开销。对于实时性要求高的场景需要考虑使用GPU加速推理实现结果缓存相同查询缓存排序结果设置超时和降级策略模型失败时返回原始排序数据质量模型的效果很大程度上取决于输入文本的质量确保爬虫提取的商品信息完整、干净处理HTML标签、特殊字符、乱码等问题对于长描述考虑截取关键部分前200-300字通常足够业务适配不同的电商平台、不同的商品类别可能需要不同的策略服装类商品颜色、尺码、材质很重要电子产品型号、规格、参数是关键图书作者、出版社、ISBN需要重点考虑可以针对不同类别配置不同的字段权重和排序策略。错误处理在实际应用中要做好错误处理模型服务不可用时的降级方案输入文本过长时的截断策略分数异常时的检查和过滤7. 总结把KART-RERANK模型集成到Python爬虫里确实能显著提升抓取数据的质量。从实际使用经验来看最明显的改善就是减少了人工筛选的工作量——以前可能需要从几百个结果里手动挑出几十个相关的现在模型能帮你把最相关的前几十个直接排到前面。不过也要注意模型不是万能的。特别是在电商这种领域商品描述千奇百怪有时候模型也会“理解错误”。所以比较好的做法是把模型排序和业务规则结合起来用模型负责理解语义相关性业务规则处理那些模型不太擅长的部分比如价格区间、库存状态等。另外模型的效果需要持续评估和优化。刚开始用的时候最好人工抽查一下排序结果看看有没有明显的问题。如果发现某个类别的商品总是排序不好可以针对这个类别调整策略或者收集一些数据对模型做微调。总的来说智能排序让爬虫从“能抓”变成了“会抓”算是爬虫技术的一个实用升级。如果你也在做数据抓取相关的工作不妨试试这个思路应该能看到不错的效果提升。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻

李慕婉-仙逆-造相Z-Turbo技术解析网站搭建:使用Python Flask与Bootstrap

李慕婉-仙逆-造相Z-Turbo技术解析网站搭建:使用Python Flask与Bootstrap

李慕婉-仙逆-造相Z-Turbo技术解析网站搭建:使用Python Flask与Bootstrap 想为你的AI模型项目打造一个专属的技术展示窗口吗?一个设计精良、功能清晰的网站,不仅能直观地展示模型效果,还能有效吸引开发者社区和潜在用户的关注。今…

2026/7/4 4:05:13 阅读更多 →
智能客服聊天机器人智能体的AI辅助开发实战:从架构设计到性能优化

智能客服聊天机器人智能体的AI辅助开发实战:从架构设计到性能优化

最近在做一个智能客服聊天机器人的项目,从零开始搭建一个能理解人话、能记住聊天上下文的“智能体”,整个过程踩了不少坑,也积累了一些心得。今天就来聊聊,如何用AI辅助开发的方式,高效地构建一个可用的智能客服系统。…

2026/7/5 1:52:39 阅读更多 →
格雷厄姆特价股票理论在新兴市场的适用性研究

格雷厄姆特价股票理论在新兴市场的适用性研究

格雷厄姆特价股票理论在新兴市场的适用性研究 关键词:格雷厄姆特价股票理论、新兴市场、适用性、价值投资、股票估值 摘要:本文聚焦于格雷厄姆特价股票理论在新兴市场的适用性。首先介绍了该理论的背景、目的和适用范围,明确预期读者和文档结构。详细阐述了格雷厄姆特价股票…

2026/5/17 11:15:43 阅读更多 →

最新新闻

如何用嘎嘎降AI处理英语专业论文:英语专业毕业论文降AI知网4.8元完整操作教程

如何用嘎嘎降AI处理英语专业论文:英语专业毕业论文降AI知网4.8元完整操作教程

如何用嘎嘎降AI处理英语专业论文:英语专业毕业论文降AI知网4.8元完整操作教程 处理英语专业论文降AI教程时最怕两件事:降不下来,和改完不知道对不对。 这篇把整个流程梳理清楚,用嘎嘎降AI(www.aigcleaner.com&#x…

2026/7/5 4:51:21 阅读更多 →
为庆祝《终结者 2》上映 35 周年,工业光魔创始人探讨 T-1000 特效技术挑战

为庆祝《终结者 2》上映 35 周年,工业光魔创始人探讨 T-1000 特效技术挑战

【导语:为庆祝《终结者 2》上映 35 周年,工业光魔计算机图形部门几位创始人聚在一起,探讨打造液态金属 T - 1000 角色面临的技术挑战,想了解电影特效可看迪士尼纪录片。】《终结者 2》35 周年:特效技术探讨重聚在《终结…

2026/7/5 4:51:21 阅读更多 →
GESP2026年6月认证C++二级( 第一部分选择题(1-7))精讲

GESP2026年6月认证C++二级( 第一部分选择题(1-7))精讲

第一题 未来农场的神奇传感器(答案:C)1、📖故事开始(1)今天,小明来到了未来智慧农场。农场里没有农民拿着水壶浇地,而是有一个小机器人不停地说:"土地有点干了&…

2026/7/5 4:49:20 阅读更多 →
Sketch批量重命名插件终极指南:告别手动命名,提升设计效率10倍

Sketch批量重命名插件终极指南:告别手动命名,提升设计效率10倍

Sketch批量重命名插件终极指南:告别手动命名,提升设计效率10倍 【免费下载链接】RenameIt Keep your Sketch files organized, batch rename layers and artboards. 项目地址: https://gitcode.com/gh_mirrors/re/RenameIt 你是否曾因Sketch文件中…

2026/7/5 4:49:20 阅读更多 →
图像频域滤波实战:3步实现基于2D-FFT的高斯低通与高通滤波

图像频域滤波实战:3步实现基于2D-FFT的高斯低通与高通滤波

图像频域滤波实战:3步实现基于2D-FFT的高斯低通与高通滤波 1. 频域滤波的核心原理 当你第一次看到图像的频域表示时,可能会觉得那些对称的亮斑和条纹像某种抽象艺术。但正是这些看似神秘的图案,蕴含着图像处理的强大力量。频域滤波的核心思想…

2026/7/5 4:45:18 阅读更多 →
DeepSeek-R1本地部署指南:消费级硬件运行高效AI推理模型

DeepSeek-R1本地部署指南:消费级硬件运行高效AI推理模型

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你是一名开发者,最近在尝试构建自己的AI应用,或者正在为团队寻找一个高效、低成本的本地AI解决方案&#…

2026/7/5 4:43:18 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻