[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-gaussic--text-classification-cnn-rnn":3,"tool-gaussic--text-classification-cnn-rnn":61},[4,18,26,36,44,52],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",141543,2,"2026-04-06T11:32:54",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":10,"last_commit_at":58,"category_tags":59,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,60],"视频",{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":75,"owner_location":76,"owner_email":77,"owner_twitter":75,"owner_website":78,"owner_url":79,"languages":80,"stars":89,"forks":90,"last_commit_at":91,"license":92,"difficulty_score":32,"env_os":93,"env_gpu":93,"env_ram":93,"env_deps":94,"category_tags":102,"github_topics":103,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":111,"updated_at":112,"faqs":113,"releases":153},4425,"gaussic\u002Ftext-classification-cnn-rnn","text-classification-cnn-rnn","CNN-RNN中文文本分类，基于TensorFlow","text-classification-cnn-rnn 是一个基于 TensorFlow 打造的开源项目，专注于利用深度学习技术进行中文文本自动分类。它主要解决了如何从海量中文新闻、文章或评论中快速、准确地识别内容类别（如体育、财经、科技等）的难题，将非结构化的文本数据转化为有序的分类结果。\n\n该项目非常适合人工智能开发者、算法研究人员以及需要构建文本分析功能的技术团队使用。其核心亮点在于创新性地结合了卷积神经网络（CNN）与循环神经网络（RNN）的优势：利用字符级 CNN 高效提取局部关键词特征，同时借助 RNN 捕捉文本前后的语义依赖关系。这种混合架构在 THUCNews 数据集上的实测表现优异，验证集准确率可超过 94%。\n\n此外，text-classification-cnn-rnn 提供了完整且清晰的项目结构，涵盖从数据预处理、词汇表构建到模型训练与评估的全流程代码。项目配置灵活，支持自定义词向量维度、卷积核大小等关键参数，并兼容 Python 2\u002F3 环境。对于希望深入理解自然语言处理原理，或寻求高性能中文分类基线模型的用户而言，这是一个极具参考价值和实用性的工具。","# Text Classification with CNN and RNN\n\n使用卷积神经网络以及循环神经网络进行中文文本分类\n\nCNN做句子分类的论文可以参看: [Convolutional Neural Networks for Sentence Classification](https:\u002F\u002Farxiv.org\u002Fabs\u002F1408.5882)\n\n还可以去读dennybritz大牛的博客：[Implementing a CNN for Text Classification in TensorFlow](http:\u002F\u002Fwww.wildml.com\u002F2015\u002F12\u002Fimplementing-a-cnn-for-text-classification-in-tensorflow\u002F)\n\n以及字符级CNN的论文：[Character-level Convolutional Networks for Text Classification](https:\u002F\u002Farxiv.org\u002Fabs\u002F1509.01626)\n\n本文是基于TensorFlow在中文数据集上的简化实现，使用了字符级CNN和RNN对中文文本进行分类，达到了较好的效果。\n\n文中所使用的Conv1D与论文中有些不同，详细参考官方文档：[tf.nn.conv1d](https:\u002F\u002Fwww.tensorflow.org\u002Fapi_docs\u002Fpython\u002Ftf\u002Fnn\u002Fconv1d)\n\n## 环境\n\n- Python 2\u002F3 (感谢[howie.hu](https:\u002F\u002Fgithub.com\u002Fhowie6879)调试Python2环境)\n- TensorFlow 1.3以上\n- numpy\n- scikit-learn\n- scipy\n\n## 数据集\n\n使用THUCNews的一个子集进行训练与测试，数据集请自行到[THUCTC：一个高效的中文文本分类工具包](http:\u002F\u002Fthuctc.thunlp.org\u002F)下载，请遵循数据提供方的开源协议。\n\n本次训练使用了其中的10个分类，每个分类6500条数据。\n\n类别如下：\n\n```\n体育, 财经, 房产, 家居, 教育, 科技, 时尚, 时政, 游戏, 娱乐\n```\n\n这个子集可以在此下载：链接: https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1hugrfRu 密码: qfud\n\n数据集划分如下：\n\n- 训练集: 5000*10\n- 验证集: 500*10\n- 测试集: 1000*10\n\n从原数据集生成子集的过程请参看`helper`下的两个脚本。其中，`copy_data.sh`用于从每个分类拷贝6500个文件，`cnews_group.py`用于将多个文件整合到一个文件中。执行该文件后，得到三个数据文件：\n\n- cnews.train.txt: 训练集(50000条)\n- cnews.val.txt: 验证集(5000条)\n- cnews.test.txt: 测试集(10000条)\n\n## 预处理\n\n`data\u002Fcnews_loader.py`为数据的预处理文件。\n\n- `read_file()`: 读取文件数据;\n- `build_vocab()`: 构建词汇表，使用字符级的表示，这一函数会将词汇表存储下来，避免每一次重复处理;\n- `read_vocab()`: 读取上一步存储的词汇表，转换为`{词：id}`表示;\n- `read_category()`: 将分类目录固定，转换为`{类别: id}`表示;\n- `to_words()`: 将一条由id表示的数据重新转换为文字;\n- `process_file()`: 将数据集从文字转换为固定长度的id序列表示;\n- `batch_iter()`: 为神经网络的训练准备经过shuffle的批次的数据。\n\n经过数据预处理，数据的格式如下：\n\n| Data | Shape | Data | Shape |\n| :---------- | :---------- | :---------- | :---------- |\n| x_train | [50000, 600] | y_train | [50000, 10] |\n| x_val | [5000, 600] | y_val | [5000, 10] |\n| x_test | [10000, 600] | y_test | [10000, 10] |\n\n## CNN卷积神经网络\n\n### 配置项\n\nCNN可配置的参数如下所示，在`cnn_model.py`中。\n\n```python\nclass TCNNConfig(object):\n    \"\"\"CNN配置参数\"\"\"\n\n    embedding_dim = 64      # 词向量维度\n    seq_length = 600        # 序列长度\n    num_classes = 10        # 类别数\n    num_filters = 128        # 卷积核数目\n    kernel_size = 5         # 卷积核尺寸\n    vocab_size = 5000       # 词汇表达小\n\n    hidden_dim = 128        # 全连接层神经元\n\n    dropout_keep_prob = 0.5 # dropout保留比例\n    learning_rate = 1e-3    # 学习率\n\n    batch_size = 64         # 每批训练大小\n    num_epochs = 10         # 总迭代轮次\n\n    print_per_batch = 100    # 每多少轮输出一次结果\n    save_per_batch = 10      # 每多少轮存入tensorboard\n```\n\n### CNN模型\n\n具体参看`cnn_model.py`的实现。\n\n大致结构如下：\n\n![images\u002Fcnn_architecture](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgaussic_text-classification-cnn-rnn_readme_42bb354c52ee.png)\n\n### 训练与验证\n\n运行 `python run_cnn.py train`，可以开始训练。\n\n> 若之前进行过训练，请把tensorboard\u002Ftextcnn删除，避免TensorBoard多次训练结果重叠。\n\n```\nConfiguring CNN model...\nConfiguring TensorBoard and Saver...\nLoading training and validation data...\nTime usage: 0:00:14\nTraining and evaluating...\nEpoch: 1\nIter:      0, Train Loss:    2.3, Train Acc:  10.94%, Val Loss:    2.3, Val Acc:   8.92%, Time: 0:00:01 *\nIter:    100, Train Loss:   0.88, Train Acc:  73.44%, Val Loss:    1.2, Val Acc:  68.46%, Time: 0:00:04 *\nIter:    200, Train Loss:   0.38, Train Acc:  92.19%, Val Loss:   0.75, Val Acc:  77.32%, Time: 0:00:07 *\nIter:    300, Train Loss:   0.22, Train Acc:  92.19%, Val Loss:   0.46, Val Acc:  87.08%, Time: 0:00:09 *\nIter:    400, Train Loss:   0.24, Train Acc:  90.62%, Val Loss:    0.4, Val Acc:  88.62%, Time: 0:00:12 *\nIter:    500, Train Loss:   0.16, Train Acc:  96.88%, Val Loss:   0.36, Val Acc:  90.38%, Time: 0:00:15 *\nIter:    600, Train Loss:  0.084, Train Acc:  96.88%, Val Loss:   0.35, Val Acc:  91.36%, Time: 0:00:17 *\nIter:    700, Train Loss:   0.21, Train Acc:  93.75%, Val Loss:   0.26, Val Acc:  92.58%, Time: 0:00:20 *\nEpoch: 2\nIter:    800, Train Loss:   0.07, Train Acc:  98.44%, Val Loss:   0.24, Val Acc:  94.12%, Time: 0:00:23 *\nIter:    900, Train Loss:  0.092, Train Acc:  96.88%, Val Loss:   0.27, Val Acc:  92.86%, Time: 0:00:25\nIter:   1000, Train Loss:   0.17, Train Acc:  95.31%, Val Loss:   0.28, Val Acc:  92.82%, Time: 0:00:28\nIter:   1100, Train Loss:    0.2, Train Acc:  93.75%, Val Loss:   0.23, Val Acc:  93.26%, Time: 0:00:31\nIter:   1200, Train Loss:  0.081, Train Acc:  98.44%, Val Loss:   0.25, Val Acc:  92.96%, Time: 0:00:33\nIter:   1300, Train Loss:  0.052, Train Acc: 100.00%, Val Loss:   0.24, Val Acc:  93.58%, Time: 0:00:36\nIter:   1400, Train Loss:    0.1, Train Acc:  95.31%, Val Loss:   0.22, Val Acc:  94.12%, Time: 0:00:39\nIter:   1500, Train Loss:   0.12, Train Acc:  98.44%, Val Loss:   0.23, Val Acc:  93.58%, Time: 0:00:41\nEpoch: 3\nIter:   1600, Train Loss:    0.1, Train Acc:  96.88%, Val Loss:   0.26, Val Acc:  92.34%, Time: 0:00:44\nIter:   1700, Train Loss:  0.018, Train Acc: 100.00%, Val Loss:   0.22, Val Acc:  93.46%, Time: 0:00:47\nIter:   1800, Train Loss:  0.036, Train Acc: 100.00%, Val Loss:   0.28, Val Acc:  92.72%, Time: 0:00:50\nNo optimization for a long time, auto-stopping...\n```\n\n在验证集上的最佳效果为94.12%，且只经过了3轮迭代就已经停止。\n\n准确率和误差如图所示：\n\n![images](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgaussic_text-classification-cnn-rnn_readme_a1c4150cf95b.png)\n\n\n### 测试\n\n运行 `python run_cnn.py test` 在测试集上进行测试。\n\n```\nConfiguring CNN model...\nLoading test data...\nTesting...\nTest Loss:   0.14, Test Acc:  96.04%\nPrecision, Recall and F1-Score...\n             precision    recall  f1-score   support\n\n         体育       0.99      0.99      0.99      1000\n         财经       0.96      0.99      0.97      1000\n         房产       1.00      1.00      1.00      1000\n         家居       0.95      0.91      0.93      1000\n         教育       0.95      0.89      0.92      1000\n         科技       0.94      0.97      0.95      1000\n         时尚       0.95      0.97      0.96      1000\n         时政       0.94      0.94      0.94      1000\n         游戏       0.97      0.96      0.97      1000\n         娱乐       0.95      0.98      0.97      1000\n\navg \u002F total       0.96      0.96      0.96     10000\n\nConfusion Matrix...\n[[991   0   0   0   2   1   0   4   1   1]\n [  0 992   0   0   2   1   0   5   0   0]\n [  0   1 996   0   1   1   0   0   0   1]\n [  0  14   0 912   7  15   9  29   3  11]\n [  2   9   0  12 892  22  18  21  10  14]\n [  0   0   0  10   1 968   4   3  12   2]\n [  1   0   0   9   4   4 971   0   2   9]\n [  1  16   0   4  18  12   1 941   1   6]\n [  2   4   1   5   4   5  10   1 962   6]\n [  1   0   1   6   4   3   5   0   1 979]]\nTime usage: 0:00:05\n```\n\n在测试集上的准确率达到了96.04%，且各类的precision, recall和f1-score都超过了0.9。\n\n从混淆矩阵也可以看出分类效果非常优秀。\n\n## RNN循环神经网络\n\n### 配置项\n\nRNN可配置的参数如下所示，在`rnn_model.py`中。\n\n```python\nclass TRNNConfig(object):\n    \"\"\"RNN配置参数\"\"\"\n\n    # 模型参数\n    embedding_dim = 64      # 词向量维度\n    seq_length = 600        # 序列长度\n    num_classes = 10        # 类别数\n    vocab_size = 5000       # 词汇表达小\n\n    num_layers= 2           # 隐藏层层数\n    hidden_dim = 128        # 隐藏层神经元\n    rnn = 'gru'             # lstm 或 gru\n\n    dropout_keep_prob = 0.8 # dropout保留比例\n    learning_rate = 1e-3    # 学习率\n\n    batch_size = 128         # 每批训练大小\n    num_epochs = 10          # 总迭代轮次\n\n    print_per_batch = 100    # 每多少轮输出一次结果\n    save_per_batch = 10      # 每多少轮存入tensorboard\n```\n\n### RNN模型\n\n具体参看`rnn_model.py`的实现。\n\n大致结构如下：\n\n![images\u002Frnn_architecture](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgaussic_text-classification-cnn-rnn_readme_040bf8ecc8e0.png)\n\n### 训练与验证\n\n> 这部分的代码与 run_cnn.py极为相似，只需要将模型和部分目录稍微修改。\n\n运行 `python run_rnn.py train`，可以开始训练。\n\n> 若之前进行过训练，请把tensorboard\u002Ftextrnn删除，避免TensorBoard多次训练结果重叠。\n\n```\nConfiguring RNN model...\nConfiguring TensorBoard and Saver...\nLoading training and validation data...\nTime usage: 0:00:14\nTraining and evaluating...\nEpoch: 1\nIter:      0, Train Loss:    2.3, Train Acc:   8.59%, Val Loss:    2.3, Val Acc:  11.96%, Time: 0:00:08 *\nIter:    100, Train Loss:   0.95, Train Acc:  64.06%, Val Loss:    1.3, Val Acc:  53.06%, Time: 0:01:15 *\nIter:    200, Train Loss:   0.61, Train Acc:  79.69%, Val Loss:   0.94, Val Acc:  69.88%, Time: 0:02:22 *\nIter:    300, Train Loss:   0.49, Train Acc:  85.16%, Val Loss:   0.63, Val Acc:  81.44%, Time: 0:03:29 *\nEpoch: 2\nIter:    400, Train Loss:   0.23, Train Acc:  92.97%, Val Loss:    0.6, Val Acc:  82.86%, Time: 0:04:36 *\nIter:    500, Train Loss:   0.27, Train Acc:  92.97%, Val Loss:   0.47, Val Acc:  86.72%, Time: 0:05:43 *\nIter:    600, Train Loss:   0.13, Train Acc:  98.44%, Val Loss:   0.43, Val Acc:  87.46%, Time: 0:06:50 *\nIter:    700, Train Loss:   0.24, Train Acc:  91.41%, Val Loss:   0.46, Val Acc:  87.12%, Time: 0:07:57\nEpoch: 3\nIter:    800, Train Loss:   0.11, Train Acc:  96.09%, Val Loss:   0.49, Val Acc:  87.02%, Time: 0:09:03\nIter:    900, Train Loss:   0.15, Train Acc:  96.09%, Val Loss:   0.55, Val Acc:  85.86%, Time: 0:10:10\nIter:   1000, Train Loss:   0.17, Train Acc:  96.09%, Val Loss:   0.43, Val Acc:  89.44%, Time: 0:11:18 *\nIter:   1100, Train Loss:   0.25, Train Acc:  93.75%, Val Loss:   0.42, Val Acc:  88.98%, Time: 0:12:25\nEpoch: 4\nIter:   1200, Train Loss:   0.14, Train Acc:  96.09%, Val Loss:   0.39, Val Acc:  89.82%, Time: 0:13:32 *\nIter:   1300, Train Loss:    0.2, Train Acc:  96.09%, Val Loss:   0.43, Val Acc:  88.68%, Time: 0:14:38\nIter:   1400, Train Loss:  0.012, Train Acc: 100.00%, Val Loss:   0.37, Val Acc:  90.58%, Time: 0:15:45 *\nIter:   1500, Train Loss:   0.15, Train Acc:  96.88%, Val Loss:   0.39, Val Acc:  90.58%, Time: 0:16:52\nEpoch: 5\nIter:   1600, Train Loss:  0.075, Train Acc:  97.66%, Val Loss:   0.41, Val Acc:  89.90%, Time: 0:17:59\nIter:   1700, Train Loss:  0.042, Train Acc:  98.44%, Val Loss:   0.41, Val Acc:  90.08%, Time: 0:19:06\nIter:   1800, Train Loss:   0.08, Train Acc:  97.66%, Val Loss:   0.38, Val Acc:  91.36%, Time: 0:20:13 *\nIter:   1900, Train Loss:  0.089, Train Acc:  98.44%, Val Loss:   0.39, Val Acc:  90.18%, Time: 0:21:20\nEpoch: 6\nIter:   2000, Train Loss:  0.092, Train Acc:  96.88%, Val Loss:   0.36, Val Acc:  91.42%, Time: 0:22:27 *\nIter:   2100, Train Loss:  0.062, Train Acc:  98.44%, Val Loss:   0.39, Val Acc:  90.56%, Time: 0:23:34\nIter:   2200, Train Loss:  0.053, Train Acc:  98.44%, Val Loss:   0.39, Val Acc:  90.02%, Time: 0:24:41\nIter:   2300, Train Loss:   0.12, Train Acc:  96.09%, Val Loss:   0.37, Val Acc:  90.84%, Time: 0:25:48\nEpoch: 7\nIter:   2400, Train Loss:  0.014, Train Acc: 100.00%, Val Loss:   0.41, Val Acc:  90.38%, Time: 0:26:55\nIter:   2500, Train Loss:   0.14, Train Acc:  96.88%, Val Loss:   0.37, Val Acc:  91.22%, Time: 0:28:01\nIter:   2600, Train Loss:   0.11, Train Acc:  96.88%, Val Loss:   0.43, Val Acc:  89.76%, Time: 0:29:08\nIter:   2700, Train Loss:  0.089, Train Acc:  97.66%, Val Loss:   0.37, Val Acc:  91.18%, Time: 0:30:15\nEpoch: 8\nIter:   2800, Train Loss: 0.0081, Train Acc: 100.00%, Val Loss:   0.44, Val Acc:  90.66%, Time: 0:31:22\nIter:   2900, Train Loss:  0.017, Train Acc: 100.00%, Val Loss:   0.44, Val Acc:  89.62%, Time: 0:32:29\nIter:   3000, Train Loss:  0.061, Train Acc:  96.88%, Val Loss:   0.43, Val Acc:  90.04%, Time: 0:33:36\nNo optimization for a long time, auto-stopping...\n```\n\n在验证集上的最佳效果为91.42%，经过了8轮迭代停止，速度相比CNN慢很多。\n\n准确率和误差如图所示：\n\n![images](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgaussic_text-classification-cnn-rnn_readme_0c0a9003a734.png)\n\n\n### 测试\n\n运行 `python run_rnn.py test` 在测试集上进行测试。\n\n```\nTesting...\nTest Loss:   0.21, Test Acc:  94.22%\nPrecision, Recall and F1-Score...\n             precision    recall  f1-score   support\n\n         体育       0.99      0.99      0.99      1000\n         财经       0.91      0.99      0.95      1000\n         房产       1.00      1.00      1.00      1000\n         家居       0.97      0.73      0.83      1000\n         教育       0.91      0.92      0.91      1000\n         科技       0.93      0.96      0.94      1000\n         时尚       0.89      0.97      0.93      1000\n         时政       0.93      0.93      0.93      1000\n         游戏       0.95      0.97      0.96      1000\n         娱乐       0.97      0.96      0.97      1000\n\navg \u002F total       0.94      0.94      0.94     10000\n\nConfusion Matrix...\n[[988   0   0   0   4   0   2   0   5   1]\n [  0 990   1   1   1   1   0   6   0   0]\n [  0   2 996   1   1   0   0   0   0   0]\n [  2  71   1 731  51  20  88  28   3   5]\n [  1   3   0   7 918  23   4  31   9   4]\n [  1   3   0   3   0 964   3   5  21   0]\n [  1   0   1   7   1   3 972   0   6   9]\n [  0  16   0   0  22  26   0 931   2   3]\n [  2   3   0   0   2   2  12   0 972   7]\n [  0   3   1   1   7   3  11   5   9 960]]\nTime usage: 0:00:33\n```\n\n在测试集上的准确率达到了94.22%，且各类的precision, recall和f1-score，除了家居这一类别，都超过了0.9。\n\n从混淆矩阵可以看出分类效果非常优秀。\n\n对比两个模型，可见RNN除了在家居分类的表现不是很理想，其他几个类别较CNN差别不大。\n\n还可以通过进一步的调节参数，来达到更好的效果。\n\n\n## 预测\n\n为方便预测，repo 中 `predict.py` 提供了 CNN 模型的预测方法。\n","# 使用CNN和RNN进行文本分类\n\n使用卷积神经网络以及循环神经网络进行中文文本分类\n\nCNN做句子分类的论文可以参看: [Convolutional Neural Networks for Sentence Classification](https:\u002F\u002Farxiv.org\u002Fabs\u002F1408.5882)\n\n还可以去读dennybritz大牛的博客：[Implementing a CNN for Text Classification in TensorFlow](http:\u002F\u002Fwww.wildml.com\u002F2015\u002F12\u002Fimplementing-a-cnn-for-text-classification-in-tensorflow\u002F)\n\n以及字符级CNN的论文：[Character-level Convolutional Networks for Text Classification](https:\u002F\u002Farxiv.org\u002Fabs\u002F1509.01626)\n\n本文是基于TensorFlow在中文数据集上的简化实现，使用了字符级CNN和RNN对中文文本进行分类，达到了较好的效果。\n\n文中所使用的Conv1D与论文中有些不同，详细参考官方文档：[tf.nn.conv1d](https:\u002F\u002Fwww.tensorflow.org\u002Fapi_docs\u002Fpython\u002Ftf\u002Fnn\u002Fconv1d)\n\n## 环境\n\n- Python 2\u002F3 (感谢[howie.hu](https:\u002F\u002Fgithub.com\u002Fhowie6879)调试Python2环境)\n- TensorFlow 1.3以上\n- numpy\n- scikit-learn\n- scipy\n\n## 数据集\n\n使用THUCNews的一个子集进行训练与测试，数据集请自行到[THUCTC：一个高效的中文文本分类工具包](http:\u002F\u002Fthuctc.thunlp.org\u002F)下载，请遵循数据提供方的开源协议。\n\n本次训练使用了其中的10个分类，每个分类6500条数据。\n\n类别如下：\n\n```\n体育, 财经, 房产, 家居, 教育, 科技, 时尚, 时政, 游戏, 娱乐\n```\n\n这个子集可以在此下载：链接: https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1hugrfRu 密码: qfud\n\n数据集划分如下：\n\n- 训练集: 5000*10\n- 验证集: 500*10\n- 测试集: 1000*10\n\n从原数据集生成子集的过程请参看`helper`下的两个脚本。其中，`copy_data.sh`用于从每个分类拷贝6500个文件，`cnews_group.py`用于将多个文件整合到一个文件中。执行该文件后，得到三个数据文件：\n\n- cnews.train.txt: 训练集(50000条)\n- cnews.val.txt: 验证集(5000条)\n- cnews.test.txt: 测试集(10000条)\n\n## 预处理\n\n`data\u002Fcnews_loader.py`为数据的预处理文件。\n\n- `read_file()`: 读取文件数据;\n- `build_vocab()`: 构建词汇表，使用字符级的表示，这一函数会将词汇表存储下来，避免每一次重复处理;\n- `read_vocab()`: 读取上一步存储的词汇表，转换为`{词：id}`表示;\n- `read_category()`: 将分类目录固定，转换为`{类别: id}`表示;\n- `to_words()`: 将一条由id表示的数据重新转换为文字;\n- `process_file()`: 将数据集从文字转换为固定长度的id序列表示;\n- `batch_iter()`: 为神经网络的训练准备经过shuffle的批次的数据。\n\n经过数据预处理，数据的格式如下：\n\n| Data | Shape | Data | Shape |\n| :---------- | :---------- | :---------- | :---------- |\n| x_train | [50000, 600] | y_train | [50000, 10] |\n| x_val | [5000, 600] | y_val | [5000, 10] |\n| x_test | [10000, 600] | y_test | [10000, 10] |\n\n## CNN卷积神经网络\n\n### 配置项\n\nCNN可配置的参数如下所示，在`cnn_model.py`中。\n\n```python\nclass TCNNConfig(object):\n    \"\"\"CNN配置参数\"\"\"\n\n    embedding_dim = 64      # 词向量维度\n    seq_length = 600        # 序列长度\n    num_classes = 10        # 类别数\n    num_filters = 128        # 卷积核数目\n    kernel_size = 5         # 卷积核尺寸\n    vocab_size = 5000       # 词汇表达小\n\n    hidden_dim = 128        # 全连接层神经元\n\n    dropout_keep_prob = 0.5 # dropout保留比例\n    learning_rate = 1e-3    # 学习率\n\n    batch_size = 64         # 每批训练大小\n    num_epochs = 10         # 总迭代轮次\n\n    print_per_batch = 100    # 每多少轮输出一次结果\n    save_per_batch = 10      # 每多少轮存入tensorboard\n```\n\n### CNN模型\n\n具体参看`cnn_model.py`的实现。\n\n大致结构如下：\n\n![images\u002Fcnn_architecture](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgaussic_text-classification-cnn-rnn_readme_42bb354c52ee.png)\n\n### 训练与验证\n\n运行 `python run_cnn.py train`，可以开始训练。\n\n> 若之前进行过训练，请把tensorboard\u002Ftextcnn删除，避免TensorBoard多次训练结果重叠。\n\n```\nConfiguring CNN model...\nConfiguring TensorBoard and Saver...\nLoading training and validation data...\nTime usage: 0:00:14\nTraining and evaluating...\nEpoch: 1\nIter:      0, Train Loss:    2.3, Train Acc:  10.94%, Val Loss:    2.3, Val Acc:   8.92%, Time: 0:00:01 *\nIter:    100, Train Loss:   0.88, Train Acc:  73.44%, Val Loss:    1.2, Val Acc:  68.46%, Time: 0:00:04 *\nIter:    200, Train Loss:   0.38, Train Acc:  92.19%, Val Loss:   0.75, Val Acc:  77.32%, Time: 0:00:07 *\nIter:    300, Train Loss:   0.22, Train Acc:  92.19%, Val Loss:   0.46, Val Acc:  87.08%, Time: 0:00:09 *\nIter:    400, Train Loss:   0.24, Train Acc:  90.62%, Val Loss:    0.4, Val Acc:  88.62%, Time: 0:00:12 *\nIter:    500, Train Loss:   0.16, Train Acc:  96.88%, Val Loss:   0.36, Val Acc:  90.38%, Time: 0:00:15 *\nIter:    600, Train Loss:  0.084, Train Acc:  96.88%, Val Loss:   0.35, Val Acc:  91.36%, Time: 0:00:17 *\nIter:    700, Train Loss:   0.21, Train Acc:  93.75%, Val Loss:   0.26, Val Acc:  92.58%, Time: 0:00:20 *\nEpoch: 2\nIter:    800, Train Loss:   0.07, Train Acc:  98.44%, Val Loss:   0.24, Val Acc:  94.12%, Time: 0:00:23 *\nIter:    900, Train Loss:  0.092, Train Acc:  96.88%, Val Loss:   0.27, Val Acc:  92.86%, Time: 0:00:25\nIter:   1000, Train Loss:   0.17, Train Acc:  95.31%, Val Loss:   0.28, Val Acc:  92.82%, Time: 0:00:28\nIter:   1100, Train Loss:    0.2, Train Acc:  93.75%, Val Loss:   0.23, Val Acc:  93.26%, Time: 0:00:31\nIter:   1200, Train Loss:  0.081, Train Acc:  98.44%, Val Loss:   0.25, Val Acc:  92.96%, Time: 0:00:33\nIter:   1300, Train Loss:  0.052, Train Acc: 100.00%, Val Loss:   0.24, Val Acc:  93.58%, Time: 0:00:36\nIter:   1400, Train Loss:    0.1, Train Acc:  95.31%, Val Loss:   0.22, Val Acc:  94.12%, Time: 0:00:39\nIter:   1500, Train Loss:   0.12, Train Acc:  98.44%, Val Loss:   0.23, Val Acc:  93.58%, Time: 0:00:41\nEpoch: 3\nIter:   1600, Train Loss:    0.1, Train Acc:  96.88%, Val Loss:   0.26, Val Acc:  92.34%, Time: 0:00:44\nIter:   1700, Train Loss:  0.018, Train Acc: 100.00%, Val Loss:   0.22, Val Acc:  93.46%, Time: 0:00:47\nIter:   1800, Train Loss:  0.036, Train Acc: 100.00%, Val Loss:   0.28, Val Acc:  92.72%, Time: 0:00:50\nNo optimization for a long time, auto-stopping...\n```\n\n在验证集上的最佳效果为94.12%，且只经过了3轮迭代就已经停止。\n\n准确率和误差如图所示：\n\n![images](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgaussic_text-classification-cnn-rnn_readme_a1c4150cf95b.png)\n\n\n### 测试\n\n运行 `python run_cnn.py test` 在测试集上进行测试。\n\n```\nConfiguring CNN model...\nLoading test data...\nTesting...\nTest Loss:   0.14, Test Acc:  96.04%\nPrecision, Recall and F1-Score...\n             precision    recall  f1-score   support\n\n         体育       0.99      0.99      0.99      1000\n         财经       0.96      0.99      0.97      1000\n         房产       1.00      1.00      1.00      1000\n         家居       0.95      0.91      0.93      1000\n         教育       0.95      0.89      0.92      1000\n         科技       0.94      0.97      0.95      1000\n         时尚       0.95      0.97      0.96      1000\n         时政       0.94      0.94      0.94      1000\n         游戏       0.97      0.96      0.97      1000\n         娱乐       0.95      0.98      0.97      1000\n\navg \u002F total       0.96      0.96      0.96     10000\n\nConfusion Matrix...\n[[991   0   0   0   2   1   0   4   1   1]\n [  0 992   0   0   2   1   0   5   0   0]\n [  0   1 996   0   1   1   0   0   0   1]\n [  0  14   0 912   7  15   9  29   3  11]\n [  2   9   0  12 892  22  18  21  10  14]\n [  0   0   0  10   1 968   4   3  12   2]\n [  1   0   0   9   4   4 971   0   2   9]\n [  1  16   0   4  18  12   1 941   1   6]\n [  2   4   1   5   4   5  10   1 962   6]\n [  1   0   1   6   4   3   5   0   1 979]]\nTime usage: 0:00:05\n```\n\n在测试集上的准确率达到了96.04%，且各类的precision, recall和f1-score都超过了0.9。\n\n从混淆矩阵也可以看出分类效果非常优秀。\n\n## RNN循环神经网络\n\n### 配置项\n\nRNN可配置的参数如下所示，在`rnn_model.py`中。\n\n```python\nclass TRNNConfig(object):\n    \"\"\"RNN配置参数\"\"\"\n\n    # 模型参数\n    embedding_dim = 64      # 词向量维度\n    seq_length = 600        # 序列长度\n    num_classes = 10        # 类别数\n    vocab_size = 5000       # 词汇表达小\n\n    num_layers= 2           # 隐藏层层数\n    hidden_dim = 128        \u002F\u002F 隐藏层神经元\n    rnn = 'gru'             \u002F\u002F lstm 或 gru\n\n    dropout_keep_prob = 0.8 \u002F\u002F dropout保留比例\n    learning_rate = 1e-3    \u002F\u002F 学习率\n\n    batch_size = 128         \u002F\u002F 每批训练大小\n    num_epochs = 10          \u002F\u002F 总迭代轮次\n\n    print_per_batch = 100    \u002F\u002F 每多少轮输出一次结果\n    save_per_batch = 10      \u002F\u002F 每多少轮存入tensorboard\n```\n\n### RNN模型\n\n具体参看`rnn_model.py`的实现。\n\n大致结构如下：\n\n![images\u002Frnn_architecture](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgaussic_text-classification-cnn-rnn_readme_040bf8ecc8e0.png)\n\n### 训练与验证\n\n> 这部分的代码与 run_cnn.py极为相似，只需要将模型和部分目录稍微修改。\n\n运行 `python run_rnn.py train`，可以开始训练。\n\n> 若之前进行过训练，请把tensorboard\u002Ftextrnn删除，避免TensorBoard多次训练结果重叠。\n\n```\n配置RNN模型...\n配置TensorBoard和Saver...\n加载训练和验证数据...\n用时：0:00:14\n训练和评估...\n第1轮\n迭代：0，训练损失：2.3，训练准确率：8.59%，验证损失：2.3，验证准确率：11.96%，用时：0:00:08 *\n迭代：100，训练损失：0.95，训练准确率：64.06%，验证损失：1.3，验证准确率：53.06%，用时：0:01:15 *\n迭代：200，训练损失：0.61，训练准确率：79.69%，验证损失：0.94，验证准确率：69.88%，用时：0:02:22 *\n迭代：300，训练损失：0.49，训练准确率：85.16%，验证损失：0.63，验证准确率：81.44%，用时：0:03:29 *\n第2轮\n迭代：400，训练损失：0.23，训练准确率：92.97%，验证损失：0.6，验证准确率：82.86%，用时：0:04:36 *\n迭代：500，训练损失：0.27，训练准确率：92.97%，验证损失：0.47，验证准确率：86.72%，用时：0:05:43 *\n迭代：600，训练损失：0.13，训练准确率：98.44%，验证损失：0.43，验证准确率：87.46%，用时：0:06:50 *\n迭代：700，训练损失：0.24，训练准确率：91.41%，验证损失：0.46，验证准确率：87.12%，用时：0:07:57\n第3轮\n迭代：800，训练损失：0.11，训练准确率：96.09%，验证损失：0.49，验证准确率：87.02%，用时：0:09:03\n迭代：900，训练损失：0.15，训练准确率：96.09%，验证损失：0.55，验证准确率：85.86%，用时：0:10:10\n迭代：1000，训练损失：0.17，训练准确率：96.09%，验证损失：0.43，验证准确率：89.44%，用时：0:11:18 *\n迭代：1100，训练损失：0.25，训练准确率：93.75%，验证损失：0.42，验证准确率：88.98%，用时：0:12:25\n第4轮\n迭代：1200，训练损失：0.14，训练准确率：96.09%，验证损失：0.39，验证准确率：89.82%，用时：0:13:32 *\n迭代：1300，训练损失：0.2，训练准确率：96.09%，验证损失：0.43，验证准确率：88.68%，用时：0:14:38\n迭代：1400，训练损失：0.012，训练准确率：100.00%，验证损失：0.37，验证准确率：90.58%，用时：0:15:45 *\n迭代：1500，训练损失：0.15，训练准确率：96.88%，验证损失：0.39，验证准确率：90.58%，用时：0:16:52\n第5轮\n迭代：1600，训练损失：0.075，训练准确率：97.66%，验证损失：0.41，验证准确率：89.90%，用时：0:17:59\n迭代：1700，训练损失：0.042，训练准确率：98.44%，验证损失：0.41，验证准确率：90.08%，用时：0:19:06\n迭代：1800，训练损失：0.08，训练准确率：97.66%，验证损失：0.38，验证准确率：91.36%，用时：0:20:13 *\n迭代：1900，训练损失：0.089，训练准确率：98.44%，验证损失：0.39，验证准确率：90.18%，用时：0:21:20\n第6轮\n迭代：2000，训练损失：0.092，训练准确率：96.88%，验证损失：0.36，验证准确率：91.42%，用时：0:22:27 *\n迭代：2100，训练损失：0.062，训练准确率：98.44%，验证损失：0.39，验证准确率：90.56%，用时：0:23:34\n迭代：2200，训练损失：0.053，训练准确率：98.44%，验证损失：0.39，验证准确率：90.02%，用时：0:24:41\n迭代：2300，训练损失：0.12，训练准确率：96.09%，验证损失：0.37，验证准确率：90.84%，用时：0:25:48\n第7轮\n迭代：2400，训练损失：0.014，训练准确率：100.00%，验证损失：0.41，验证准确率：90.38%，用时：0:26:55\n迭代：2500，训练损失：0.14，训练准确率：96.88%，验证损失：0.37，验证准确率：91.22%，用时：0:28:01\n迭代：2600，训练损失：0.11，训练准确率：96.88%，验证损失：0.43，验证准确率：89.76%，用时：0:29:08\n迭代：2700，训练损失：0.089，训练准确率：97.66%，验证损失：0.37，验证准确率：91.18%，用时：0:30:15\n第8轮\n迭代：2800，训练损失：0.0081，训练准确率：100.00%，验证损失：0.44，验证准确率：90.66%，用时：0:31:22\n迭代：2900，训练损失：0.017，训练准确率：100.00%，验证损失：0.44，验证准确率：89.62%，用时：0:32:29\n迭代：3000，训练损失：0.061，训练准确率：96.88%，验证损失：0.43，验证准确率：90.04%，用时：0:33:36\n长时间未见优化，自动停止...\n```\n\n在验证集上的最佳效果为91.42%，经过了8轮迭代停止，速度相比CNN慢很多。\n\n准确率和误差如图所示：\n\n![images](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgaussic_text-classification-cnn-rnn_readme_0c0a9003a734.png)\n\n\n### 测试\n\n运行 `python run_rnn.py test` 在测试集上进行测试。\n\n```\n测试...\n测试损失：0.21，测试准确率：94.22%\n精确率、召回率和F1分数...\n             精确率    召回率  F1分数   支持\n\n         体育       0.99      0.99      0.99      1000\n         财经       0.91      0.99      0.95      1000\n         房产       1.00      1.00      1.00      1000\n         家居       0.97      0.73      0.83      1000\n         教育       0.91      0.92      0.91      1000\n         科技       0.93      0.96      0.94      1000\n         时尚       0.89      0.97      0.93      1000\n         时政       0.93      0.93      0.93      1000\n         游戏       0.95      0.97      0.96      1000\n         娱乐       0.97      0.96      0.97      1000\n\n平均 \u002F 总计       0.94      0.94      0.94     10000\n\n混淆矩阵...\n[[988   0   0   0   4   0   2   0   5   1]\n [  0 990   1   1   1   1   0   6   0   0]\n [  0   2 996   1   1   0   0   0   0   0]\n [  2  71   1 731  51  20  88  28   3   5]\n [  1   3   0   7 918  23   4  31   9   4]\n [  1   3   0   3   0 964   3   5  21   0]\n [  1   0   1   7   1   3 972   0   6   9]\n [  0  16   0   0  22  26   0 931   2   3]\n [  2   3   0   0   2   2  12   0 972   7]\n [  0   3   1   1   7   3  11   5   9 960]]\n用时：0:00:33\n```\n\n在测试集上的准确率达到了94.22%，且各类的precision, recall和f1-score，除了家居这一类别，都超过了0.9。\n\n从混淆矩阵可以看出分类效果非常优秀。\n\n对比两个模型，可见RNN除了在家居分类的表现不是很理想，其他几个类别较CNN差别不大。\n\n还可以通过进一步的调节参数，来达到更好的效果。\n\n\n## 预测\n\n为方便预测，repo 中 `predict.py` 提供了 CNN 模型的预测方法。","# text-classification-cnn-rnn 快速上手指南\n\n本项目基于 TensorFlow 实现了卷积神经网络（CNN）和循环神经网络（RNN），用于中文文本分类。以下是在本地快速运行该项目的步骤。\n\n## 1. 环境准备\n\n确保您的系统满足以下要求：\n\n*   **操作系统**: Linux \u002F macOS \u002F Windows\n*   **Python 版本**: Python 2.7 或 Python 3.x\n*   **核心依赖**:\n    *   TensorFlow >= 1.3\n    *   numpy\n    *   scikit-learn\n    *   scipy\n\n**安装依赖命令：**\n\n建议使用国内镜像源加速安装：\n\n```bash\npip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple tensorflow>=1.3 numpy scikit-learn scipy\n```\n\n## 2. 数据准备\n\n项目使用 THUCNews 数据集的子集。您需要自行下载并处理数据。\n\n1.  **下载数据**：\n    *   官方来源：[THUCTC](http:\u002F\u002Fthuctc.thunlp.org\u002F)\n    *   本项目子集（10 个分类，每类 6500 条）：[百度网盘下载](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1hugrfRu) (密码: `qfud`)\n\n2.  **生成数据文件**：\n    解压下载的数据包后，进入 `helper` 目录执行脚本，将原始文件整合为模型所需的格式：\n\n    ```bash\n    # 拷贝数据 (根据实际路径调整)\n    sh copy_data.sh\n    \n    # 整合文件，生成 cnews.train.txt, cnews.val.txt, cnews.test.txt\n    python cnews_group.py\n    ```\n    *注：生成的三个文件应位于项目根目录或 `data` 目录下，具体取决于脚本配置。*\n\n## 3. 基本使用\n\n项目提供了 CNN 和 RNN 两种模型的训练与测试脚本。\n\n### 3.1 使用 CNN 模型\n\n**开始训练：**\n\n```bash\npython run_cnn.py train\n```\n*提示：若之前运行过训练，建议删除 `tensorboard\u002Ftextcnn` 目录以避免日志重叠。*\n\n**进行测试：**\n\n训练完成后，在测试集上评估模型效果：\n\n```bash\npython run_cnn.py test\n```\n\n### 3.2 使用 RNN 模型\n\n**开始训练：**\n\n```bash\npython run_rnn.py train\n```\n*提示：若之前运行过训练，建议删除 `tensorboard\u002Ftextrnn` 目录。*\n\n**进行测试：**\n\n```bash\npython run_rnn.py test\n```\n\n### 3.3 查看训练过程\n\n训练过程中会自动生成 TensorBoard 日志。启动 TensorBoard 可视化训练损失和准确率曲线：\n\n```bash\ntensorboard --logdir=tensorboard\n```\n然后在浏览器中访问显示的地址（通常为 `http:\u002F\u002Flocalhost:6006`）。","某新闻聚合平台的技术团队需要每日自动处理数万篇来自不同来源的中文资讯，将其精准归类到体育、财经、科技等固定频道，以构建个性化的用户推荐流。\n\n### 没有 text-classification-cnn-rnn 时\n- **人工成本高昂**：依赖编辑团队手动阅读并打标，面对海量实时资讯，人力不仅昂贵且无法做到 7x24 小时响应。\n- **规则维护困难**：尝试基于关键词的正则匹配，但中文语境复杂，一词多义现象导致误判率高，且每次新增类别都需重新编写大量规则。\n- **语义理解缺失**：传统浅层模型难以捕捉长文本中的上下文逻辑，对于“标题党”或隐含意图的文章分类准确率极低，严重影响用户体验。\n- **扩展性差**：当业务需要增加新的新闻板块时，旧系统往往需要重构代码，部署周期长达数周。\n\n### 使用 text-classification-cnn-rnn 后\n- **自动化高效流转**：利用 CNN 提取局部特征与 RNN 捕捉序列依赖的优势，模型能毫秒级完成单篇文本分类，轻松应对日均十万级的数据吞吐。\n- **深度语义识别**：基于字符级的向量表示，有效解决了中文分词难题，准确识别反讽、隐喻等复杂语境，在测试集上将分类准确率提升至 90% 以上。\n- **灵活适配业务**：只需准备少量标注数据（如每个类别数千条），即可通过微调快速适配新的新闻分类需求，无需改动核心架构。\n- **可量化的效果优化**：依托 TensorFlow 的训练监控机制，团队能清晰看到损失函数下降与准确率提升曲线，让算法迭代过程透明可控。\n\ntext-classification-cnn-rnn 将原本耗时耗力的内容审核工作转化为标准化的深度学习流程，用低成本实现了高精度的智能内容分发。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgaussic_text-classification-cnn-rnn_a1c4150c.png","gaussic","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fgaussic_c69189df.jpg","Data Science & Deep Learning & Natural Language Processing",null,"Shanghai","dzkangshu@hotmail.com","https:\u002F\u002Fgaussic.com","https:\u002F\u002Fgithub.com\u002Fgaussic",[81,85],{"name":82,"color":83,"percentage":84},"Python","#3572A5",98.4,{"name":86,"color":87,"percentage":88},"Shell","#89e051",1.6,4299,1463,"2026-04-02T17:44:32","MIT","未说明",{"notes":95,"python":96,"dependencies":97},"该工具基于 TensorFlow 1.3+ 开发，支持字符级 CNN 和 RNN 模型。数据集需自行从 THUCTC 下载并遵循开源协议，或使用提供的百度网盘子集链接。运行训练前需注意清理旧的 TensorBoard 日志目录以避免结果重叠。代码中包含用于数据预处理的脚本（如构建词汇表、划分批次等），首次运行会自动生成词汇表文件。","2.x 或 3.x",[98,99,100,101],"tensorflow>=1.3","numpy","scikit-learn","scipy",[14],[104,105,106,107,108,109,110],"tensorflow","cnn","text-classification","chinese","classification","rnn","tensorboard","2026-03-27T02:49:30.150509","2026-04-06T22:02:10.385443",[114,119,124,128,133,138,143,148],{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},20116,"运行程序时遇到 'No module named data.cnews_loader' 报错怎么办？","这通常是因为代码结构或执行方式的问题。建议仔细阅读源代码，理解模块导入逻辑。如果无法直接运行，可以尝试在命令行（CMD）中执行脚本，或者手动修改代码，将 `if __name__ == '__main__':` 下的逻辑调整为直接执行训练流程，确保数据加载路径正确。","https:\u002F\u002Fgithub.com\u002Fgaussic\u002Ftext-classification-cnn-rnn\u002Fissues\u002F1",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},20117,"修改分类数量后，出现 'Cannot feed value of shape...' 形状不匹配错误如何解决？","当更改数据集的分类数量（例如改为 8 类）时，必须同步修改代码中的类别配置。请检查并更新 `read_category` 函数以及 `num_classes` 变量（例如设置为 `num_classes = 8`），确保模型输出的标签维度与实际数据的标签维度一致，否则会出现形状不匹配的 ValueError。","https:\u002F\u002Fgithub.com\u002Fgaussic\u002Ftext-classification-cnn-rnn\u002Fissues\u002F15",{"id":125,"question_zh":126,"answer_zh":127,"source_url":123},20118,"测试或预测时报错 'Variable embedding already exists' 是什么原因？","该错误通常发生在重复运行代码或在同一会话中多次定义变量时。解决方法是：不要重新定义 embedding 变量，而是复用训练时已经定义的 embedding；或者在定义变量 scope 时设置 `reuse=True` 或 `reuse=tf.AUTO_REUSE`。如果是使用 Spyder 等 IDE，尝试关闭程序后重新运行测试脚本，避免变量残留。",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},20119,"为什么 predict.py 的预测结果与训练时的评估结果差异很大？","这可能是由于输入数据处理或预测逻辑不一致导致的。在单篇文档预测时，确保输入数据的预处理（如分词、转 ID、padding）与训练时完全一致。另外，注意 `y_pred_cls` 在只输入一篇文档时只会输出一个结果，需检查是否正确解析了预测输出。如果问题依旧，建议直接使用 `test` 流程进行验证，并确保 `batch_size` 设置合理。","https:\u002F\u002Fgithub.com\u002Fgaussic\u002Ftext-classification-cnn-rnn\u002Fissues\u002F86",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},20120,"如何正确使用 cnews_loader.py 中的 to_words 方法及加载训练数据？","`to_words` 方法用于将文本内容转换为词列表。在使用时，需确保传入正确的 `content`（文本字符串）和 `words`（词汇表）。关于数据加载，代码中使用了 `pad_sequences` 将文本填充为固定长度，并使用 `to_categorical` 将标签转换为 one-hot 编码。如果运行脚本报错或找不到数据，请检查文件路径，或手动修改脚本中的 `__main__` 部分，硬编码数据路径以确保能读取到 `cnews.train.txt` 等文件。","https:\u002F\u002Fgithub.com\u002Fgaussic\u002Ftext-classification-cnn-rnn\u002Fissues\u002F4",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},20121,"embedding_dim（词向量维度）参数的意义是什么？是否可以使用预训练词向量？","`embedding_dim` 定义了每个词（或字）映射到的向量空间的维度（默认为 64），用于捕捉语义信息。虽然代码默认是随机初始化并训练词向量，但如果训练数据较小，使用开源的预训练词向量（如 Word2Vec 或 GloVe）通常能获得更好的效果。注意，词向量只需在训练集上学习或加载，验证集和测试集不应参与词向量的训练，否则会破坏评估的公正性。","https:\u002F\u002Fgithub.com\u002Fgaussic\u002Ftext-classification-cnn-rnn\u002Fissues\u002F84",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},20122,"运行 conv1d 时出现 'data_format=NHWC is deprecated' 警告如何处理？","这是 TensorFlow 版本更新导致的弃用警告。旧版本推荐使用 `NHWC` 格式，新版本建议使用 `NWC`。解决方法是将代码中 `conv1d` 的 `data_format` 参数改为 `NWC`，并确保输入张量的形状符合 `[batch, width, channel]` 的格式，即可消除警告并兼容新版本 TensorFlow。","https:\u002F\u002Fgithub.com\u002Fgaussic\u002Ftext-classification-cnn-rnn\u002Fissues\u002F18",{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},20123,"如何将此模型应用于短文本分类任务？需要调整哪些参数？","应用于短文本分类时，主要需要调整输入序列的最大长度（`max_length`），使其适应短文本的特征，避免过多的填充。此外，可以根据短文本的特点调整卷积核大小或 RNN 的单元数。具体的词向量配置和模型超参数（如学习率、batch_size）需要根据实际数据集的大小和分布进行实验调优，建议参考相关文档或进行网格搜索。","https:\u002F\u002Fgithub.com\u002Fgaussic\u002Ftext-classification-cnn-rnn\u002Fissues\u002F136",[]]