NLP文本表示与相似度计算:从TF-IDF到BERT的实战选型与调优
1. 文本表示与相似度计算到底在解决什么问题做NLP项目的人迟早会撞上一堵墙机器根本不认识字。你给它一句“苹果手机电池不耐用”它看到的只是一串离散符号既不知道“苹果”和“梨”都是水果也不知道“不耐用”和“续航差”说的是同一件事。文本表示要干的事就是把这串符号变成一串数字向量让机器能算、能比、能聚类。而相似度计算则是在这串向量之上回答一个最朴素的问题这两段文本到底有多像。这两个环节是搜索、推荐、去重、问答、聚类、意图识别的公共底座。你做的文本去重系统核心就是相似度阈值怎么定你做的语义搜索召回质量几乎完全取决于文本表示的质量。所以我把这块内容定位成NLP里最值得反复打磨的基本功而不是那种跑个demo就完事的玩具环节。这篇文章适合两类人看。一类是刚入门NLP、被TF-IDF、Word2Vec、BERT这一串名词绕晕的朋友我会把每个方法的来龙去脉和适用边界讲清楚另一类是已经能调库、但线上效果总差一口气的从业者我会重点讲那些文档里不写、但实际项目里决定成败的细节比如中文分词对相似度的影响、向量归一化的坑、阈值到底怎么标定。先给一个整体判断方便你建立坐标系文本表示大致分三代。第一代是基于统计的离散表示代表是One-Hot和TF-IDF优点是快、可解释、无需训练缺点是稀疏、无语义。第二代是基于预测的稠密表示代表是Word2Vec、GloVe、FastText把词压到几百维的稠密空间语义相近的词距离近。第三代是基于上下文的动态表示代表是ELMo、BERT这类预训练模型同一个词在不同句子里向量不同解决了多义词问题。相似度计算则始终围绕两个度量展开余弦相似度和欧氏距离前者看方向后者看绝对位置。理解了这个坐标系后面所有的选型和调参就都有了依据。下面我按“设计思路—核心细节—实操实现—问题排查”的顺序把这块内容彻底拆开讲。2. 文本表示方案的整体设计与选型逻辑2.1 为什么不能只用一种表示方法新手最容易犯的错是拿到一个任务就直接上BERT觉得越新越强。我踩过这个坑做一个几十万条的日志去重用BERT跑一遍要几个小时而用TF-IDF加余弦相似度几分钟就出结果效果还够用。反过来做语义搜索时用户搜“怎么退订会员”文档里写的是“取消订阅的方法”TF-IDF完全匹配不上这时候就必须上稠密向量。所以方案设计的核心逻辑是先看任务对“语义”的要求有多高再看数据规模和延迟要求。我一般按下面这个决策表来选任务类型推荐表示相似度度量理由精确去重、近重复检测TF-IDF / SimHash余弦 / 汉明距离快对字面重合敏感关键词检索、倒排召回TF-IDF / BM25余弦可解释支持倒排索引语义搜索、问答匹配Sentence-BERT类余弦能捕捉同义改写短文本聚类、意图分类Word2Vec平均 / FastText余弦轻量训练成本低多义词敏感任务BERT类动态表示余弦上下文相关这张表不是死的但方向基本对。我的经验是能用轻量方案解决的绝不上大模型因为线上推理成本和维护复杂度是实打实的。2.2 稀疏表示与稠密表示的本质区别很多人把TF-IDF和Word2Vec的区别理解成“一个老一个新”这是误解。真正的区别在于表示空间的性质。TF-IDF是稀疏的维度等于词表大小可能几万到几十万维但每句话只有少数几维非零。它的每一维对应一个具体的词所以可解释性极强——你能直接看出两句话是因为共享了哪些词才相似。缺点是“苹果”和“梨”这两维完全正交机器不知道它们相关。Word2Vec是稠密的通常100到300维每一维没有具体含义但整个向量编码了语义。它的好处是“苹果”和“梨”的向量夹角很小坏处是可解释性差你很难说清第37维代表什么。这个区别直接决定了它们的适用场景。需要解释“为什么这两条被判为相似”的场景比如内容审核申诉稀疏表示更友好需要捕捉语义改写的场景稠密表示更强。2.3 相似度度量的选择不是随便挑的余弦相似度和欧氏距离很多人随手用一个。但它们的几何含义完全不同。余弦只看两个向量的夹角对向量长度不敏感欧氏距离看绝对位置长度会影响结果。举个例子句子A是“手机很好用”句子B是“手机很好用很好用很好用”。如果做词频向量B的向量长度是A的三倍但方向一样余弦相似度是1欧氏距离却很大。这时候如果你关心的是“主题是否一致”余弦更合适如果你关心的是“文本长度和内容分布是否接近”欧氏距离才有意义。文本相似度任务里绝大多数情况用余弦相似度因为文本长度差异是常态我们关心的是语义方向而非绝对强度。但有个例外当向量已经做了L2归一化后余弦相似度和欧氏距离是等价的单调对应这时候用哪个都行。所以实操中我通常先归一化再算余弦省心。3. 核心细节解析与实操要点3.1 中文分词对相似度的影响被严重低估英文用空格天然分词中文没有。很多人直接用jieba默认分词就上结果相似度算出来一塌糊涂。问题出在领域词典上。比如“深度学习”这个词jieba默认可能切成“深度”和“学习”而“机器学习”切成“机器”和“学习”。这样两句话共享了“学习”这个词相似度被虚高。反过来“神经网络”如果被切成“神经”和“网络”和“神经科”就会因为共享“神经”而产生误判。我的做法是先构建领域词典再分词。具体步骤是拿一批领域语料用新词发现算法比如基于互信息和左右熵的方法挖出高频未登录词加入jieba的自定义词典。这一步做完相似度计算的准确率通常能提升5到10个百分点成本却很低。import jieba # 加载领域词典每行一个词 jieba.load_userdict(domain_dict.txt) text 深度学习模型的推理速度优化 words jieba.lcut(text) print(words) # 未加词典可能输出: [深度, 学习, 模型, 的, 推理, 速度, 优化] # 加了词典可能输出: [深度学习, 模型, 的, 推理速度, 优化]注意自定义词典不是越多越好。加太多长词会导致过度合并反而丢失细粒度信息。我的经验是控制在几千条以内只加真正高频且语义独立的词。3.2 停用词处理要分场景不能一刀切停用词表是另一个容易被无脑使用的东西。去重任务里去掉“的、了、是”确实能降噪但情感分析里“不”这种否定词一旦被当停用词去掉“好”和“不好”就变成一样了这是灾难。我的原则是相似度计算里停用词要谨慎处理。对于长文本主题相似度去掉停用词影响不大对于短文本尤其是包含否定、程度副词的句子停用词表要定制把“不、没、很、太”这类词保留下来。还有一个细节TF-IDF本身会给高频词很低的权重所以即使不去停用词它们的影响也有限。真正需要去停用词的场景是你要做词向量平均的时候因为平均会被高频虚词稀释语义。3.3 向量归一化一个被忽略的关键步骤算余弦相似度时很多人直接调cosine_similarity觉得库会处理。但如果你是自己实现或者做批量计算归一化能大幅提速且避免数值问题。余弦相似度的公式是点积除以模长乘积。如果预先对所有向量做L2归一化那么模长都是1余弦相似度就退化成纯点积计算量减少一半以上。在百万级向量检索里这个优化非常关键。import numpy as np def l2_normalize(vecs): norms np.linalg.norm(vecs, axis1, keepdimsTrue) # 防止除零 norms[norms 0] 1e-10 return vecs / norms # 归一化后余弦相似度就是矩阵点积 vecs_norm l2_normalize(vecs) sim_matrix vecs_norm vecs_norm.T提示归一化前一定要检查零向量。空文本或全停用词文本会产生零向量归一化时会除零导致nan进而污染整个相似度矩阵。这个bug我在线上遇到过排查了半天。3.4 TF-IDF的平滑与权重变体TF-IDF看着简单但IDF的计算方式有好几种变体效果差异不小。标准IDF是log(N/df)但当一个词在所有文档都出现时df等于NIDF为0这个词就完全没权重了。实际中常用平滑版本log((N1)/(df1))1避免极端情况。另外TF本身也有变体原始计数、对数TF1log(tf)、归一化TFtf/文档总词数。长文档里原始计数会让高频词权重过大所以长文本建议用对数TF或归一化TF。from sklearn.feature_extraction.text import TfidfVectorizer vectorizer TfidfVectorizer( tokenizerjieba.lcut, smooth_idfTrue, # 平滑IDF sublinear_tfTrue, # 对数TF norml2 # 输出L2归一化 )这三个参数是我做中文TF-IDF的默认配置实测比默认参数在相似度任务上更稳。4. 实操过程与核心环节实现4.1 从零实现一套TF-IDF相似度流水线光讲原理不够我把一套能直接跑的流水线写出来。这套代码我用于过文本去重和检索召回稳定可靠。第一步是分词和清洗。除了jieba分词还要处理全半角、大小写、特殊符号。import re import jieba def preprocess(text): # 全角转半角 text text.strip() text re.sub(r[---], lambda m: chr(ord(m.group()) - 0xFEE0), text) # 去除特殊符号保留中英文数字 text re.sub(r[^\u4e00-\u9fa5a-zA-Z0-9], , text) # 分词 words jieba.lcut(text) # 去停用词和单字 words [w for w in words if len(w) 1 and w not in stopwords] return .join(words)第二步是构建TF-IDF矩阵。注意这里我把分词结果用空格连接再交给TfidfVectorizer避免它自己再分一次。from sklearn.feature_extraction.text import TfidfVectorizer corpus [preprocess(t) for t in raw_texts] vectorizer TfidfVectorizer( smooth_idfTrue, sublinear_tfTrue, norml2, min_df2, # 忽略出现少于2次的词 max_df0.95 # 忽略出现在95%以上文档的词 ) tfidf_matrix vectorizer.fit_transform(corpus)min_df和max_df这两个参数很实用。min_df2能过滤掉拼写错误和噪声词max_df0.95能自动过滤掉几乎每篇都出现的词相当于自动停用词。第三步是相似度计算和Top-K检索。from sklearn.metrics.pairwise import cosine_similarity def find_similar(query, top_k5): query_vec vectorizer.transform([preprocess(query)]) sims cosine_similarity(query_vec, tfidf_matrix).flatten() top_idx sims.argsort()[::-1][:top_k] return [(idx, sims[idx]) for idx in top_idx]这套流水线在几万条数据上跑单次查询是毫秒级。数据量再大就要上倒排索引或向量检索库了。4.2 用Word2Vec做稠密表示并计算句子相似度TF-IDF搞不定同义改写这时候上Word2Vec。核心思路是先训练词向量再把句子里的词向量平均或加权平均得到句向量。训练词向量用gensim语料越大越好。我这里用领域语料训练一个100维的模型。from gensim.models import Word2Vec # sentences是分好词的列表的列表 model Word2Vec( sentences, vector_size100, window5, min_count2, workers4, epochs10, sg1 # 1表示Skip-gram0表示CBOW )sg1用Skip-gram对低频词效果更好但训练慢sg0用CBOW快但低频词差。小语料建议Skip-gram。句子向量用加权平均权重可以用TF-IDF这样重要词贡献更大。import numpy as np def sentence_vector(words, model, tfidf_dict): vecs [] weights [] for w in words: if w in model.wv: vecs.append(model.wv[w]) weights.append(tfidf_dict.get(w, 1.0)) if not vecs: return np.zeros(model.vector_size) vecs np.array(vecs) weights np.array(weights).reshape(-1, 1) return (vecs * weights).sum(axis0) / weights.sum()注意简单平均会被高频虚词稀释加权平均明显更好。但权重不要用原始TF-IDF值最好做归一化否则某些词权重过大会主导整个句向量。4.3 用预训练模型做语义相似度要捕捉深层语义得上预训练模型。但直接用BERT的[CLS]向量做相似度效果并不好因为BERT是在句子对分类任务上训练的[CLS]向量没有针对相似度优化。正确做法是用Sentence-BERT这类专门微调过的模型。from sentence_transformers import SentenceTransformer import numpy as np model SentenceTransformer(paraphrase-multilingual-MiniLM-L12-v2) sentences [怎么退订会员, 取消订阅的方法, 今天天气不错] embeddings model.encode(sentences, normalize_embeddingsTrue) sim embeddings embeddings.T print(sim) # 前两句相似度会明显高于与第三句的相似度normalize_embeddingsTrue直接输出归一化向量后面点积就是余弦相似度省事。这里有个选型经验多语言模型对中文效果通常不如中文专用模型但胜在通用。如果你的场景纯中文优先选在中文语料上微调过的句向量模型。模型大小也要权衡MiniLM系列只有几十兆推理快适合线上大模型效果好但延迟高。4.4 相似度阈值的标定方法这是最容易被拍脑袋决定的环节。很多人直接设0.8结果要么漏召回要么误召回。阈值必须基于标注数据标定。我的做法是人工标注一批正负样本对相似/不相似然后画相似度分布图找正负样本分布的交叠区域取使F1最大的阈值。from sklearn.metrics import f1_score import numpy as np # sims是相似度数组labels是0/1标签 best_thresh, best_f1 0, 0 for thresh in np.arange(0.5, 0.99, 0.01): preds (sims thresh).astype(int) f1 f1_score(labels, preds) if f1 best_f1: best_f1, best_thresh f1, thresh print(f最佳阈值: {best_thresh:.2f}, F1: {best_f1:.3f})不同模型、不同任务的阈值差异很大。TF-IDF的阈值通常偏高0.6到0.8稠密向量的阈值偏低0.7到0.9取决于模型。千万不要跨模型套用阈值。5. 常见问题与排查技巧实录5.1 相似度算出来全是高分或全是低分这是最常见的现象。原因通常有三个。第一是向量没归一化导致模长大的向量点积天然大。解决方法是统一做L2归一化。第二是停用词没处理干净大量虚词共享导致基线相似度虚高。检查方法是看两段完全不相关文本的相似度如果超过0.3说明噪声太大。第三是模型选错了。用TF-IDF做语义匹配相似度普遍偏低用未微调的BERT做字面匹配相似度普遍偏高。这时候要换模型而不是调阈值。5.2 中文短文本相似度特别不准短文本信息量少是相似度计算的老大难。我的经验是短文本不要用词袋模型直接上字符级n-gram或者句向量模型。字符级n-gram对短文本很有效因为它不依赖分词能捕捉“退订”和“取消订阅”里共享的“订”字。用sklearn的analyzerchar就能实现。vectorizer TfidfVectorizer(analyzerchar, ngram_range(2, 3))ngram_range(2,3)表示同时用2元和3元字符组合。这个配置在短文本去重上比词级TF-IDF更稳。5.3 相似度矩阵计算太慢或内存爆掉百万级文本两两算相似度矩阵是百万乘百万内存直接爆。解决办法是不要算全量矩阵用近似最近邻检索。常用方案是faiss或hnswlib把向量建索引查询时只算Top-K。这样内存和速度都能控制住。import faiss import numpy as np dim embeddings.shape[1] index faiss.IndexFlatIP(dim) # 内积索引配合归一化向量即余弦 index.add(embeddings.astype(float32)) query embeddings[0:1].astype(float32) D, I index.search(query, k5) print(I, D)IndexFlatIP是精确检索数据量再大可以换IndexIVFFlat做近似检索牺牲一点召回换速度。5.4 常见问题速查表现象可能原因排查方向解决相似度普遍偏高未归一化 / 停用词未处理看无关文本相似度L2归一化定制停用词相似度普遍偏低模型语义能力不足换稠密模型测试上句向量模型短文本不准词袋信息太少看分词结果字符n-gram或句向量计算慢/内存爆全量矩阵看数据规模近似最近邻检索结果不稳定零向量/nan检查向量模长处理零向量加epsilon同义词匹配不上稀疏表示局限看是否共享词换Word2Vec/BERT5.5 几个只有踩过才知道的坑第一个坑jieba的并行分词在多线程下会出问题。如果你在服务里用多线程调jieba记得先jieba.enable_parallel()或者加锁否则分词结果会错乱。我线上遇到过这个排查了很久。第二个坑TF-IDF的vocabulary在不同批次数据上不一致。如果你先fit一批数据再transform新数据新数据里的新词会被忽略。正确做法是fit一次后保存vectorizer后续都用同一个。跨批次场景要定期重新fit并做版本管理。第三个坑句向量模型对输入长度有限制。BERT类模型通常最大512个token超长文本会被截断导致后半段信息丢失。长文本要么分段算再聚合要么用支持长文本的模型。我一般对长文本分段算相似度再取最大值或加权平均。第四个坑相似度不等于相关性。两段文本字面很像但语义可能相反比如“我喜欢这个”和“我不喜欢这个”。否定词是相似度计算的盲区涉及情感、意图的任务要特别小心必要时引入否定检测。6. 不同场景下的方案组合建议把前面所有内容串起来我给几个典型场景的完整方案你可以直接抄。场景一内容去重。用字符级TF-IDF加余弦相似度阈值0.85以上判重。数据量大时先用SimHash做粗筛再用TF-IDF精排。这套组合我用于过百万级内容去重准确率和速度都够。场景二语义搜索。用句向量模型编码文档库和查询faiss建索引余弦相似度召回Top-K再用交叉编码器精排。粗排用双塔精排用交互式模型这是工业界标准做法。场景三短文本聚类。用Word2Vec加权平均或句向量先降维PCA或UMAP再聚类KMeans或HDBSCAN。短文本聚类对表示质量极其敏感建议先小规模验证再上量。场景四问答匹配。问题和答案分别编码算相似度召回候选再用精排模型打分。注意问题和答案的表述差异大一定要用语义模型而非字面模型。每个场景的参数都要基于自己的数据标定我给的只是起点。真正决定效果的是你对数据的理解和反复的实验。最后分享一个我自己的习惯每次做相似度任务我都会先手动看20对样本的相似度分数感受一下模型的“手感”。如果这20对的分数分布和我的直觉差太远那说明表示或预处理有问题先别急着调阈值。这个习惯帮我省下了大量盲目调参的时间。文本表示和相似度计算没有银弹但把每个环节的细节抠到位效果自然就上来了。

相关新闻

毕业论文神器!2026年超实用AI论文网站榜单,免费版也能写合规初稿

毕业论文神器!2026年超实用AI论文网站榜单,免费版也能写合规初稿

2026 年实测 10 款主流 AI 论文工具,千笔AI以全流程覆盖 语义级降重 免费查重领跑综合榜;ThouPen 稳坐留学生毕业全流程工具头把交椅;免费工具中DeepSeek Scholar、豆包学术版表现亮眼,30 分钟即可生成万字高质量初稿&#xff0…

2026/10/14 3:17:34 阅读更多 →
深入理解JavaScript作用域:从全局与局部变量到闭包

深入理解JavaScript作用域:从全局与局部变量到闭包

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 3:17:34 阅读更多 →
Cangjie VS Code 扩展完全使用指南:语言服务、构建、调试与命令行工具集成

Cangjie VS Code 扩展完全使用指南:语言服务、构建、调试与命令行工具集成

开发工具代码编辑器调试器 【免费下载链接】vscode_cangjie 项目地址: https://gitcode.com/Cangjie/vscode_cangjie 点击查看 免费下载 Cangjie(仓颉)语言官方为 Visual Studio Code 提供了名为 Cangjie 的扩展(本仓库即其开源实…

2026/10/14 3:16:33 阅读更多 →

最新新闻

办公设备管理系统OAMS源码实战:从台账混乱到扫码即用

办公设备管理系统OAMS源码实战:从台账混乱到扫码即用

简介:办公设备管理系统OAMS是一套面向企事业单位设备管理员与信息化开发者的全生命周期管理解决方案,覆盖采购、入库、领用、维修、报废等核心环节,适合需要落地资产台账、审批流程与统计报表的Java Web项目学习与二次开发。资源包共451个文件…

2026/10/14 4:00:41 阅读更多 →
SpringBoot2+Vue3流浪宠物管理系统:前后端分离架构实战解析

SpringBoot2+Vue3流浪宠物管理系统:前后端分离架构实战解析

1. 这个系统解决的是什么问题:流浪宠物救助的数字化盲区说实话,市面上打着"宠物管理系统"旗号的项目源码并不少,但真正能落地到流浪动物救助场景的却不多。大部分所谓管理系统要么是单纯的前端页面堆砌,要么后端只做了简…

2026/10/14 4:00:41 阅读更多 →
Matlab实现CNN-GRU多特征分类预测:从数据准备到模型落地

Matlab实现CNN-GRU多特征分类预测:从数据准备到模型落地

涉及到用Matlab做时序或者多维特征数据的分类预测时,CNN-GRU这个组合近年来出镜率非常高。一方面卷积结构擅长局部特征提取,另一方面GRU门控循环单元对序列依赖关系的建模能力又比普通前馈网络强很多,两个搭在一起后,既能处理多维…

2026/10/14 4:00:41 阅读更多 →
Claude Code + git worktree 多分支并行开发实战指南

Claude Code + git worktree 多分支并行开发实战指南

最近半年我一直在重度使用 Claude Code 做日常开发,手头同时维护好几个功能分支是常有的事。一开始我还是老一套:开一个终端窗口,在一个工作目录里反复git checkout切换分支,切来切去不仅脑子乱,更麻烦的是 Claude Cod…

2026/10/14 4:00:41 阅读更多 →
中小团队 CI/CD 工具选哪个:2026 年主流平台对比与 Gitee 方案解析

中小团队 CI/CD 工具选哪个:2026 年主流平台对比与 Gitee 方案解析

中小团队选择 CI/CD 工具的核心结论是:没有"最好"的工具,只有匹配团队规模、技术栈与合规要求的方案;据 JetBrains 2025 年开发者生态系统报告,GitHub Actions 以 33% 采用率领跑,Jenkins 以 28% 紧随其后&a…

2026/10/14 4:00:41 阅读更多 →
从零构建每日晨报:信息过滤系统的设计与实现

从零构建每日晨报:信息过滤系统的设计与实现

1. 一份“每日晨报”到底在解决什么问题每天早上七点半,我习惯性打开自己维护的一个小工具,屏幕上会弹出一份排版干净的简报:昨天圈子里发生了什么、有哪些值得点进去看的链接、今天有什么值得留意的节点。这份东西我管它叫“每日晨报”&…

2026/10/14 3:59:41 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →