[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-explosion--spacy-stanza":3,"tool-explosion--spacy-stanza":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 真正成长为懂上",150720,2,"2026-04-11T11:33:10",[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":76,"owner_email":77,"owner_twitter":76,"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":99,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":110,"updated_at":111,"faqs":112,"releases":143},6697,"explosion\u002Fspacy-stanza","spacy-stanza","💥 Use the latest Stanza (StanfordNLP) research models directly in spaCy","spacy-stanza 是一个连接 spaCy 与 Stanza（原 StanfordNLP）的桥梁工具，让开发者能直接在熟悉的 spaCy 工作流中调用斯坦福大学研发的高精度语言模型。它主要解决了生态兼容性问题：用户无需在不同框架间反复转换数据格式，即可利用 Stanza 在 68 种语言上取得的顶尖学术成果，包括分词、词性标注、形态分析、依存句法分析、命名实体识别及句子分割等深度语言学特征。\n\n该工具特别适合需要处理多语言文本的 NLP 开发者、研究人员以及数据科学家。如果你已经习惯使用 spaCy 进行工程化开发，但又希望引入学术界最先进的预训练模型来提升分析准确率，spacy-stanza 是理想选择。其核心技术亮点在于无缝封装：通过简单的 `load_pipeline` 接口，Stanza 的计算结果会自动映射为标准的 spaCy `Doc` 对象。这意味着你不仅可以获取丰富的语言学注释，还能继续享受 spaCy 生态带来的可视化展示（displaCy）、规则匹配器以及自定义管道组件等便捷功能，真正实现了学术前沿模型与工业级开发效率的完美结合。","\u003Ca href=\"https:\u002F\u002Fexplosion.ai\">\u003Cimg src=\"https:\u002F\u002Fexplosion.ai\u002Fassets\u002Fimg\u002Flogo.svg\" width=\"125\" height=\"125\" align=\"right\" \u002F>\u003C\u002Fa>\n\n# spaCy + Stanza (formerly StanfordNLP)\n\nThis package wraps the [Stanza](https:\u002F\u002Fgithub.com\u002Fstanfordnlp\u002Fstanza) (formerly\nStanfordNLP) library, so you can use Stanford's models in a\n[spaCy](https:\u002F\u002Fspacy.io) pipeline. The Stanford models achieved top accuracy in\nthe CoNLL 2017 and 2018 shared task, which involves tokenization, part-of-speech\ntagging, morphological analysis, lemmatization and labeled dependency parsing in\n68 languages. As of v1.0, Stanza also supports named entity recognition for\nselected languages.\n\n> ⚠️ Previous version of this package were available as\n> [`spacy-stanfordnlp`](https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fspacy-stanfordnlp).\n\n[![tests](https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Factions\u002Fworkflows\u002Ftests.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Factions\u002Fworkflows\u002Ftests.yml)\n[![PyPi](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fspacy-stanza.svg?style=flat-square)](https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fspacy-stanza)\n[![GitHub](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Fexplosion\u002Fspacy-stanza\u002Fall.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza)\n[![Code style: black](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fambv\u002Fblack)\n\nUsing this wrapper, you'll be able to use the following annotations, computed by\nyour pretrained `stanza` model:\n\n- Statistical tokenization (reflected in the `Doc` and its tokens)\n- Lemmatization (`token.lemma` and `token.lemma_`)\n- Part-of-speech tagging (`token.tag`, `token.tag_`, `token.pos`, `token.pos_`)\n- Morphological analysis (`token.morph`)\n- Dependency parsing (`token.dep`, `token.dep_`, `token.head`)\n- Named entity recognition (`doc.ents`, `token.ent_type`, `token.ent_type_`,\n  `token.ent_iob`, `token.ent_iob_`)\n- Sentence segmentation (`doc.sents`)\n\n## ️️️⌛️ Installation\n\nAs of v1.0.0 `spacy-stanza` is only compatible with **spaCy v3.x**. To install\nthe most recent version:\n\n```bash\npip install spacy-stanza\n```\n\nFor spaCy v2, install v0.2.x and refer to the\n[v0.2.x usage documentation](https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Ftree\u002Fv0.2.x#-usage--examples):\n\n```bash\npip install \"spacy-stanza\u003C0.3.0\"\n```\n\nMake sure to also\n[download](https:\u002F\u002Fstanfordnlp.github.io\u002Fstanza\u002Fdownload_models.html) one of the\n[pre-trained Stanza models](https:\u002F\u002Fstanfordnlp.github.io\u002Fstanza\u002Fmodels.html).\n\n## 📖 Usage & Examples\n\n> ⚠️ **Important note:** This package has been refactored to take advantage of\n> [spaCy v3.0](https:\u002F\u002Fspacy.io). Previous versions that were built for\n> [spaCy v2.x](https:\u002F\u002Fv2.spacy.io) worked considerably differently. Please see\n> previous tagged versions of this README for documentation on prior versions.\n\nUse `spacy_stanza.load_pipeline()` to create an `nlp` object that you can use to\nprocess a text with a Stanza pipeline and create a spaCy\n[`Doc` object](https:\u002F\u002Fspacy.io\u002Fapi\u002Fdoc). By default, both the spaCy pipeline\nand the Stanza pipeline will be initialized with the same `lang`, e.g. \"en\":\n\n```python\nimport stanza\nimport spacy_stanza\n\n# Download the stanza model if necessary\nstanza.download(\"en\")\n\n# Initialize the pipeline\nnlp = spacy_stanza.load_pipeline(\"en\")\n\ndoc = nlp(\"Barack Obama was born in Hawaii. He was elected president in 2008.\")\nfor token in doc:\n    print(token.text, token.lemma_, token.pos_, token.dep_, token.ent_type_)\nprint(doc.ents)\n```\n\nIf language data for the given language is available in spaCy, the respective\nlanguage class can be used as the base for the `nlp` object – for example,\n`English()`. This lets you use spaCy's lexical attributes like `is_stop` or\n`like_num`. The `nlp` object follows the same API as any other spaCy `Language`\nclass – so you can visualize the `Doc` objects with displaCy, add custom\ncomponents to the pipeline, use the rule-based matcher and do pretty much\nanything else you'd normally do in spaCy.\n\n```python\n# Access spaCy's lexical attributes\nprint([token.is_stop for token in doc])\nprint([token.like_num for token in doc])\n\n# Visualize dependencies\nfrom spacy import displacy\ndisplacy.serve(doc)  # or displacy.render if you're in a Jupyter notebook\n\n# Process texts with nlp.pipe\nfor doc in nlp.pipe([\"Lots of texts\", \"Even more texts\", \"...\"]):\n    print(doc.text)\n\n# Combine with your own custom pipeline components\nfrom spacy import Language\n@Language.component(\"custom_component\")\ndef custom_component(doc):\n    # Do something to the doc here\n    print(f\"Custom component called: {doc.text}\")\n    return doc\n\nnlp.add_pipe(\"custom_component\")\ndoc = nlp(\"Some text\")\n\n# Serialize attributes to a numpy array\nnp_array = doc.to_array(['ORTH', 'LEMMA', 'POS'])\n```\n\n### Stanza Pipeline options\n\nAdditional options for the Stanza\n[`Pipeline`](https:\u002F\u002Fstanfordnlp.github.io\u002Fstanza\u002Fpipeline.html#pipeline) can be\nprovided as keyword arguments following the `Pipeline` API:\n\n- Provide the Stanza language as `lang`. For Stanza languages without spaCy\n  support, use \"xx\" for the spaCy language setting:\n\n  ```python\n  # Initialize a pipeline for Coptic\n  nlp = spacy_stanza.load_pipeline(\"xx\", lang=\"cop\")\n  ```\n\n- Provide Stanza pipeline settings following the `Pipeline` API:\n\n  ```python\n  # Initialize a German pipeline with the `hdt` package\n  nlp = spacy_stanza.load_pipeline(\"de\", package=\"hdt\")\n  ```\n\n- Tokenize with spaCy rather than the statistical tokenizer (only for English):\n\n  ```python\n  nlp = spacy_stanza.load_pipeline(\"en\", processors= {\"tokenize\": \"spacy\"})\n  ```\n\n- Provide any additional processor settings as additional keyword arguments:\n\n  ```python\n  # Provide pretokenized texts (whitespace tokenization)\n  nlp = spacy_stanza.load_pipeline(\"de\", tokenize_pretokenized=True)\n  ```\n\nThe spaCy config specifies all `Pipeline` options in the `[nlp.tokenizer]`\nblock. For example, the config for the last example above, a German pipeline\nwith pretokenized texts:\n\n```ini\n[nlp.tokenizer]\n@tokenizers = \"spacy_stanza.PipelineAsTokenizer.v1\"\nlang = \"de\"\ndir = null\npackage = \"default\"\nlogging_level = null\nverbose = null\nuse_gpu = true\n\n[nlp.tokenizer.kwargs]\ntokenize_pretokenized = true\n\n[nlp.tokenizer.processors]\n```\n\n### Serialization\n\nThe full Stanza pipeline configuration is stored in the spaCy pipeline\n[config](https:\u002F\u002Fspacy.io\u002Fusage\u002Ftraining#config), so you can save and load the\npipeline just like any other `nlp` pipeline:\n\n```python\n# Save to a local directory\nnlp.to_disk(\".\u002Fstanza-spacy-model\")\n\n# Reload the pipeline\nnlp = spacy.load(\".\u002Fstanza-spacy-model\")\n```\n\nNote that this **does not save any Stanza model data by default**. The Stanza\nmodels are very large, so for now, this package expects you to download the\nmodels separately with `stanza.download()` and have them available either in the\ndefault model directory or in the path specified under `[nlp.tokenizer.dir]` in\nthe config.\n\n### Adding additional spaCy pipeline components\n\nBy default, the spaCy pipeline in the `nlp` object returned by\n`spacy_stanza.load_pipeline()` will be empty, because all `stanza` attributes\nare computed and set within the custom tokenizer,\n[`StanzaTokenizer`](spacy_stanza\u002Ftokenizer.py). But since it's a regular `nlp`\nobject, you can add your own components to the pipeline. For example, you could\nadd\n[your own custom text classification component](https:\u002F\u002Fspacy.io\u002Fusage\u002Ftraining)\nwith `nlp.add_pipe(\"textcat\", source=source_nlp)`, or augment the named entities\nwith your own rule-based patterns using the\n[`EntityRuler` component](https:\u002F\u002Fspacy.io\u002Fusage\u002Frule-based-matching#entityruler).\n","\u003Ca href=\"https:\u002F\u002Fexplosion.ai\">\u003Cimg src=\"https:\u002F\u002Fexplosion.ai\u002Fassets\u002Fimg\u002Flogo.svg\" width=\"125\" height=\"125\" align=\"right\" \u002F>\u003C\u002Fa>\n\n# spaCy + Stanza（原名 StanfordNLP）\n\n本包封装了 [Stanza](https:\u002F\u002Fgithub.com\u002Fstanfordnlp\u002Fstanza)（原名\nStanfordNLP）库，使您能够在 [spaCy](https:\u002F\u002Fspacy.io) 管道中使用斯坦福的模型。斯坦福模型在\nCoNLL 2017 和 2018 共享任务中取得了最高准确率，该任务涉及 68 种语言的分词、词性标注、形态学分析、词形还原以及带标签的依存句法分析。自 v1.0 起，Stanza 还支持部分语言的命名实体识别。\n\n> ⚠️ 此软件包的早期版本曾以\n> [`spacy-stanfordnlp`](https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fspacy-stanfordnlp) 的名义发布。\n\n[![测试](https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Factions\u002Fworkflows\u002Ftests.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Factions\u002Fworkflows\u002Ftests.yml)\n[![PyPi](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fspacy-stanza.svg?style=flat-square)](https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fspacy-stanza)\n[![GitHub](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Fexplosion\u002Fspacy-stanza\u002Fall.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza)\n[![代码风格：black](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fambv\u002Fblack)\n\n通过此封装器，您可以利用由预训练的 `stanza` 模型计算出的以下注释：\n\n- 统计分词（反映在 `Doc` 及其标记中）\n- 词形还原（`token.lemma` 和 `token.lemma_`）\n- 词性标注（`token.tag`、`token.tag_`、`token.pos`、`token.pos_`）\n- 形态学分析（`token.morph`）\n- 依存句法分析（`token.dep`、`token.dep_`、`token.head`）\n- 命名实体识别（`doc.ents`、`token.ent_type`、`token.ent_type_`、`token.ent_iob`、`token.ent_iob_`）\n- 句子分割（`doc.sents`）\n\n## ️️️⌛️ 安装\n\n自 v1.0.0 起，`spacy-stanza` 仅与 **spaCy v3.x** 兼容。要安装最新版本：\n\n```bash\npip install spacy-stanza\n```\n\n对于 spaCy v2，请安装 v0.2.x 版本，并参考\n[v0.2.x 使用文档](https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Ftree\u002Fv0.2.x#-usage--examples)：\n\n```bash\npip install \"spacy-stanza\u003C0.3.0\"\n```\n\n请务必同时\n[下载](https:\u002F\u002Fstanfordnlp.github.io\u002Fstanza\u002Fdownload_models.html) 一个\n[预训练的 Stanza 模型](https:\u002F\u002Fstanfordnlp.github.io\u002Fstanza\u002Fmodels.html)。\n\n## 📖 使用与示例\n\n> ⚠️ **重要提示：** 本包已重构，以充分利用\n> [spaCy v3.0](https:\u002F\u002Fspacy.io) 的功能。先前为\n> [spaCy v2.x](https:\u002F\u002Fv2.spacy.io) 构建的版本工作方式有很大不同。有关旧版本的文档，请参阅此 README 的先前标记版本。\n\n使用 `spacy_stanza.load_pipeline()` 创建一个 `nlp` 对象，可用于通过 Stanza 管道处理文本并生成 spaCy\n[`Doc` 对象](https:\u002F\u002Fspacy.io\u002Fapi\u002Fdoc)。默认情况下，spaCy 管道和 Stanza 管道将使用相同的 `lang` 初始化，例如“en”：\n\n```python\nimport stanza\nimport spacy_stanza\n\n# 如有必要，下载 Stanza 模型\nstanza.download(\"en\")\n\n# 初始化管道\nnlp = spacy_stanza.load_pipeline(\"en\")\n\ndoc = nlp(\"巴拉克·奥巴马出生于夏威夷。他于2008年当选总统。\")\nfor token in doc:\n    print(token.text, token.lemma_, token.pos_, token.dep_, token.ent_type_)\nprint(doc.ents)\n```\n\n如果给定语言的语言数据在 spaCy 中可用，则可以使用相应的语言类作为 `nlp` 对象的基础——例如，\n`English()`。这使您可以使用 spaCy 的词汇属性，如 `is_stop` 或\n`like_num`。`nlp` 对象遵循与其他 spaCy `Language` 类相同的 API——因此，您可以使用 displaCy 可视化 `Doc` 对象，向管道添加自定义组件，使用基于规则的匹配器，以及执行几乎所有通常在 spaCy 中进行的操作。\n\n```python\n# 访问 spaCy 的词汇属性\nprint([token.is_stop for token in doc])\nprint([token.like_num for token in doc])\n\n# 可视化依存关系\nfrom spacy import displacy\ndisplacy.serve(doc)  # 或者如果您在 Jupyter 笔记本中，可以使用 displacy.render\n\n# 使用 nlp.pipe 处理文本\nfor doc in nlp.pipe([\"大量文本\", \"更多文本\", \"...\"]):\n    print(doc.text)\n\n# 结合您自己的自定义管道组件\nfrom spacy import Language\n@Language.component(\"custom_component\")\ndef custom_component(doc):\n    # 在此处对 doc 执行某些操作\n    print(f\"自定义组件被调用：{doc.text}\")\n    return doc\n\nnlp.add_pipe(\"custom_component\")\ndoc = nlp(\"一些文本\")\n\n# 将属性序列化为 numpy 数组\nnp_array = doc.to_array(['ORTH', 'LEMMA', 'POS'])\n```\n\n### Stanza 管道选项\n\n可以根据 Stanza\n[`Pipeline`](https:\u002F\u002Fstanfordnlp.github.io\u002Fstanza\u002Fpipeline.html#pipeline) API 提供额外的选项作为关键字参数：\n\n- 使用 `lang` 参数指定 Stanza 语言。对于没有 spaCy 支持的语言，可在 spaCy 语言设置中使用“xx”：\n\n  ```python\n  # 初始化科普特语管道\n  nlp = spacy_stanza.load_pipeline(\"xx\", lang=\"cop\")\n  ```\n\n- 根据 Stanza Pipeline API 提供 Stanza 管道设置：\n\n  ```python\n  # 使用 `hdt` 包初始化德语管道\n  nlp = spacy_stanza.load_pipeline(\"de\", package=\"hdt\")\n  ```\n\n- 使用 spaCy 分词而非统计分词器（仅适用于英语）：\n\n  ```python\n  nlp = spacy_stanza.load_pipeline(\"en\", processors= {\"tokenize\": \"spacy\"})\n  ```\n\n- 提供任何其他处理器设置作为额外的关键字参数：\n\n  ```python\n  # 提供预分词文本（按空格分词）\n  nlp = spacy_stanza.load_pipeline(\"de\", tokenize_pretokenized=True)\n  ```\n\nspaCy 配置会在 `[nlp.tokenizer]` 块中指定所有 `Pipeline` 选项。例如，上述最后一个示例的配置——带有预分词文本的德语管道：\n\n```ini\n[nlp.tokenizer]\n@tokenizers = \"spacy_stanza.PipelineAsTokenizer.v1\"\nlang = \"de\"\ndir = null\npackage = \"default\"\nlogging_level = null\nverbose = null\nuse_gpu = true\n\n[nlp.tokenizer.kwargs]\ntokenize_pretokenized = true\n\n[nlp.tokenizer.processors]\n```\n\n### 序列化\n\n完整的 Stanza 管道配置存储在 spaCy 管道的\n[配置文件](https:\u002F\u002Fspacy.io\u002Fusage\u002Ftraining#config) 中，因此您可以像保存和加载任何其他 `nlp` 管道一样保存和加载该管道：\n\n```python\n# 保存到本地目录\nnlp.to_disk(\".\u002Fstanza-spacy-model\")\n\n# 重新加载管道\nnlp = spacy.load(\".\u002Fstanza-spacy-model\")\n```\n\n请注意，**默认情况下不会保存任何 Stanza 模型数据**。由于 Stanza 模型体积较大，目前本包要求您使用 `stanza.download()` 单独下载模型，并将其放置在默认模型目录或配置中 `[nlp.tokenizer.dir]` 指定的路径中。\n\n### 添加额外的 spaCy 管道组件\n\n默认情况下，由 `spacy_stanza.load_pipeline()` 返回的 `nlp` 对象中的 spaCy 管道是空的，这是因为所有 `stanza` 属性都在自定义分词器 [`StanzaTokenizer`](spacy_stanza\u002Ftokenizer.py) 中计算并设置。不过，由于它是一个普通的 `nlp` 对象，你可以向管道中添加自己的组件。例如，你可以使用 `nlp.add_pipe(\"textcat\", source=source_nlp)` 添加[你自己的自定义文本分类组件](https:\u002F\u002Fspacy.io\u002Fusage\u002Ftraining)，或者利用[`EntityRuler` 组件](https:\u002F\u002Fspacy.io\u002Fusage\u002Frule-based-matching#entityruler)基于规则模式扩展命名实体识别结果。","# spacy-stanza 快速上手指南\n\n`spacy-stanza` 是一个桥接工具，允许你在 [spaCy](https:\u002F\u002Fspacy.io) 管道中使用斯坦福大学开发的 [Stanza](https:\u002F\u002Fgithub.com\u002Fstanfordnlp\u002Fstanza)（原 StanfordNLP）模型。它结合了 Stanza 在 68 种语言中顶尖的准确率（涵盖分词、词性标注、形态分析、依存句法分析和命名实体识别）与 spaCy 强大的工程化能力。\n\n## 环境准备\n\n- **Python 版本**：建议 Python 3.7+\n- **核心依赖**：\n  - **spaCy v3.x**：本工具 v1.0.0+ 仅兼容 spaCy v3 系列。\n  - **Stanza**：需要安装 Stanza 库并下载对应的预训练模型。\n- **系统要求**：支持 Linux、macOS 和 Windows。若需使用 GPU 加速，请确保已安装 CUDA 及对应的 PyTorch GPU 版本。\n\n## 安装步骤\n\n### 1. 安装 spacy-stanza\n使用 pip 安装最新稳定版：\n\n```bash\npip install spacy-stanza\n```\n\n> **注意**：如果你仍在使用 spaCy v2.x，请安装旧版本：`pip install \"spacy-stanza\u003C0.3.0\"`，但强烈建议升级至 spaCy v3。\n\n### 2. 下载 Stanza 预训练模型\n在使用前，必须通过 Stanza 官方接口下载对应语言的模型数据（例如英语 `en`）：\n\n```python\nimport stanza\nstanza.download(\"en\")\n```\n\n*提示：国内开发者若下载缓慢，可检查网络环境或配置代理，Stanza 模型文件较大，首次下载需耐心等待。*\n\n## 基本使用\n\n### 初始化管道\n使用 `spacy_stanza.load_pipeline()` 创建 nlp 对象。默认情况下，spaCy 和 Stanza 会使用相同的语言代码（如 \"en\"）。\n\n```python\nimport stanza\nimport spacy_stanza\n\n# 确保已下载模型，若未下载请取消下一行注释\n# stanza.download(\"en\")\n\n# 初始化管道\nnlp = spacy_stanza.load_pipeline(\"en\")\n\n# 处理文本\ndoc = nlp(\"Barack Obama was born in Hawaii. He was elected president in 2008.\")\n\n# 输出每个词的详细标注信息\nfor token in doc:\n    print(token.text, token.lemma_, token.pos_, token.dep_, token.ent_type_)\n\n# 输出识别到的实体\nprint(doc.ents)\n```\n\n### 结合 spaCy 高级功能\n生成的 `doc` 对象完全兼容 spaCy API，你可以直接使用词汇属性、可视化依赖关系或添加自定义组件：\n\n```python\n# 使用 spaCy 内置词汇属性\nprint([token.is_stop for token in doc])  # 判断是否为停用词\nprint([token.like_num for token in doc]) # 判断是否为数字\n\n# 可视化依存句法树\nfrom spacy import displacy\ndisplacy.serve(doc)  # 在浏览器中查看，或在 Jupyter 中使用 displacy.render(doc)\n\n# 批量处理文本\ntexts = [\"Lots of texts\", \"Even more texts\", \"...\"]\nfor doc in nlp.pipe(texts):\n    print(doc.text)\n\n# 添加自定义组件\nfrom spacy import Language\n\n@Language.component(\"custom_component\")\ndef custom_component(doc):\n    print(f\"Custom component called: {doc.text}\")\n    return doc\n\nnlp.add_pipe(\"custom_component\")\ndoc = nlp(\"Some text\")\n```\n\n### 保存与加载\n你可以像标准 spaCy 模型一样保存管道配置（注意：默认不保存庞大的 Stanza 模型文件，加载时需确保本地已存在对应模型）：\n\n```python\n# 保存到本地目录\nnlp.to_disk(\".\u002Fstanza-spacy-model\")\n\n# 重新加载\nnlp = spacy.load(\".\u002Fstanza-spacy-model\")\n```","某跨国电商数据团队需要构建多语言评论分析系统，从全球 68 种语言的用戶反馈中提取关键实体与情感依赖关系。\n\n### 没有 spacy-stanza 时\n- **多语言支持割裂**：团队需为不同语种维护多套 NLP 流程，非英语模型（如小语种）的依存句法分析准确率极低，导致情感归因错误。\n- **生态整合困难**：斯坦福 Stanza 的高精度模型输出格式与 spaCy 不兼容，无法直接利用 spaCy 强大的规则匹配器（Matcher）或可视化组件 displaCy。\n- **开发效率低下**：工程师需编写大量胶水代码进行数据格式转换，且难以在统一管道中同时调用 spaCy 的词性标注与 Stanza 的形态学分析功能。\n- **实体识别缺失**：旧版方案在处理部分语种时缺乏命名实体识别（NER）能力，无法自动提取商品名或地点，只能依赖人工规则硬编码。\n\n### 使用 spacy-stanza 后\n- **一键接入顶尖模型**：通过 `spacy_stanza.load_pipeline` 直接加载斯坦福在 CoNLL 任务中夺冠的多语言模型，瞬间提升 68 种语言的句法分析与词形还原精度。\n- **无缝融合 spaCy 生态**：Stanza 的分析结果直接映射为标准的 spaCy `Doc` 对象，团队可立即复用现有的实体匹配规则、自定义组件及 displaCy 可视化看板。\n- **管道构建极简**：无需任何格式转换代码，直接在统一管道中获取 `token.morph`（形态分析）和 `token.dep`（依存关系），开发周期从数周缩短至数天。\n- **全功能多语言 NER**：直接启用选定语种的命名实体识别能力，自动精准提取全球评论中的品牌与地点，大幅减少人工清洗成本。\n\nspacy-stanza 的核心价值在于打破了高精度学术模型与工业级工程框架之间的壁垒，让开发者能以 spaCy 的便捷方式驾驭斯坦福的最强多语言能力。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fexplosion_spacy-stanza_d7ed500f.png","explosion","Explosion","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fexplosion_6bc9ac84.png","Software company specializing in developer tools and tailored solutions for AI and Natural Language Processing",null,"contact@explosion.ai","https:\u002F\u002Fexplosion.ai","https:\u002F\u002Fgithub.com\u002Fexplosion",[81],{"name":82,"color":83,"percentage":84},"Python","#3572A5",100,745,63,"2026-04-11T05:16:52","MIT","","可选 (配置中显示 use_gpu = true，但未强制要求)","未说明",{"notes":93,"python":91,"dependencies":94},"spacy-stanza v1.0.0+ 仅兼容 spaCy v3.x；若使用 spaCy v2.x 需安装 v0.2.x 版本。必须单独下载预训练的 Stanza 模型（默认不随包保存），模型文件较大。支持 68 种语言的词法分析，部分语言支持命名实体识别。",[95,96],"spacy>=3.0","stanza",[16,98,35,14],"其他",[100,101,102,103,104,105,106,107,108,109,96],"nlp","natural-language-processing","machine-learning","data-science","spacy","spacy-pipeline","stanford-nlp","stanford-corenlp","stanford-machine-learning","corenlp","2026-03-27T02:49:30.150509","2026-04-12T05:24:52.157507",[113,118,123,128,133,138],{"id":114,"question_zh":115,"answer_zh":116,"source_url":117},30227,"如何在多进程模式下使用 spacy-stanza（n_process > 1）？","在 spaCy v3 中，可以通过设置 PyTorch 的线程数来解决多进程问题。在使用 `nlp.pipe` 之前，添加 `torch.set_num_threads(1)`。示例代码如下：\nimport spacy_stanza\nimport torch\n\nnlp = spacy_stanza.load_pipeline(\"en\")\ntorch.set_num_threads(1)\n\ntext = [\"This is a sentence.\"] * 100\nfor doc in nlp.pipe(text, batch_size=50, n_process=2):\n    print(doc.is_parsed)\n注意：此方法在 Linux 上有效，但在 macOS 上可能仍有问题。","https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Fissues\u002F34",{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},30228,"导入 spacy_stanza 时出现 'cannot import name hash_unicode from murmurhash' 错误怎么办？","这通常是由于依赖包版本冲突导致的。可以通过重新安装相关包来解决。请依次执行以下命令：\npip uninstall murmurhash\npip uninstall spacy\npip install -U spacy\n这将确保安装兼容版本的 murmurhash 和 spacy。","https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Fissues\u002F66",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},30229,"当 Token 文本与输入文本不匹配（如德语缩写或意大利语复合词）时导致无限循环或报错，如何解决？","这是一个已知问题，通常发生在分词后的 token 拼接结果与原输入字符串不一致时（例如德语 \"im\" 被拆分为 \"in dem\"）。维护者已在最新版本中发布了修复方案。\n修复后的行为是：如果 token 能与原文本对齐，则保留空白信息；如果无法对齐（如多词扩展），则返回 token 但 `Doc.text` 可能不完全准确。建议升级到最新版本的 spacy-stanza 以获取此修复。","https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Fissues\u002F2",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},30230,"如何处理包含特殊 Unicode 字符（如连字符、微符号）导致的分词异常？","对于包含非标准 ASCII 字符（如 `µ`, `‐`, `°`）的文本，建议先在预处理阶段进行清理。\n1. 尝试创建一个特殊字符列表，并在传入 spaCy 之前将其替换为标准 ASCII 字符（例如将 `‐` 替换为 `-`）。\n2. 如果替换无效，可以使用 `unidecode` 库将文本转换为纯 ASCII。例如 `unidecode` 会将 `µl` 转为 `ul`，`50°C` 转为 `50degC`。\n注意：转换后需确认语义是否受影响，但对于解决分词器行为异常通常有效。","https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Fissues\u002F68",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},30231,"spacy-stanza 是否支持 spaCy v3？","是的，spacy-stanza v1.0.0 及更高版本已正式支持 spaCy v3。如果您之前使用的是旧版本，请升级 spacy-stanza：\npip install -U spacy-stanza\n新版本改进了 `pipe` 方法的实现，使其更符合 spaCy v3 的标准，并支持更高效的批处理模式。","https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Fissues\u002F61",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},30232,"解析大型语料库时出现大量 UserWarning 关于命名实体和多词令牌扩展的警告，如何消除？","这些警告是因为 Stanza 的分词器将某些词扩展为多个 token（多词令牌），导致字符偏移量无法直接映射到有效的 spaCy token，从而无法设置命名实体。\n虽然这会生成警告，但通常不影响核心解析功能。如果警告过多影响日志阅读，可以在代码中临时过滤此类警告：\nimport warnings\nwarnings.filterwarnings(\"ignore\", message=\".*multi-word token.*\")\n或者 \"ignore\", message=\".*character offsets don't map.*\")\n注意：这不会修复底层的数据对齐问题，仅用于抑制控制台输出。","https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Fissues\u002F52",[144,149,154,159,164,169,174,179,184,189,194,199,204,209,214,219,224],{"id":145,"version":146,"summary_zh":147,"released_at":148},214564,"v1.0.4","* 将 stanza 支持扩展到 stanza v1.6。","2023-10-09T08:43:49",{"id":150,"version":151,"summary_zh":152,"released_at":153},214565,"v1.0.3","* 将 stanza 支持扩展到 stanza v1.5。","2023-03-14T08:22:51",{"id":155,"version":156,"summary_zh":157,"released_at":158},214566,"v1.0.2","- 将 stanza 支持扩展到 stanza v1.4。","2022-05-27T14:44:20",{"id":160,"version":161,"summary_zh":162,"released_at":163},214567,"v1.0.1","- 将段落支持扩展到段落 v1.3。\n- 如果 FEATS 中缺少 XPOS，则将 `token.tag` 的回退逻辑修改为 UPOS。（感谢 @BramVanroy！）","2021-11-09T12:41:01",{"id":165,"version":166,"summary_zh":167,"released_at":168},214568,"v0.2.5","## 🔴 错误修复\r\n\r\n* 修复问题 #56：为所有支持的语言添加入口点\r\n* 修复问题 #59：修复尾部空白符标记的处理","2021-03-10T14:54:46",{"id":170,"version":171,"summary_zh":172,"released_at":173},214569,"v1.0.0","> **此版本需要 [spaCy v3](https:\u002F\u002Fspacy.io\u002Fusage\u002Fv3)。** 请参阅更新后的使用文档以获取更多详细信息：https:\u002F\u002Fgithub.com\u002Fexplosion\u002Fspacy-stanza\u002Ftree\u002Fv1.0.0#-usage--examples\n\n## ✨ 新功能和改进\n\n- 针对 spaCy v3.0 重构库\n- 配置系统集成\n- 新的 API，用于按照 Stanza 的 `Pipeline` API 加载 Stanza 模型\n- 在 `token.morph` 下包含形态分析\n\n## 🔴 错误修复\n\n* 修复问题 #59：修复尾部空白标记的处理","2021-03-04T14:52:22",{"id":175,"version":176,"summary_zh":177,"released_at":178},214570,"v0.2.4","修复问题 #43：修复使用 spaCy 进行分词时的对齐问题\n修复问题 #47：更新依赖项，以兼容 stanza v1.1","2020-10-10T11:17:39",{"id":180,"version":181,"summary_zh":182,"released_at":183},214571,"v0.2.3","* 修复问题 #30、#33：重写对齐逻辑，以保留空白标记。","2020-06-26T08:55:37",{"id":185,"version":186,"summary_zh":187,"released_at":188},214572,"v0.2.2","* 改进对标记对齐错误的文本的处理。\n* 增加将 `token.feats` 用作标签的功能。\n* 直接从 Stanza 流水线对象获取语言属性。\n\n感谢 @yuhaozhang 和 @SergeyShk 提供的拉取请求。","2020-06-25T09:28:52",{"id":190,"version":191,"summary_zh":192,"released_at":193},214573,"v0.2.1","* 如果 Stanza NER 模型返回的实体无法映射到 Stanza 分词器生成的分词，则添加警告，并不填充 `doc.ents`。","2020-03-19T10:28:25",{"id":195,"version":196,"summary_zh":197,"released_at":198},214574,"v0.2.0","> ⚠️ This release changes the package name from `spacy-stanfordnlp` to `spacy-stanza`.\r\n\r\n* Update to [`stanza`](https:\u002F\u002Fstanfordnlp.github.io\u002Fstanza\u002F) (formerly `stanfordnlp`).\r\n* Add support for named entities via the `doc.ents` and respective token attributes, if available.\r\n* Rename `StanfordNLPLanguage` to `StanzaLanguage`.\r\n* Change internal language code from `snlp_xx` to `stanza_xx`.","2020-03-17T18:18:48",{"id":200,"version":201,"summary_zh":202,"released_at":203},214575,"v0.1.3","* Fix `stanfordnlp` version pin in `setup.py`.","2019-07-09T20:05:44",{"id":205,"version":206,"summary_zh":207,"released_at":208},214576,"v0.1.2","* Relax version requirement for `stanfordnlp` to include v0.2.0.\r\n\r\nThanks to @buhrmann for the pull request!","2019-05-31T09:59:34",{"id":210,"version":211,"summary_zh":212,"released_at":213},214577,"v0.1.1","* Add `Tokenizer.pipe` method for duck-type compatibility with spaCy's built-in tokenizer.\r\n* Allow passing of empty text strings for compatibility with spaCy.\r\n\r\nThanks to @buhrmann for the pull requests!","2019-05-11T16:36:49",{"id":215,"version":216,"summary_zh":217,"released_at":218},214578,"v0.1.0","* Employ user hooks to map StanfordNLP's pretrained word embeddings to spaCy's token vectors.\r\n* Fix spaCy dependency.\r\n\r\nThanks to @buhrmann for the pull request!","2019-04-24T15:02:48",{"id":220,"version":221,"summary_zh":222,"released_at":223},214579,"v0.0.3","* Fix issue #2: Improve handling of input text \u002F token text mismatches, e.g. `\"des\"` &rarr; `[\"de\", \"les\"]`.\r\n* Fix issue #3: Set lemmas after setting POS tags to prevent spaCy from applying its own lemma rules.","2019-02-07T23:53:58",{"id":225,"version":226,"summary_zh":76,"released_at":227},214580,"v0.0.2","2019-02-01T00:20:52"]