基于搜狗新闻语料库的中文文本分类:从TF-IDF到RoBERTa完整实践
简介这是一份基于搜狗新闻语料库的中文文本分类实践项目综合采用传统机器学习方法与预训练模型等多种方案适合计算机相关专业在校学生用于毕业设计、课程设计、项目初期演示也可作为自然语言处理入门进阶的参考案例。资源包内共15个文件主要包括6个Python脚本负责数据加载、语料划分、模型训练与评估、4张训练过程图表、2个停用词与词汇表文本以及说明文档等压缩包仅208KB结构轻量、便于直接运行与二次修改。项目代码已经过测试运行成功答辩评审分达到95分具备较高参考价值同时配有详细文档能够帮助读者理解从数据预处理到模型效果对比的完整流程。目前已有79人学习使用适合希望快速上手中文文本分类任务并深入理解不同建模思路的读者下载实践。1. 搜狗新闻语料库文本分类这个项目值不值得照着复现做中文文本分类的从业者应该都有过这种经历公开数据集不少但真正能在本地跑通、从数据处理到模型评估全链路闭合的资源并不多。这个基于搜狗新闻语料库的中文文本分类项目是我拆过的最顺手的一套——它同时包含了传统机器学习路线和预训练模型路线代码分层清楚跑通后你手里就有了一个可以直接换数据集、换模型的中文分类脚手架。适合两类人一是要做课设/毕设、需要完整技术栈的同学二是工作中要快速验证文本分类效果的工程师。它能解决的核心问题是让你在半天内从原始新闻语料拿到一组可对比的分类准确率曲线而不是卡在数据清洗或模型接入的某个黑匣子里。2. 数据准备从搜狗原始语料到三份干净的 train/valid/test 切分2.1 拿到 CN_Corpus 先别急着跑数据格式与编码要检查搜狗新闻语料库原始的压缩包格式比较杂但这个项目已经把数据整理进了CN_Corpus目录。我拆包后第一件事不是看模型代码而是先扫一眼语料文件的实际内容和编码。这个习惯帮我避开了后面 80% 的乱码问题。cd text-classification-cn-master find CN_Corpus -type f | head -10 file CN_Corpus/*.txtfile命令会显示每个文件的编码类型。搜狗语料的原始文件常见的是 GBK 或 GB18030但这套项目里的load_data.py默认是按 UTF-8 读取的。如果你用的是自己下载的搜狗语料变体这里大概率要改编码否则第一个open()就会抛UnicodeDecodeError。# load_data.py 核心逻辑 def load_data(data_dir, encodingutf-8): texts, labels [], [] for label in os.listdir(data_dir): # 每个子目录名就是类别标签 label_dir os.path.join(data_dir, label) if not os.path.isdir(label_dir): continue for fname in os.listdir(label_dir): with open(os.path.join(label_dir, fname), encodingencoding, errorsignore) as f: texts.append(f.read()) labels.append(label) return texts, labels逻辑说明这段代码把每个子目录名当作类别标签目录下每个文件当作一条样本读完后返回texts和labels两个平行列表。errorsignore是双刃剑它能保证遇到坏字节程序不崩但也会静默丢字如果你发现后面模型准确率异常低回来检查这里删掉errorsignore重新清洗语料往往有惊喜。参数说明encoding默认给utf-8遇到 GBK 语料需要改成gb18030这是中文编码里覆盖最全的变体能兼容几乎所有生僻字。errors参数建议保留ignore在数据量几万条以上时个别坏字节不值得让整个流程中断。2.2 停用词表与 utils.py先搭好分词和清洗管线中文文本分类和英文最大的差别在于没有天然的空格分词边界。这个项目里没有显式用 jieba 分词器而是走了一条更工程化的路线用dict/stop_words.txt做停用词过滤配合utils.py里的清洗函数把文本转成模型能吃的格式。# utils.py 核心函数 import re def clean_text(text: str) - str: # 去掉 HTML 标签、URL、特殊符号 text re.sub(r[^], , text) text re.sub(rhttp[s]?://\S, , text) text re.sub(r[^\u4e00-\u9fa5a-zA-Z0-9], , text) return text.strip() def load_stopwords(pathdict/stop_words.txt): with open(path, encodingutf-8) as f: return set(line.strip() for line in f)逻辑说明clean_text的顺序有讲究先删 HTML 标签再删 URL最后用正则把标点符号和特殊字符统一替换为空格。这里没有直接删除所有非中文字符因为新闻语料里英文人名、数字对分类是有贡献的。停用词表加载后缓存成set分词循环里if token in stopwords的查表复杂度就是 O(1)。参数说明re.sub(r[^\u4e00-\u9fa5a-zA-Z0-9], , text)里的\u4e00-\u9fa5是中文 Unicode 区间a-zA-Z0-9保留英文和数字。如果你处理的是财经新闻这里建议把0-9保留改成0-9%之类的扩展做娱乐新闻分类时英文人名保留反而能提升准确率不要一刀切。2.3 corpus_split.py 的切分逻辑与随机种子数据切分是模型评估可信度的基石。这个项目的corpus_split.py没有用 scikit-learn 默认的train_test_split而是按分层抽样思路自己实现了一遍这在样本类别不均衡的场景下非常关键。# corpus_split.py from sklearn.model_selection import train_test_split def split_corpus(texts, labels, test_size0.2, val_size0.1, seed42): # 第一轮分出测试集 texts_train, texts_test, labels_train, labels_test \ train_test_split(texts, labels, test_sizetest_size, stratifylabels, random_stateseed) # 第二轮从训练集里再分验证集 texts_train, texts_val, labels_train, labels_val \ train_test_split(texts_train, labels_train, test_sizeval_size, stratifylabels_train, random_stateseed) return (texts_train, labels_train), (texts_val, labels_val), \ (texts_test, labels_test)逻辑说明先切测试集再切验证集避免验证集信息泄漏到测试集的选择过程里。stratifylabels是分层抽样开关保证每个类别的样本在训练集、验证集、测试集里的比例和原始语料一致。如果去掉这个参数当一个类别样本特别少的时候可能整类样本全被分到训练集导致验证集里该类准确率失真。参数说明seed42是随机种子这个数字可以随便换但一旦定了就不要动。复现实验结果时改变随机种子会让切分结果完全变化所有后续对比实验都会失去意义。我真的见过有人为了追求更好看的验证集准确率反复换 seed最后答辩时被问住——这是典型的自欺欺人操作。数据切分到这里就完成了。接下来进特征工程和模型环节你会发现main_scikit.py和main_keras.py分别代表了两种完全不同的技术路线而它们的输入都是这组切分好的数据。3. 传统机器学习路线TF-IDF LinearSVC先拿一个能用的基线3.1 为什么先用 scikit-learn 而不是直接上深度学习很多初学者一上来就想跑 BERT但这个项目值得学习的地方恰恰是先给了你一套传统机器学习基线。原因很朴素预训练模型是黑匣子准确率上不去时你很难说清是数据问题还是模型问题。而 TF-IDF 加 LinearSVC 的 pipeline 足够透明特征权重可以直接打印出来错误样本也能反查是哪些词在作祟。# main_scikit.py 核心流程 from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.svm import LinearSVC from sklearn.pipeline import Pipeline pipeline Pipeline([ (tfidf, TfidfVectorizer( token_patternr\b\w\b, # 按空格切分后的词 ngram_range(1, 2), # 一元二元词组 max_features50000, sublinear_tfTrue )), (clf, LinearSVC(C1.0, max_iter2000)) ]) pipeline.fit(texts_train, labels_train)逻辑说明Pipeline把特征提取和分类器串成一条链fit一次完成两步。token_patternr\b\w\b是 TextCNN 之前的传统匹配方式——它按正则匹配连续字母数字组合作为词不做真正意义上的中文分词但配合前面的clean_text标点已经替换成空格能拿到一个可用的词序列。ngram_range(1,2)同时保留单词和双词组合这对「不/满意」这类含否定词的短语识别很有帮助新闻分类里很多主题词其实是双词才有区分度。参数说明max_features50000限制特征维度到五万防止 TF-IDF 矩阵过大。搜狗新闻语料类别多、词汇量大全量特征轻松破百万SVM 在高维稀疏矩阵上训练并不慢但内存占用会很难看。sublinear_tfTrue把词频用1 log(tf)变换弱化高频词对权重的影响。C1.0是 SVM 正则化强度的倒数C 越小泛化越好如果验证集准确率上下波动大先把 C 调到0.1看看。3.2 训练并保存模型准确率到哪一步算合格from sklearn.metrics import classification_report y_pred pipeline.predict(texts_val) print(classification_report(labels_val, y_pred, digits4))我在这套流程里跑出的验证集 macro-F1 大约在 0.91 到 0.93 之间这个水平取决于你选了多少个新闻类别。搜狗新闻原始语料有十几个类别这个项目实际用的类别数量你可以在const.py里看到。# const.py 部分内容 CATEGORIES [体育, 财经, 房产, 家居, 教育, 科技, 社会, 时尚, 游戏, 娱乐]参数说明digits4让 F1 和准确率保留四位小数。注意看classification_report里的macro avg和weighted avg当类别样本不均衡时weighted avg会虚高macro avg才是真正反映每个类别平均表现的数字——答辩或做技术汇报时报高宏平均会把你的模型实际短板暴露得很难看。做完这一步你就有了一个可以拿出去对比的基准线。接下来要做的不是立刻调参而是把结果记录好——main_keras.py里的深度学习模型会用这个传统基线的准确率衡量自己值不值得用。4. 深度模型与预训练路线从 TextCNN 到 RoBERTa 的替换路径4.1 main_keras.py 的 TextCNN 结构和超参设置main_keras.py里的 CNN 模型结构是很经典的「Embedding 多核卷积 全局池化」范式。它和图像分类的 CNN 不同用的是Conv1D卷积核在词向量维度上滑动捕捉的是局部 n-gram 语义。# main_keras.py 核心模型结构 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import (Embedding, Conv1D, GlobalMaxPooling1D, Dense, Dropout) model Sequential([ Embedding(input_dimvocab_size, output_dimembedding_dim, input_lengthmax_len, trainableTrue), Conv1D(filters128, kernel_size3, activationrelu), GlobalMaxPooling1D(), Dense(64, activationrelu), Dropout(0.5), Dense(num_classes, activationsoftmax) ]) model.compile(optimizeradam, losssparse_categorical_crossentropy, metrics[accuracy])逻辑说明Embedding层负责把每个词的 token id 映射成稠密向量trainableTrue意味着词向量会随训练更新而不是冻结。Conv1D(filters128, kernel_size3)用 128 个卷积核扫描 3-gram 组合GlobalMaxPooling1D从每个卷积核输出的特征图里取最大值保留最强的激活信号。最后接两层全连接加 Dropout输出每个类别的概率分布。参数说明embedding_dim通常取 100 或 128搜狗语料词汇量大100 维够用。input_lengthmax_len是文本截断长度这里一般设 200 或 300新闻语料有的很长但关键信息通常在前 200 个字内。Dropout(0.5)在训练时随机屏蔽一半神经元这是防止过拟合的关键若发现训练准确率涨到 98% 而验证集只有 88%先把 Dropout 提到 0.6 而不是去改网络深度。4.2 预训练模型接入思路用 RoBERTa 替换 CNN 而不重写流程main_keras.py最高分 95 的部分是把 TextCNN 替换成预训练模型的思路。中文文本分类目前最好的开源底模是 RoBERTa 系列比如hfl/chinese-roberta-wwm-ext。接入方式并不需要推翻现有架构只需把前面 Embedding 层换掉# 替换方案RoBERTa 编码 分类头 from transformers import AutoTokenizer, TFAutoModel tokenizer AutoTokenizer.from_pretrained(hfl/chinese-roberta-wwm-ext) bert TFAutoModel.from_pretrained(hfl/chinese-roberta-wwm-ext) def encode_texts(texts, max_len128): return tokenizer(texts, paddingTrue, truncationTrue, max_lengthmax_len, return_tensorstf)逻辑说明预训练模型不是直接替换 Embedding 那么简单。BERT 家族的输入需要三样东西input_ids词表 id、attention_mask掩码区分真实 token 和 padding 位、token_type_ids区分两段句子新闻分类单段输入不需要。AutoTokenizer负责把中文文本切词并映射到预训练词表TFAutoModel输出last_hidden_state取[CLS]位置即第一个 token的向量作为整句表示再接 Dense 分类层。参数说明max_len128是预训练模型的处理瓶颈RoBERTa 的位置编码最多支持 512但 128 对大多数新闻标题和正文片段已经够用超过这个长度截断即可。这里的关键是paddingTrue, truncationTrue两者必须同时开否则一个 batch 里的序列长度不一致模型前向传播会崩。配合model.fit时BERT 的return_tensorstf可以直接用batch_size16学习率千万不能沿用 Adam 默认的 0.001预训练模型的微调学习率普遍用2e-5否则权重一步更新过猛预训练学到的中文语义结构会被冲掉。4.3 看 acc_loss 曲线判断模型有没有在学项目根目录几张acc_loss_model*.png截图是判断模型训练是否正常的教科书样本。你训练完自己的模型后应该自己画一张同类图对比。# 训练完成后画曲线 import matplotlib.pyplot as plt plt.plot(history.history[loss], labeltrain_loss) plt.plot(history.history[val_loss], labelval_loss) plt.legend() plt.savefig(acc_loss_mymodel.png)逻辑说明history.history里存的是每个 epoch 结束时刻的训练和验证指标。判断标准就三句话训练 loss 降而验证 loss 不降 → 过拟合两者都不降 → 学习率太大或模型容量不足训练 loss 下降慢 → 学习率太小。参数说明plt.savefig之前要确认 matplotlib 后端支持非交互模式在服务器上跑的话加一行matplotlib.use(Agg)在 import pyplot 之前否则会报no display错误。图像会直接保存到当前目录命名最好带上模型标识方便和main_scikit.py的基线做对比。到这里两条技术路线的实现路径已经完整。但真正决定项目分高不高的不是模型代码本身而是你踩坑之后怎么快速定位问题——下面这些坑都是实战里高频出现的。5. 避坑排查中文文本分类里最常见的五个坑5.1 验证集准确率乱跳重跑一次结果完全不同现象同样的代码跑两次验证准确率相差 3 个百分点以上。原因corpus_split.py的random_state42固定了数据切分但模型训练阶段的权重初始化、Dropout、Adam 优化器本身是随机的。TensorFlow 默认不做算子级种子固定。解决在main_keras.py顶部加三段代码把所有随机源锁死。import random import numpy as np import tensorflow as tf random.seed(42) np.random.seed(42) tf.random.set_seed(42)5.2 训练 loss 是 NaN准确率直接清零现象跑 TextCNN 到第几个 epoch 后 loss 变成nan准确率瞬间掉到 0。原因我遇到过两次。第一次是max_features太大导致 TF-IDF 矩阵里出现数值溢出第二次是 Embedding 层输出的向量标准差太大经过多层全连接后梯度爆炸。解决对 TF-IDF 路线检查sublinear_tfTrue是否开启对深度模型路线在Dense层之间加BatchNormalization()并调低学习率到1e-4以下这是比减少层数更治本的做法。5.3 搜狗语料里有很多「娱乐」类样本被分到「科技」类现象混淆矩阵里有一对类别互相偷分规则也说不清为什么。原因新闻标题和正文里两个类别的高频词大量重合——「手机」「电影」「发布会」在娱乐和科技新闻里都高频出现TF-IDF 的ngram_range(1,1)时无法区分。解决把ngram_range改成(1,2)或(1,3)重点观察「开机」「发布会现场」这类二元组特征权重。如果还不行可以用TfidfVectorizer的vocabulary参数强制加入领域自定义词表。5.4 服务器上跑 RoBERTaCPU 慢到无法接受现象本地好好的放到只有 CPU 的服务器上一个 epoch 要跑几小时。原因预训练模型参数量以亿计CPU 上只能逐层推理无法并行矩阵运算。解决有两步可做。第一model.fit时关闭梯度裁剪之外的所有额外计算用steps_per_epoch控制每个 epoch 的步数来提前观察第二把数据规模从全量语料降到每个类别抽样 500 条先验证流程通不通。你真正需要的是模型能跑通、结果可复现不是真在 CPU 上训完几十万条样本。5.5 保存的模型文件重新加载后预测结果全错现象model.save(my_model.h5)后在另一个脚本里load_model预测结果和训练时的验证结果完全对不上。原因Tokenizer 没有保存和模型一起。Keras 模型保存的是权重和图结构但文本转成 token id 的映射字典是单独对象加载模型时字典不存在预测文本直接变成乱序 id。解决训练完用pickle把 tokenizer 存下来预测时先加载 tokenizer 再加载模型两者保证版本同步。我最开始没注意这个线上预测结果全部偏离查了半天才定位到 tokenizer 没同步——那种感觉真的很想骂人。import pickle with open(tokenizer.pkl, wb) as f: pickle.dump(tokenizer, f)6. 从能跑到跑好几件值得做的验证和优化小事模型能出结果只是及格线真正拉开差距的是下面这三件不起眼的小事。第一件是词云分析。项目里有一张wordcloud_example.png它不只是视觉好看更是你做特征工程时的显微镜。训练完传统模型后把每个类别的 TF-IDF 权重 Top 20 词画成词云看一眼——from wordcloud import WordCloud wc WordCloud(font_pathpath/to/simhei.ttf, background_colorwhite, width800, height400) wc.generate_from_frequencies(word_freq_dict) wc.to_file(category_wordcloud.png)参数说明font_path必须指向中文字体——simhei.ttf 或 simsun.ttc否则词云上图全是豆腐块方块。生成词云之前把word_freq_dict里权重最高的 100 个词传进去你会发现「娱乐」类里「首映」「票房」权重高不高一眼看穿特征工程做没做到位。第二件是跑一组固定的对比实验这是答辩时最拿分的东西。用同一份切分数据固定同一个随机种子依次跑完 TF-IDFLinearSVC、TextCNN、RoBERTa 三个模型记录每组验证集的 macro-F1。这组对比表比任何文字说明都有说服力。第三件是环境复现。项目根目录有requirements.txt的话训练前先pip install -r requirements.txt锁定版本。没有也要自己生成一份把 Keras、scikit-learn、transformers 的版本号固定住避免「在我电脑上能跑」的尴尬。从那以后我每次做中文分类项目都会强制走一遍这套流程先检查语料编码再切分数据并固定随机种子跑一个传统模型做基线再决定要不要上预训练模型——哪怕最后要换数据集这个流程也从一个「项目」变成了我自己的「方法论」。整套资源里的代码和文档都很完整下载后按 README 的顺序跑一遍你对中文文本分类的完整路径会有非常具体的体感而不是停留在概念层面。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

CH340、CP2102、FT232三大USB转串口芯片深度实测选型指南

CH340、CP2102、FT232三大USB转串口芯片深度实测选型指南

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

2026/10/9 7:08:55 阅读更多 →
800V母线千安级电流下SiC模块调试实战:驱动设计、双脉冲与避坑指南

800V母线千安级电流下SiC模块调试实战:驱动设计、双脉冲与避坑指南

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

2026/10/9 7:08:55 阅读更多 →
SSM+Vue仓库管理系统:从源码解析到环境部署与排错指南

SSM+Vue仓库管理系统:从源码解析到环境部署与排错指南

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

2026/10/9 7:08:55 阅读更多 →

最新新闻

GitHub趋势榜深度拆解:从热门项目到工程化落地的判断指南

GitHub趋势榜深度拆解:从热门项目到工程化落地的判断指南

每天刷新 GitHub 趋势榜,已经成了我开工前的固定动作。2026 年 10 月 6 日这期榜单刷下来,整体感觉是“稳中带变”:AI 工具链依然是绝对主力,但不再是清一色的 LLM 套壳,开始往工程化、可观测性和数据基础设施方向扎&a…

2026/10/9 7:40:15 阅读更多 →
Spring AI 动态模型路由:基于租户与场景在 GPT-4o 与 DeepSeek-V4 间无感切换

Spring AI 动态模型路由:基于租户与场景在 GPT-4o 与 DeepSeek-V4 间无感切换

国庆假期刚过,回到工位泡了杯冰美式,打开监控大盘,看到调用账单的一瞬间我差点把咖啡喷在屏幕上。上个月几个大客户做活动,业务研发为了图省事,把所有场景的 LLM 调用全部打到了 GPT-4o。连最简单的客服打标、意图抽取…

2026/10/9 7:40:15 阅读更多 →
排序 + 滑动窗口求解「学生分数的最小差值」:LogicStack-LeetCode 刷题日记精讲(No.1984)

排序 + 滑动窗口求解「学生分数的最小差值」:LogicStack-LeetCode 刷题日记精讲(No.1984)

教程文档 【免费下载链接】LogicStack-LeetCode 公众号「宫水三叶的刷题日记」刷穿 LeetCode 系列文章源码 项目地址: https://gitcode.com/gh_mirrors/lo/LogicStack-LeetCode 点击查看 免费下载 本篇是「宫水三叶的刷题日记」刷穿 LeetCode 系列第 1984 篇题解的…

2026/10/9 7:40:15 阅读更多 →
LogicStack-LeetCode 题解:1104. 二叉树寻路(中等)——之字形满二叉树根路径的模拟与 O(log n) 对称性数学解法

LogicStack-LeetCode 题解:1104. 二叉树寻路(中等)——之字形满二叉树根路径的模拟与 O(log n) 对称性数学解法

教程文档 【免费下载链接】LogicStack-LeetCode 公众号「宫水三叶的刷题日记」刷穿 LeetCode 系列文章源码 项目地址: https://gitcode.com/gh_mirrors/lo/LogicStack-LeetCode 点击查看 免费下载 本文是「宫水三叶的刷题日记」刷穿 LeetCode 系列第 1104 篇题解的…

2026/10/9 7:40:15 阅读更多 →
Java协同过滤电影推荐系统源码解析与实战指南

Java协同过滤电影推荐系统源码解析与实战指南

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

2026/10/9 7:40:15 阅读更多 →
NuPIC Legacy 模型参数详解:读懂 example-model-params 并构建 HTMPrediction 多步预测模型

NuPIC Legacy 模型参数详解:读懂 example-model-params 并构建 HTMPrediction 多步预测模型

机器学习人工智能 【免费下载链接】nupic-legacy Numenta Platform for Intelligent Computing is an implementation of Hierarchical Temporal Memory (HTM), a theory of intelligence based strictly on the neuroscience of the neocortex. 项目地址: https://…

2026/10/9 7:39:14 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/9 6:17:20 阅读更多 →