[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-jiesutd--NCRFpp":3,"tool-jiesutd--NCRFpp":61},[4,18,26,36,44,53],{"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 真正成长为懂上",159267,2,"2026-04-17T11:29:14",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"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":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":85,"forks":86,"last_commit_at":87,"license":88,"difficulty_score":32,"env_os":89,"env_gpu":90,"env_ram":91,"env_deps":92,"category_tags":97,"github_topics":100,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":117,"updated_at":118,"faqs":119,"releases":155},8660,"jiesutd\u002FNCRFpp","NCRFpp","NCRF++, a Neural Sequence Labeling Toolkit. Easy use to any sequence labeling tasks (e.g. NER, POS, Segmentation). It includes character LSTM\u002FCNN, word LSTM\u002FCNN and softmax\u002FCRF components. ","NCRF++ 是一款基于 PyTorch 开发的开源神经序列标注工具包，专为自然语言处理中的序列标注任务设计。它能够有效解决命名实体识别（NER）、词性标注（POS）及中文分词等核心任务中的特征提取与标签预测难题。\n\n该工具主要面向 NLP 领域的研究人员与开发者，特别是那些希望快速复现前沿算法或灵活定制模型架构的用户。NCRF++ 的最大亮点在于其“零代码”配置能力：用户无需修改底层代码，仅通过一个简单的配置文件，即可自由组合字符级（LSTM\u002FCNN\u002FGRU）、词级神经网络以及输出层（Softmax\u002FCRF）等多种结构。这种设计不仅完美复刻了经典统计工具 CRF++ 的灵活性，还融入了深度学习的强大表征能力。\n\n此外，NCRF++ 在性能上表现卓越，利用全批量 GPU 加速操作，实现了极高的训练与解码速度（解码速度可达每秒 2000 句以上），并支持输出概率最高的 N 个候选结果。作为曾荣获 COLING 2018 最佳论文奖的技术成果，NCRF++ 以高效、灵活且易用的特性，成为了构建高性能序列标注模型的得力助手。","![NCRF++ Logo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjiesutd_NCRFpp_readme_6d907cd9292b.png)\n\n\n# NCRF++: An Open-source Neural Sequence Labeling Toolkit\n\n\n* [1. Introduction](#Introduction)\n* [2. Requirement](#Requirement)\n* [3. Advantages](#Advantages)\n* [4. Usage](#Usage)\n* [5. Data Format](#Data-Format)\n* [6. Performance](#Performance)\n* [7. Add Handcrafted Features](#Add-Handcrafted-Features)\n* [8. Speed](#Speed)\n* [9. N best Decoding](#N-best-Decoding)\n* [10. Reproduce Paper Results and Hyperparameter Tuning](#Reproduce-Paper-Results-and-Hyperparameter-Tuning)\n* [11. Report Issue or Problem](#Report-Issue-or-Problem)\n* [12. Cite](#Cite)\n* [13. Future Plan](#Future-Plan)\n* [13. Update](#Update)\n\n## Introduction\n\nSequence labeling models are quite popular in many NLP tasks, such as Named Entity Recognition (NER), part-of-speech (POS) tagging and word segmentation. State-of-the-art sequence labeling models mostly utilize the CRF structure with input word features. LSTM (or bidirectional LSTM) is a popular deep learning based feature extractor in sequence labeling task. And CNN can also be used due to faster computation. Besides, features within word are also useful to represent word, which can be captured by character LSTM or character CNN structure or human-defined neural features.\n\nNCRF++ is a PyTorch based framework with flexiable choices of input features and output structures. The design of neural sequence labeling models with NCRF++ is fully configurable through a configuration file, which does not require any code work. NCRF++ can be regarded as a neural network version of [CRF++](http:\u002F\u002Ftaku910.github.io\u002Fcrfpp\u002F), which is a famous statistical CRF framework. \n\nThis framework has been accepted by [ACL 2018](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.05626) as demonstration paper. And the detailed experiment report and analysis using NCRF++ has been accepted at [COLING 2018](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.04470) as the best paper.\n\nNCRF++ supports different structure combinations of on three levels: character sequence representation, word sequence representation and inference layer.\n\n* Character sequence representation: character LSTM, character GRU, character CNN and handcrafted word features.\n* Word sequence representation: word LSTM, word GRU, word CNN.\n* Inference layer: Softmax, CRF.\n\nWelcome to star this repository!\n\n## Requirement\n\n\tPython: 2 or 3  \n\tPyTorch: 1.0 \n\n[PyTorch 0.3 compatible version is here.](https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp\u002Ftree\u002FPyTorch0.3)\n\n\n## Advantages\n\n* Fully configurable: all the neural model structures can be set with a configuration file.\n* State-of-the-art system performance: models build on NCRF++ can give comparable or better results compared with state-of-the-art models.\n* Flexible with features: user can define their own features and pretrained feature embeddings.\n* Fast running speed: NCRF++ utilizes fully batched operations, making the system efficient with the help of GPU (>1000sent\u002Fs for training and >2000sents\u002Fs for decoding).\n* N best output: NCRF++ support `nbest` decoding (with their probabilities).\n\n\n## Usage\n\nNCRF++ supports designing the neural network structure through a configuration file. The program can run in two status; ***training*** and ***decoding***. (sample configuration and data have been included in this repository)  \n\nIn ***training*** status:\n`python main.py --config demo.train.config`\n\nIn ***decoding*** status:\n`python main.py --config demo.decode.config`\n\nThe configuration file controls the network structure, I\u002FO, training setting and hyperparameters. \n\n***Detail configurations and explanations are listed [here](readme\u002FConfiguration.md).***\n\nNCRF++ is designed in three layers (shown below): character sequence layer; word sequence layer and inference layer. By using the configuration file, most of the state-of-the-art models can be easily replicated ***without coding***. On the other hand, users can extend each layer by designing their own modules (for example, they may want to design their own neural structures other than CNN\u002FLSTM\u002FGRU). Our layer-wised design makes the module extension convenient, the instruction of module extension can be found [here](readme\u002FExtension.md).\n\n![alt text](readme\u002Farchitecture.png \"Layer-size design\")\n\n\n## Data Format\n\n* You can refer the data format in [sample_data](sample_data). \n* NCRF++ supports both BIO and BIOES(BMES) tag scheme.  \n* Notice that IOB format (***different*** from BIO) is currently not supported, because this tag scheme is old and works worse than other schemes [Reimers and Gurevych, 2017](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1707.06799.pdf). \n* The difference among these three tag schemes is explained in this [paper](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1707.06799.pdf).\n* I have written a [script](utils\u002FtagSchemeConverter.py) which converts the tag scheme among IOB\u002FBIO\u002FBIOES. Welcome to have a try. \n\n\n## Performance\n\nResults on CONLL 2003 English NER task are better or comparable with SOTA results with the same structures. \n\nCharLSTM+WordLSTM+CRF: 91.20 vs 90.94 of [Lample .etc, NAACL16](http:\u002F\u002Fwww.aclweb.org\u002Fanthology\u002FN\u002FN16\u002FN16-1030.pdf);\n\nCharCNN+WordLSTM+CRF:  91.35 vs 91.21 of [Ma .etc, ACL16](http:\u002F\u002Fwww.aclweb.org\u002Fanthology\u002FP\u002FP16\u002FP16-1101.pdf).   \n\nBy default, `LSTM` is bidirectional LSTM.    \n\n|ID| Model | Nochar | CharLSTM |CharCNN   \n|---|--------- | --- | --- | ------    \n|1| WordLSTM | 88.57 | 90.84 | 90.73  \n|2| WordLSTM+CRF | 89.45 | **91.20** | **91.35** \n|3| WordCNN |  88.56| 90.46 | 90.30  \n|4| WordCNN+CRF |  88.90 | 90.70 | 90.43  \n\nWe have compared twelve neural sequence labeling models (`{charLSTM, charCNN, None} x {wordLSTM, wordCNN} x {softmax, CRF}`) on three benchmarks (POS, Chunking, NER) under statistical experiments, detail results and comparisons can be found in our COLING 2018 paper [Design Challenges and Misconceptions in Neural Sequence Labeling](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.04470).\n \n\n## Add Handcrafted Features\n\nNCRF++ has integrated several SOTA neural characrter sequence feature extractors: CNN ([Ma .etc, ACL16](http:\u002F\u002Fwww.aclweb.org\u002Fanthology\u002FP\u002FP16\u002FP16-1101.pdf)), LSTM ([Lample .etc, NAACL16](http:\u002F\u002Fwww.aclweb.org\u002Fanthology\u002FN\u002FN16\u002FN16-1030.pdf)) and GRU ([Yang .etc, ICLR17](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1703.06345.pdf)). In addition, handcrafted features have been proven important in sequence labeling tasks. NCRF++ allows users designing their own features such as Capitalization, POS tag or any other features (grey circles in above figure). Users can configure the self-defined features through configuration file (feature embedding size, pretrained feature embeddings .etc). The sample input data format is given at [train.cappos.bmes](sample_data\u002Ftrain.cappos.bmes), which includes two human-defined features `[POS]` and `[Cap]`. (`[POS]` and `[Cap]` are two examples, you can give your feature any name you want, just follow the format `[xx]` and configure the feature with the same name in configuration file.)\nUser can configure each feature in configuration file by using \n\n```Python\nfeature=[POS] emb_size=20 emb_dir=%your_pretrained_POS_embedding\nfeature=[Cap] emb_size=20 emb_dir=%your_pretrained_Cap_embedding\n```\n\nFeature without pretrained embedding will be randomly initialized.\n\n\n## Speed\n\nNCRF++ is implemented using fully batched calculation, making it quite effcient on both model training and decoding. With the help of GPU (Nvidia GTX 1080) and large batch size, LSTMCRF model built with NCRF++ can reach 1000 sents\u002Fs and 2000sents\u002Fs on training and decoding status, respectively.\n\n![alt text](readme\u002Fspeed.png \"System speed on NER data\")\n\n\n## N best Decoding\n\nTraditional CRF structure decodes only one label sequence with largest probabolities (i.e. 1-best output). While NCRF++ can give a large choice, it can decode `n` label sequences with the top `n` probabilities (i.e. n-best output). The nbest decodeing has been supported by several popular **statistical** CRF framework. However to the best of our knowledge, NCRF++ is the only and the first toolkit which support nbest decoding in **neural** CRF models. \n\nIn our implementation, when the nbest=10, CharCNN+WordLSTM+CRF model built in NCRF++ can give 97.47% oracle F1-value (F1 = 91.35% when nbest=1) on CoNLL 2003 NER task.\n\n![alt text](readme\u002Fnbest.png  \"N best decoding oracle result\")\n\n\n## Reproduce Paper Results and Hyperparameter Tuning\n\nTo reproduce the results in our COLING 2018 paper, you only need to set the `iteration=1` as `iteration=100` in configuration file `demo.train.config` and configure your file directory in this configuration file. The default configuration file describes the `Char CNN + Word LSTM + CRF` model, you can build your own model by modifing the configuration accordingly. The parameters in this demo configuration file are the same in our paper. (Notice the `Word CNN` related models need slightly different parameters, details can be found in our COLING paper.)\n\nIf you want to use this framework in new tasks or datasets, here are some tuning [tips](readme\u002Fhyperparameter_tuning.md) by @Victor0118.\n\n\n## Report Issue or Problem\n\nIf you want to report an issue or ask a problem, please attach the following materials if necessary. With these information, I can give fast and accurate discussion and suggestion. \n* `log file` \n* `config file` \n* `sample data` \n\n\n## Cite\n\nIf you use NCRF++ in your paper, please cite our [ACL demo paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.05626):\n\n    @inproceedings{yang2018ncrf,  \n     title={NCRF++: An Open-source Neural Sequence Labeling Toolkit},  \n     author={Yang, Jie and Zhang, Yue},  \n     booktitle={Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics},\n     Url = {http:\u002F\u002Faclweb.org\u002Fanthology\u002FP18-4013},\n     year={2018}  \n    }\n\n\nIf you use experiments results and analysis of NCRF++, please cite our [COLING paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.04470):\n\n    @inproceedings{yang2018design,  \n     title={Design Challenges and Misconceptions in Neural Sequence Labeling},  \n     author={Yang, Jie and Liang, Shuailong and Zhang, Yue},  \n     booktitle={Proceedings of the 27th International Conference on Computational Linguistics (COLING)},\n     Url = {http:\u002F\u002Faclweb.org\u002Fanthology\u002FC18-1327},\n     year={2018}  \n    }\n\n## Future Plan \n\n* Document classification (working)\n* Support API usage\n* Upload trained model on Word Segmentation\u002FPOS tagging\u002FNER\n* Enable loading pretrained ELMo parameters\n* Add BERT feature extraction layer \n\n\n\n## Update\n\n* 2018-Dec-17, NCRF++ v0.2, support PyTorch 1.0\n* 2018-Mar-30, NCRF++ v0.1, initial version\n* 2018-Jan-06, add result comparison.\n* 2018-Jan-02, support character feature selection. \n* 2017-Dec-06, init version\n\n","![NCRF++ Logo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjiesutd_NCRFpp_readme_6d907cd9292b.png)\n\n\n# NCRF++：开源神经序列标注工具包\n\n\n* [1. 简介](#Introduction)\n* [2. 需求](#Requirement)\n* [3. 优势](#Advantages)\n* [4. 使用方法](#Usage)\n* [5. 数据格式](#Data-Format)\n* [6. 性能](#Performance)\n* [7. 添加手工特征](#Add-Handcrafted-Features)\n* [8. 速度](#Speed)\n* [9. N-best 解码](#N-best-Decoding)\n* [10. 复现论文结果与超参数调优](#Reproduce-Paper-Results-and-Hyperparameter-Tuning)\n* [11. 报告问题或错误](#Report-Issue-or-Problem)\n* [12. 引用](#Cite)\n* [13. 未来计划](#Future-Plan)\n* [13. 更新](#Update)\n\n## 简介\n\n序列标注模型在许多自然语言处理任务中非常流行，例如命名实体识别（NER）、词性标注（POS）和分词等。当前最先进的序列标注模型大多采用带有输入词特征的CRF结构。LSTM（或双向LSTM）是序列标注任务中一种流行的基于深度学习的特征提取器。此外，由于计算速度更快，CNN也可以被使用。除此之外，单词内部的特征对于表示单词也很有用，这些特征可以通过字符级LSTM、字符级CNN结构或者人工定义的神经网络特征来捕捉。\n\nNCRF++是一个基于PyTorch的框架，提供了灵活的输入特征和输出结构选择。使用NCRF++设计神经序列标注模型时，所有配置都可以通过一个配置文件完成，无需编写任何代码。NCRF++可以被视为[CRF++](http:\u002F\u002Ftaku910.github.io\u002Fcrfpp\u002F)的神经网络版本，而CRF++是一个著名的统计CRF框架。\n\n该框架已被[ACL 2018](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.05626)接受为演示论文。同时，使用NCRF++进行的详细实验报告和分析也被[COLING 2018](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.04470)接受为最佳论文。\n\nNCRF++支持在三个层次上对不同结构进行组合：字符序列表示、词序列表示和推理层。\n\n* 字符序列表示：字符LSTM、字符GRU、字符CNN以及手工制作的词特征。\n* 词序列表示：词LSTM、词GRU、词CNN。\n* 推理层：Softmax、CRF。\n\n欢迎给本仓库点个赞！\n\n## 需求\n\n\tPython: 2 或 3  \n\tPyTorch: 1.0 \n\n[兼容PyTorch 0.3的版本请见这里。](https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp\u002Ftree\u002FPyTorch0.3)\n\n\n## 优势\n\n* 完全可配置：所有神经网络结构均可通过配置文件设置。\n* 最先进的系统性能：基于NCRF++构建的模型能够达到与当前最先进模型相当甚至更好的效果。\n* 特征灵活：用户可以自定义特征及预训练的特征嵌入。\n* 运行速度快：NCRF++采用完全批处理操作，在GPU的帮助下系统效率极高（训练速度超过1000句\u002F秒，解码速度超过2000句\u002F秒）。\n* N-best 输出：NCRF++支持`nbest`解码（并附带相应的概率）。\n\n\n## 使用方法\n\nNCRF++支持通过配置文件设计神经网络结构。程序有两种运行模式：***训练***和***解码***。（本仓库已包含示例配置和数据）\n\n在***训练***模式下：\n`python main.py --config demo.train.config`\n\n在***解码***模式下：\n`python main.py --config demo.decode.config`\n\n配置文件控制着网络结构、输入输出、训练设置以及超参数。\n\n***详细配置及说明请参阅[此处](readme\u002FConfiguration.md)。***\n\nNCRF++的设计分为三层（如下所示）：字符序列层、词序列层和推理层。借助配置文件，大多数最先进的模型都可以轻松复现，且无需编写代码。另一方面，用户也可以通过设计自己的模块来扩展每一层（例如，他们可能希望设计除CNN\u002FLSTM\u002FGRU之外的其他神经网络结构）。我们分层的设计使得模块扩展变得十分方便，模块扩展的说明请参阅[此处](readme\u002FExtension.md)。\n\n![alt text](readme\u002Farchitecture.png \"分层设计\")\n\n\n## 数据格式\n\n* 您可以参考[sample_data](sample_data)中的数据格式。\n* NCRF++支持BIO和BIOES(BMES)两种标签体系。\n* 请注意，IOB格式（与BIO***不同***）目前不被支持，因为这种标签体系较为老旧，且表现不如其他体系好[Reimers and Gurevych, 2017](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1707.06799.pdf)。\n* 这三种标签体系之间的区别已在该[论文](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1707.06799.pdf)中解释过。\n* 我编写了一个[脚本](utils\u002FtagSchemeConverter.py)，用于在IOB\u002FBIO\u002FBIOES之间转换标签体系。欢迎大家试用。\n\n\n## 性能\n\n在CONLL 2003英语NER任务上的结果与具有相同结构的SOTA结果相比，要么更好，要么相当。\n\nCharLSTM+WordLSTM+CRF：91.20 vs 90.94，出自[Lample .etc, NAACL16](http:\u002F\u002Fwww.aclweb.org\u002Fanthology\u002FN\u002FN16\u002FN16-1030.pdf)；\n\nCharCNN+WordLSTM+CRF：91.35 vs 91.21，出自[Ma .etc, ACL16](http:\u002F\u002Fwww.aclweb.org\u002Fanthology\u002FP\u002FP16\u002FP16-1101.pdf)。   \n\n默认情况下，`LSTM`为双向LSTM。    \n\n|编号| 模型 | 无字符特征 | CharLSTM | CharCNN   \n|---|--------- | --- | --- | ------    \n|1| WordLSTM | 88.57 | 90.84 | 90.73  \n|2| WordLSTM+CRF | 89.45 | **91.20** | **91.35** \n|3| WordCNN |  88.56| 90.46 | 90.30  \n|4| WordCNN+CRF |  88.90 | 90.70 | 90.43  \n\n我们在统计实验条件下，对十二种神经序列标注模型（`{charLSTM, charCNN, 无} x {wordLSTM, wordCNN} x {softmax, CRF}`）在三个基准数据集（POS、Chunking、NER）上进行了比较。详细结果及对比分析请参阅我们的COLING 2018论文《神经序列标注中的设计挑战与误解》[Design Challenges and Misconceptions in Neural Sequence Labeling](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.04470)。\n\n## 添加手工特征\n\nNCRF++ 集成了几种当前最先进的神经网络字符序列特征提取器：CNN（[Ma 等，ACL16](http:\u002F\u002Fwww.aclweb.org\u002Fanthology\u002FP\u002FP16\u002FP16-1101.pdf)）、LSTM（[Lample 等，NAACL16](http:\u002F\u002Fwww.aclweb.org\u002Fanthology\u002FN\u002FN16\u002FN16-1030.pdf)）和 GRU（[Yang 等，ICLR17](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1703.06345.pdf)）。此外，手工特征在序列标注任务中也被证明非常重要。NCRF++ 允许用户设计自己的特征，例如大小写、词性标签或其他任何特征（上图中的灰色圆圈）。用户可以通过配置文件来设置这些自定义特征（特征嵌入维度、预训练的特征嵌入等）。示例输入数据格式见 [train.cappos.bmes](sample_data\u002Ftrain.cappos.bmes)，其中包含两个人工定义的特征 `[POS]` 和 `[Cap]`。（`[POS]` 和 `[Cap]` 只是示例，您可以为特征命名任意名称，只需遵循 `[xx]` 的格式，并在配置文件中使用相同的名称进行配置。）\n用户可以在配置文件中通过以下方式配置每个特征：\n\n```Python\nfeature=[POS] emb_size=20 emb_dir=%your_pretrained_POS_embedding\nfeature=[Cap] emb_size=20 emb_dir=%your_pretrained_Cap_embedding\n```\n\n未提供预训练嵌入的特征将被随机初始化。\n\n## 速度\n\nNCRF++ 使用完全批处理计算实现，因此在模型训练和解码方面都非常高效。借助 GPU（Nvidia GTX 1080）和较大的批量大小，使用 NCRF++ 构建的 LSTMCRF 模型在训练和解码时分别可以达到 1000 句子\u002F秒和 2000 句子\u002F秒的速度。\n\n![alt text](readme\u002Fspeed.png \"NER 数据上的系统速度\")\n\n## N 最优解码\n\n传统的 CRF 结构只解码概率最大的一条标签序列（即 1-best 输出）。而 NCRF++ 则可以提供多种选择，解码出前 n 个概率最高的标签序列（即 n-best 输出）。这种 n-best 解码功能已经被一些流行的 **统计** CRF 框架所支持。然而，据我们所知，NCRF++ 是首个也是唯一一个支持 **神经** CRF 模型 n-best 解码的工具包。\n\n在我们的实现中，当 nbest=10 时，基于 NCRF++ 构建的 CharCNN+WordLSTM+CRF 模型在 CoNLL 2003 NER 任务上可以获得 97.47% 的 oracle F1 值（nbest=1 时 F1=91.35%）。\n\n![alt text](readme\u002Fnbest.png \"N best 解码的 oracle 结果\")\n\n## 复现论文结果与超参数调优\n\n要复现我们 COLING 2018 论文中的结果，您只需将配置文件 `demo.train.config` 中的 `iteration=1` 改为 `iteration=100`，并在该配置文件中配置好您的文件目录即可。默认配置文件描述的是 `Char CNN + Word LSTM + CRF` 模型，您可以通过相应地修改配置来构建自己的模型。此演示配置文件中的参数与我们论文中的参数一致。（请注意，与 `Word CNN` 相关的模型需要略微不同的参数，详细信息请参阅我们的 COLING 论文。）\n\n如果您想在新的任务或数据集上使用该框架，这里有一些由 @Victor0118 提供的 [调优技巧](readme\u002Fhyperparameter_tuning.md)。\n\n## 报告问题或故障\n\n如果您想报告问题或提出疑问，请在必要时附上以下材料。有了这些信息，我可以更快更准确地为您提供讨论和建议。\n* `日志文件`\n* `配置文件`\n* `样本数据`\n\n## 引用\n\n如果您在论文中使用了 NCRF++，请引用我们的 [ACL 演示论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.05626)：\n\n    @inproceedings{yang2018ncrf,  \n     title={NCRF++: 一个开源的神经序列标注工具包},  \n     author={Yang, Jie and Zhang, Yue},  \n     booktitle={第56届计算语言学协会年会论文集},\n     Url = {http:\u002F\u002Faclweb.org\u002Fanthology\u002FP18-4013},\n     year={2018}  \n    }\n\n如果您使用了 NCRF++ 的实验结果和分析，请引用我们的 [COLING 论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.04470)：\n\n    @inproceedings{yang2018design,  \n     title={神经序列标注中的设计挑战与误解},  \n     author={Yang, Jie and Liang, Shuailong and Zhang, Yue},  \n     booktitle={第27届国际计算语言学会议 (COLING) 论文集},\n     Url = {http:\u002F\u002Faclweb.org\u002Fanthology\u002FC18-1327},\n     year={2018}  \n    }\n\n## 未来计划\n\n* 文档分类（正在进行中）\n* 支持 API 使用\n* 将训练好的模型上传至分词\u002F词性标注\u002F命名实体识别平台\n* 启用加载预训练的 ELMo 参数功能\n* 添加 BERT 特征提取层\n\n\n\n## 更新\n\n* 2018年12月17日，NCRF++ v0.2，支持 PyTorch 1.0\n* 2018年3月30日，NCRF++ v0.1，初始版本\n* 2018年1月6日，添加结果对比。\n* 2018年1月2日，支持字符特征选择。\n* 2017年12月6日，初始版本","# NCRF++ 快速上手指南\n\nNCRF++ 是一个基于 PyTorch 的开源神经序列标注工具包，支持命名实体识别（NER）、词性标注（POS）和分词等任务。它通过配置文件灵活定义模型结构（如 LSTM、CNN、CRF 等），无需修改代码即可复现主流模型。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**：Linux \u002F macOS \u002F Windows\n*   **Python 版本**：Python 2 或 Python 3\n*   **核心依赖**：PyTorch 1.0 或更高版本\n    *   *注：如需使用旧版 PyTorch 0.3，请参考项目仓库中的 `PyTorch0.3` 分支。*\n\n建议先安装好 CUDA 驱动以利用 GPU 加速训练和解码过程。\n\n## 安装步骤\n\n1.  **克隆项目仓库**\n    将 NCRF++ 源码下载到本地：\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp.git\n    cd NCRFpp\n    ```\n\n2.  **安装 Python 依赖**\n    确保已安装 PyTorch。如果尚未安装，推荐访问 [PyTorch 官网](https:\u002F\u002Fpytorch.org\u002F) 获取适合您环境的安装命令。若需国内加速，可使用清华源：\n    ```bash\n    pip install torch -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n    ```\n    \n    NCRF++ 本身主要依赖 PyTorch 和标准库，通常无需额外安装复杂的第三方包。如有其他依赖缺失，请根据报错提示安装。\n\n## 基本使用\n\nNCRF++ 的核心优势在于通过**配置文件**控制模型结构、超参数及数据路径。项目内置了示例数据和配置文件，可直接运行。\n\n### 1. 训练模型 (Training)\n\n使用默认的演示配置文件启动训练：\n\n```bash\npython main.py --config demo.train.config\n```\n\n*   `demo.train.config`：定义了网络结构（默认为 CharCNN + WordLSTM + CRF）、学习率、迭代次数等参数。\n*   训练过程中会生成模型文件并输出日志。\n\n### 2. 模型解码\u002F预测 (Decoding)\n\n训练完成后，使用解码配置文件对测试数据进行预测：\n\n```bash\npython main.py --config demo.decode.config\n```\n\n*   `demo.decode.config`：需指定训练好的模型路径和待预测的数据文件路径。\n\n### 3. 自定义配置\n\n您可以复制 `demo.train.config` 创建自己的配置文件，修改以下关键项以适应新任务：\n*   **网络结构**：切换 Character\u002FWord 层的提取器（LSTM, GRU, CNN）及推理层（Softmax, CRF）。\n*   **特征工程**：添加人工特征（如大小写、词性标签等）。\n*   **数据路径**：指向您的训练集、开发集和测试集。\n\n详细的配置项说明请参阅项目目录下的 `readme\u002FConfiguration.md`。","某医疗科技公司的 NLP 团队正致力于从非结构化的电子病历中自动提取疾病名称、药物剂量及手术部位等关键实体，以构建结构化数据库。\n\n### 没有 NCRFpp 时\n- **开发效率低下**：每次尝试新的模型组合（如切换字符级 CNN 或双向 LSTM）都需要重写大量 PyTorch 代码，迭代周期长达数周。\n- **特征工程僵化**：难以灵活融合医生自定义的规则特征与预训练词向量，导致模型无法充分利用领域专业知识。\n- **推理精度受限**：仅使用 Softmax 层进行标签预测，忽略了标签间的依赖关系（如“疾病”后通常接“部位”），造成实体边界识别错误率高。\n- **训练速度缓慢**：缺乏高效的批量 GPU 加速机制，处理百万级病历数据时耗时过长，严重拖慢项目进度。\n\n### 使用 NCRFpp 后\n- **零代码模型配置**：仅需修改配置文件即可自由组合字符\u002F词级别的 LSTM、CNN 及 CRF 层，一天内即可完成多种 SOTA 架构的验证。\n- **灵活特征融合**：轻松接入手工定义的医疗规则特征与预训练嵌入，显著提升了模型对专业术语的捕捉能力。\n- **全局最优解码**：利用内置的 CRF 推断层建模标签转移概率，有效解决了实体边界断裂问题，F1 值提升约 5%。\n- **高效批量运算**：借助全批量 GPU 操作，训练速度突破 1000 句\u002F秒，解码速度超 2000 句\u002F秒，大幅缩短了模型上线时间。\n\nNCRFpp 通过配置驱动的灵活架构与高效的 CRF 推断能力，让医疗实体抽取任务的研发从“重复造轮子”转变为“专注业务优化”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjiesutd_NCRFpp_28c86f6c.png","jiesutd","Jie Yang","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fjiesutd_d9f5691d.png","AI\u002FNLP in medicine and public health","Harvard University",null,"https:\u002F\u002Fylab.top\u002F","https:\u002F\u002Fgithub.com\u002Fjiesutd",[81],{"name":82,"color":83,"percentage":84},"Python","#3572A5",100,1897,441,"2026-04-02T08:36:23","Apache-2.0","","非必需，但推荐使用 NVIDIA GPU 以加速训练和解码（文中测试环境为 Nvidia GTX 1080）。未明确指定显存大小和 CUDA 版本，需与安装的 PyTorch 版本兼容。","未说明",{"notes":93,"python":94,"dependencies":95},"该工具是一个基于配置文件的神经序列标注框架，无需修改代码即可调整模型结构。支持字符级（LSTM\u002FGRU\u002FCNN）和词级特征提取，以及 Softmax 或 CRF 推断层。若使用 PyTorch 0.3 需切换至特定分支。数据格式支持 BIO 和 BIOES，不支持旧的 IOB 格式。","2 或 3",[96],"PyTorch>=1.0",[15,98,35,99,14],"视频","音频",[101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116],"pytorch","ner","sequence-labeling","crf","lstm-crf","char-rnn","char-cnn","named-entity-recognition","part-of-speech-tagger","chunking","neural-networks","nbest","lstm","cnn","natural-language-processing","artificial-intelligence","2026-03-27T02:49:30.150509","2026-04-18T03:37:27.931439",[120,125,130,135,140,145,150],{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},38775,"为什么训练时损失爆炸（loss exploded）且 F1 分数为 -1？","这通常是因为损失值过大导致模型无法收敛。首先尝试在配置文件中设置 `ave_batch_loss=True` 来平均批次损失。如果问题仍然存在，可能是数据标签不平衡（例如实体样本过少），导致模型忽略了少数类标签。针对不平衡数据，需要寻找特定的解决方案，但这在实际应用中是一个典型难题。","https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp\u002Fissues\u002F60",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},38776,"遇到 TypeError: expected np.ndarray (got numpy.ndarray) 错误怎么办？","这是由于 PyTorch 和 NumPy 版本兼容性问题导致的。解决方法有两个：1. 将 NumPy 版本降级到 1.16.4（当前使用的是 1.17.4 或更高）；2. 或者在代码中将 `torch.from_numpy()` 替换为适当的 Tensor 转换方法以适配新版 NumPy。建议优先尝试降级 NumPy 版本。","https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp\u002Fissues\u002F131",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},38777,"如何获取句子分类（Sentence Classification）功能？","句子分类版本已在 dev 分支发布。你可以切换到 dev 分支并使用演示代码开始：`python ncrf.py --config demo.clf.train.config`。该版本支持添加额外特征，只需遵循 `sample_data\u002Fclf.train.feature.txt` 的文件格式即可添加自定义特征。未来该分支还将集成 BERT 并合并到主分支。","https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp\u002Fissues\u002F97",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},38778,"在不使用 CRF 层时，F1 评分是否过于乐观或不准确？","是的，当不使用 CRF 解码时，预测的 BIOES 标签可能无效，导致标准的 F1 计算函数返回不合理的结果（如 F1=1.0 但准确率很低）。如果在模型顶部添加了 CRF 层，建议始终使用约束权重（constrained weights），这能自动保证解码的正确性且不会增加额外的计算成本。对于无 CRF 模型，需注意不同 F1 计算方法之间的差异可能导致对比不公平。","https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp\u002Fissues\u002F87",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},38779,"如何使用预训练词向量（如 FastText）来提升模型准确率？","你可以在配置文件中指定预训练词向量路径（通过 `word_emb_dir` 参数）。虽然使用预训练嵌入（如 FastText）通常会带来提升，但如果提升不明显，可能需要检查嵌入文件与词汇表的匹配情况（区分大小写匹配、OOV 比例等）。此外，确保数据量充足（例如至少几千条标注实例）并调整超参数（如学习率、dropout、LSTM 层数）也是关键。","https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp\u002Fissues\u002F104",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},38780,"Decode（解码）状态的具体含义是什么？","Decode 过程指的是从输入数据生成标注序列的过程（例如序列标注任务中生成预测标签），类似于测试阶段的推理。它包含从输入到输出标签序列的完整前向传播，但通常不包含评估（evaluate）步骤，即不与真实标签进行对比计算指标。","https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp\u002Fissues\u002F26",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},38781,"如何调整模型参数以优化性能？","你可以修改配置文件中的任意参数来微调模型。主要参数包括网络结构（如 `use_crf`, `use_char`, `word_seq_feature`）、训练设置（`optimizer`, `batch_size`, `iteration`）以及超参数（`learning_rate`, `dropout`, `hidden_dim` 等）。详细的参数说明可参考官方文档：https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp\u002Fblob\u002Fmaster\u002Freadme\u002FConfiguration.md。","https:\u002F\u002Fgithub.com\u002Fjiesutd\u002FNCRFpp\u002Fissues\u002F82",[]]