tf_ner
tf_ner 把“命名实体识别”这件事拆成了几个极简的 TensorFlow 脚本,每个模型只有约 100 行代码,却能跑出论文级的 91+ F1 成绩。它用 tf.estimator 和 tf.data 把训练、评估、预测封装得干净利落,解决了网上常见实现“又旧又乱还跑不通”的痛点。
如果你刚入门 NLP、想用最少代码理解 Bi-LSTM+CRF 在 TensorFlow 里的正确姿势,或者你是研究员,需要快速验证新想法而不想被工程细节拖慢,tf_ner 都很合适。只要把文本和标签按 IOBES 格式准备好,脚本会自动帮你生成词典、加载 GloVe,一行命令就能开训。
使用场景
某金融科技公司的 NLP 团队正致力于从海量非结构化的信贷审批报告中,自动提取借款人姓名、企业名称及金额等关键实体,以构建自动化风控系统。
没有 tf_ner 时
- 代码冗余且难维护:团队需从零搭建基于 TensorFlow 的 Bi-LSTM+CRF 模型,数百行底层数据加载与估算器逻辑导致开发周期长达数周。
- 复现论文效果困难:网络上现有的开源实现往往架构陈旧或逻辑复杂,难以复现学术论文中报道的 SOTA(最先进)性能指标。
- 实验迭代缓慢:由于缺乏模块化设计,每次尝试新的网络结构或超参数调整时,都需要修改大量耦合代码,验证新想法的效率极低。
- 数据预处理繁琐:缺少标准化的
tf.data流水线示例,处理自定义的 IOBES 标注格式和 GloVe 词向量映射需要耗费大量精力调试。
使用 tf_ner 后
- 快速落地生产模型:直接复用
lstm_crf/main.py中仅约 100 行的核心代码,利用其内置的tf.estimator和tf.data接口,三天内即可完成模型部署。 - 确保高精度识别:借助其经过验证的架构,模型在内部测试集上平均 F1 分数迅速达到 91% 以上,表现媲美甚至优于主流论文结果。
- 敏捷验证创新思路:清晰的独立脚本结构让算法工程师能专注于业务逻辑,轻松替换组件以测试新策略,大幅缩短研发迭代周期。
- 标准化数据流程:遵循项目提供的标准数据格式指南,快速编写脚本将公司内部文档转换为训练所需的
.words.txt和.tags.txt,无缝对接预训练词向量。
tf_ner 通过提供简洁、高效且状态先进的参考实现,将原本复杂的序列标注任务转化为可快速验证的工程实践,显著降低了高性能 NER 模型的落地门槛。
运行环境要求
- 未说明
未说明
未说明

快速开始
Tensorflow - 命名实体识别
每个文件夹都包含一个__独立的__、__简短(约100行Tensorflow代码)__的main.py脚本,该脚本使用tf.estimator和tf.data实现了一个基于神经网络的命名实体识别(NER)模型。

这些实现__简单、高效且处于当前最先进水平__,因为它们的表现__至少与论文中报告的结果相当__。最佳模型的平均F1分数达到91.21。据我所知,目前网络上已有的实现要么过于复杂、要么已经过时,而且并不总是准确的(包括我的先前工作)。本仓库旨在解决这一问题,希望能让人们快速测试和验证新想法。
脚本lstm_crf/main.py也可以被视为一个__关于Tensorflow高级API tf.estimator和tf.data在自然语言处理中的简单入门__。这里有一篇更详细的讨论,介绍了这个实现以及tf.estimator和tf.data的使用
安装
你需要__Python 3__——如果你还没有切换到Python 3,现在就去做吧。
你还需要安装tf_metrics(Tensorflow的多分类精确率、召回率和F1指标)。
pip install git+https://github.com/guillaumegenthial/tf_metrics.git
或者
git clone https://github.com/guillaumegenthial/tf_metrics.git
cd tf_metrics
pip install .
数据格式
请遵循data/example。
- 对于
name在{train, testa, testb}中,创建文件{name}.words.txt和{name}.tags.txt,每行包含一个句子,每个单词/标签之间用空格分隔。我建议使用IOBES标注方案。 - 创建文件
vocab.words.txt、vocab.tags.txt和vocab.chars.txt,每行包含一个标记。 - 创建一个
glove.npz文件,其中包含一个形状为(size_vocab_words, 300)的数组embeddings,使用GloVe 840B向量和np.savez_compressed生成。
从{name}.words.txt和{name}.tags.txt文件构建vocab和glove.npz文件的脚本示例已在data/example中提供。详见:

如果你只是想开始使用,一旦你创建了{name}.words.txt和{name}.tags.txt文件,只需执行:
cd data/example
make download-glove
make build
(这些命令将构建__示例__数据集)
请注意,示例数据集仅用于调试目的,对训练实际模型帮助不大
开始使用
一旦你生成了所有所需的数据文件,只需选择其中一个main.py脚本。然后,在main.py顶部修改DATADIR变量。
要训练、评估并将预测结果写入文件,运行:
cd models/lstm_crf
python main.py
(如果未在main.py中更改DATADIR,这些命令将在__示例__数据集上训练一个双向LSTM + CRF模型。)
每个模型子目录都包含了操作说明的详细分解。
模型
灵感来源于以下论文:
- 用于序列标注的双向LSTM-CRF模型 by Huang, Xu and Yu
- 用于命名实体识别的神经架构 by Lample et al.
- 通过双向LSTM-CNNs-CRF实现端到端序列标注 by Ma et Hovy
你也可以阅读这篇博客文章。
为了避免任何不希望的偏移(解释见这些CS224N笔记),词向量__不会重新训练__。
这些模型在CoNLL2003共享任务上进行了测试。
训练时间仅供参考。是在一台2016年款13英寸MBPro 3.3 GHz Intel Core i7上测得的。
对于每个模型,我们进行5次实验:
- 仅在
train上训练 - 在
testa上进行__早停__ - 根据
testa上的表现(token-level F1)选出5次中的最佳 - 报告__F1分数的均值和标准差__(来自官方
conlleval脚本的entity-level F1) - 在
testb上选出最佳作为参考(但不应用于比较,因为这只是对最终测试集的过拟合)
此外,我们还进行另外5次实验,保留权重的__指数移动平均(EMA)__(用于评估),并报告最佳F1、均值/标准差。
正如你所见,没有明确的统计证据表明两种基于字符的模型中哪一种更好。EMA似乎在大多数情况下都有帮助。另外,考虑到模型的复杂性和性能差距相对较小(0.6 F1),使用lstm_crf模型可能是大多数具体应用的安全选择。
lstm_crf
架构
- GloVe 840B向量
- 双向LSTM
- CRF
相关论文 用于序列标注的双向LSTM-CRF模型 by Huang, Xu and Yu
训练时间 ~ 20分钟
train |
testa |
testb |
论文,testb |
|
|---|---|---|---|---|
| 最佳 | 98.45 | 93.81 | 90.61 | 90.10 |
| 最佳(EMA) | 98.82 | 94.06 | 90.43 | |
| 均值 ± 标准差 | 98.85 ± 0.22 | 93.68 ± 0.12 | 90.42 ± 0.10 | |
| 均值 ± 标准差(EMA) | 98.71 ± 0.47 | 93.81 ± 0.24 | 90.50 ± 0.21 | |
| 绝对最佳 | 90.61 | |||
| 绝对最佳(EMA) | 90.75 |
chars_lstm_lstm_crf
架构
- GloVe 840B向量
- 字符嵌入
- 字符双向LSTM
- 双向LSTM
- CRF
相关论文 用于命名实体识别的神经架构 by Lample et al.
训练时间 ~ 35分钟
train |
testa |
testb |
论文,testb |
|
|---|---|---|---|---|
| 最佳 | 98.81 | 94.36 | 91.02 | 90.94 |
| 最佳(EMA) | 98.73 | 94.50 | 91.14 | |
| 均值 ± 标准差 | 98.83 ± 0.27 | 94.02 ± 0.26 | 91.01 ± 0.16 | |
| 均值 ± 标准差(EMA) | 98.51 ± 0.25 | 94.20 ± 0.28 | 91.21 ± 0.05 | |
| 绝对最佳 | 91.22 | |||
| 绝对最佳(EMA) | 91.28 |
chars_conv_lstm_crf
架构
- GloVe 840B 向量
- 字符嵌入
- 字符一维卷积与最大池化
- 双向 LSTM
- CRF
相关论文 通过双向 LSTM-CNNs-CRF 实现端到端序列标注,作者为 Ma 和 Hovy
训练时间 ~ 35 分钟
train |
testa |
testb |
论文中的 testb |
|
|---|---|---|---|---|
| 最佳 | 99.16 | 94.53 | 91.18 | 91.21 |
| 最佳(EMA) | 99.44 | 94.50 | 91.17 | |
| 均值 ± 标准差 | 98.86 ± 0.30 | 94.10 ± 0.26 | 91.20 ± 0.15 | |
| 均值 ± 标准差(EMA) | 98.67 ± 0.39 | 94.29 ± 0.17 | 91.13 ± 0.11 | |
| 绝对最佳 | 91.42 | |||
| 绝对最佳(EMA) | 91.22 |
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。