cookiecutter-spacy-fastapi API 完全参考:/entities 与 /entities_by_type 两个 NER 接口详解

📅 2026/8/26 20:13:41
cookiecutter-spacy-fastapi API 完全参考:/entities 与 /entities_by_type 两个 NER 接口详解
cookiecutter-spacy-fastapi API 完全参考/entities 与 /entities_by_type 两个 NER 接口详解【免费下载链接】cookiecutter-spacy-fastapiCookiecutter API for creating Custom Skills for Azure Search using Python and Docker项目地址: https://gitcode.com/gh_mirrors/co/cookiecutter-spacy-fastapicookiecutter-spacy-fastapi是一个基于 Cookiecutter 的项目模板帮你一键生成基于spaCy FastAPI的命名实体识别NERAPI 服务并支持 Docker 部署。它内置/entities与/entities_by_type两个 NER 接口输出格式兼容 Azure Search 自定义认知技能Cognitive Skill是快速搭建命名实体抽取服务的实用脚手架。上图生成项目后访问/docs即可看到的 NER 接口在线文档与调试页面一键生成你的 NER 服务什么是 cookiecutter-spacy-fastapi这个项目把三样东西打包成了一个模板组件作用Cookiecutter项目生成器一条命令产出完整工程目录spaCy工业级 NLP 工具负责真正的实体识别FastAPI高性能 Web 框架自动生成/docs交互文档它解决的核心痛点是不用手写项目结构直接得到带 Dockerfile、测试用例、示例请求、自动文档的完整服务。快速上手步骤安装 Cookiecutter需 1.4.0 或更高版本pip install --user cookiecutter生成项目cookiecutter https://gitcode.com/gh_mirrors/co/cookiecutter-spacy-fastapi生成后进入项目目录路径名为{{cookiecutter.project_slug}}/按模板提示填入 spaCy 默认模型名如英文常用en_core_web_sm即可运行。两个接口共用的请求结构理解请求体是调用两个接口的前提。请求由RecordsRequest模型定义位于{{cookiecutter.project_slug}}/app/models.py结构如下{ values: [ { recordId: a1, data: { text: Japan is a country. Washington is a state where most people speak English., language: en } } ] }values文档列表天然支持批量处理一次请求可传多条文本recordId每条文档的唯一标识响应中会原样带回方便和原始数据对齐data.text待识别文本data.language语言代码默认en。这个values recordId的设计正是 Azure Search 认知技能的标准入参约定模板在{{cookiecutter.project_slug}}/app/data/example_request.json中内置了示例请求/docs页面可直接填入试用。/entities 接口详解返回原始实体列表POST /entities是最直接的 NER 接口把一批文本送入 spaCy 模型返回每条文档识别到的全部命名实体。路由实现在{{cookiecutter.project_slug}}/app/api.py中核心逻辑委托给{{cookiecutter.project_slug}}/app/spacy_extractor.py里的SpacyExtractor类它通过nlp.pipe()批量处理文本比逐条调用更快。响应结构{ values: [ { recordId: a1, data: { entities: [ { name: Washington, label: GPE, matches: [ {start: 25, end: 35, text: Washington} ] } ] } } ] }每个实体对象包含三个字段字段说明name实体名称全小写时会自动首字母大写如google→GooglelabelspaCy 实体标签如ORG、PERSON、GPEmatches该实体在原文中的所有出现位置含 start / end 偏移和原文片段一个值得注意的细节同一实体在文中出现多次时会被合并为一条记录所有位置收进matches数组而不是重复输出多条实体响应更干净。/entities_by_type 接口详解按类型分组返回POST /entities_by_type的请求体与/entities完全相同区别在输出它把每条文档的实体按标签分组直接返回「类型 → 实体名列表」的结构{ values: [ { recordId: a1, data: { organizations: [Google, Apple, Amazon], products: [Siri, Alexa, Echo and Dot], gpes: [Japan, Washington] } } ] }支持的 17 种实体类型分组映射由ENT_PROP_MAP定义位于{{cookiecutter.project_slug}}/app/models.py覆盖 spaCy 默认模型的全部标签标签返回字段含义ORGorganizations组织、机构PERSONpeople人物GPEgpes国家、州、城市LOClocations非政区地名FACfacilities设施机场、桥梁等PRODUCTproducts产品、作品WORK_OF_ARTworksOfArt书籍、影视等EVENTevents事件LAWlaws法律法规LANGUAGElanguages语言NORPnorps民族、宗教等DATEdates日期TIMEtimes时间PERCENTpercentages百分比MONEYmoney货币金额QUANTITYquanities数量CARDINAL / ORDINALcardinals / ordinals基数词 / 序数词 这个接口可以直接作为Azure Search 自定义认知技能使用——响应中的字段名就是 Azure 侧可直接引用的属性名无需二次转换。两个接口怎么选对比一览对比项/entities/entities_by_type输出形态实体列表含 label、位置类型 → 实体名列表是否有位置信息✅ start / end 偏移❌ 只有名称重复实体合并为一条 matches自动去重合并典型场景需要标注、高亮、溯源按类型汇总、喂给搜索系统经验法则需要知道实体在原文哪个位置、或需要原始标签时用/entities只需要「这段文本里有哪些人、哪些公司」这种按类型归拢的结果时用/entities_by_type。本地运行与部署从调试到 Docker进入生成的项目目录创建虚拟环境并启动cd ./你的项目目录 bash ./create_virtualenv.sh uvicorn app.api:app --reload浏览器打开http://localhost:8000/docs即可看到上图所示的 NER 接口文档页也可访问/redoc查看另一种文档样式。项目自带测试用例{{cookiecutter.project_slug}}/app/tests/test_api.py覆盖文档重定向和 NER 调用可验证服务是否正常。部署时直接使用仓库内的{{cookiecutter.project_slug}}/Dockerfile它基于 uvicorn-gunicorn-fastapi 基础镜像自动执行spacy download拉取你在模板中指定的模型容器监听 8080 端口适合直接对接 Azure Search 或容器编排平台。总结cookiecutter-spacy-fastapi 用一条命令帮你搭好了一个生产可用的 NER 服务骨架/entities给你带位置信息的原始实体/entities_by_type给你按 17 种类型分组的整洁结果两者入参相同、格式兼容 Azure Search 认知技能。对于想快速把 spaCy 实体识别能力暴露为 API 的团队这套模板能省掉绝大部分脚手架工作让你把精力留给模型选择和调优。【免费下载链接】cookiecutter-spacy-fastapiCookiecutter API for creating Custom Skills for Azure Search using Python and Docker项目地址: https://gitcode.com/gh_mirrors/co/cookiecutter-spacy-fastapi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考