sequence-labeling-BiLSTM-CRF

GitHub
703 255 简单 1 次阅读 2个月前GPL-3.0开发框架视频音频语言模型图像
AI 解读 由 AI 自动生成,仅供参考

sequence-labeling-BiLSTM-CRF 是一个基于 TensorFlow 打造的开源项目,专为自然语言处理中的序列标注任务而设计。它核心解决了如何从文本中精准识别并标记特定信息的问题,例如在命名实体识别中提取人名地名、在词性标注中判断单词属性,或进行中文分句与标点恢复等。

该工具实现了经典的 BiLSTM+CRF 神经网络模型,被业界公认为此类任务中稳定且高效的基准方案。其独特亮点在于极高的可配置性与模块化架构:用户不仅能灵活调整编码器(如双向 LSTM)、解码器(CRF 或 Softmax)及嵌入层等模型结构,还能通过配置文件轻松切换训练、测试、交互式预测或 API 服务等多种运行模式。此外,项目内置了完善的日志记录功能,并提供了一个基于 Django 的 Web 演示应用,让效果验证更加直观。

sequence-labeling-BiLSTM-CRF 特别适合 NLP 领域的研究人员、算法工程师以及希望深入理解序列标注模型的初学者使用。清晰的代码结构和友好的文档支持,使其成为学习经典模型实现或快速构建自定义标注系统的理想起点。

使用场景

某电商公司的数据团队需要从海量用户评论中自动提取品牌名、产品型号及故障部位,以构建智能客服知识库。

没有 sequence-labeling-BiLSTM-CRF 时

  • 识别精度低且上下文缺失:传统规则或简单模型难以区分“苹果”是指水果还是手机品牌,导致实体抽取错误率高,无法处理复杂的语言歧义。
  • 开发门槛高且重复造轮子:工程师需从零搭建双向 LSTM 与条件随机场(CRF)的底层代码,配置超参数繁琐,耗时数周才能跑通基线模型。
  • 扩展性差难以适配新业务:当需要新增“情感极性”或“服务网点”等标签体系时,原有代码耦合严重,修改标注方案(如从 BIO 切换到 BIESO)极易引发系统崩溃。
  • 缺乏可视化与调试支持:训练过程黑盒化,缺少直观的日志监控和 Web 演示界面,排查模型收敛困难或预测偏差如同“盲人摸象”。

使用 sequence-labeling-BiLSTM-CRF 后

  • 语义理解精准稳定:利用 BiLSTM 捕捉长距离上下文依赖,结合 CRF 约束标签转移逻辑,显著提升了品牌与故障词的边界识别准确率,完美解决歧义问题。
  • 开箱即用大幅提效:基于 TensorFlow 的模块化实现支持通过配置文件一键切换训练/预测模式,团队仅需一天即可完成数据接入并产出高质量模型。
  • 灵活配置适应多变需求:内置多种编码器(Bi-LSTM/Bigru)与标注方案,新增业务标签只需调整配置文件,无需改动核心代码,轻松实现热迭代。
  • 全流程透明可观测:提供详细的训练指标日志(Precision/Recall/F1)及 Web 演示 Demo,开发人员可实时观察模型表现并快速定位优化方向。

sequence-labeling-BiLSTM-CRF 将复杂的序列标注算法转化为可配置的工程组件,让企业能以最低成本构建高精度的自然语言理解能力。

运行环境要求

GPU

未说明

内存

未说明

依赖
notes该项目基于 TensorFlow 1.x 版本(推荐 1.10.0),需注意与新版 TensorFlow 的兼容性问题。支持词级和字符级嵌入,可用于命名实体识别、分词等多种序列标注任务。包含可选的 Django Web 演示服务。
python>=3.5
tensorflow>=1.8
numpy
pandas
Django==1.11.8
jieba
sequence-labeling-BiLSTM-CRF hero image

快速开始

BiLSTM+CRF 用于序列标注任务

作者 Python 可配置 TensorFlow BiLSTM+CRF 许可证


🚀🚀🚀 一个基于 TensorFlow 的 BiLSTM+CRF 模型实现,用于序列标注任务。

项目特点
  • 基于 TensorFlow API。
  • 高度 可扩展;所有内容均可 配置
  • 模块化设计,结构清晰。
  • 对初学者非常友好。
  • 易于自定义和二次开发。

任务与模型

序列标注 是自然语言处理中对序列预测任务建模的一种典型方法。常见的序列标注任务包括:

  1. 词性标注 (POS Tagging)
  2. 短语切分 (Chunking)
  3. 命名实体识别 (NER)
  4. 标点符号恢复
  5. 句子边界检测
  6. 作用域检测
  7. 中文分词 (CWG)
  8. 语义角色标注 (SRL)
  9. 口语理解
  10. 事件抽取
  11. 等等……

命名实体识别(NER)任务为例:

斯坦福大学位于加利福尼亚州。
B-ORG    I-ORG      O       O  B-LOC      O

这里需要提取两个实体:斯坦福大学加利福尼亚州。具体来说,文本中的每个 token 都会打上相应的 label。例如:{token:斯坦福, label:B-ORG}。序列标注模型的目标是根据给定的 token 序列,预测出对应的 label 序列。

Lample 等人, 2016 提出的 BiLSTM+CRF,迄今为止是序列标注任务中最经典、最稳定的神经网络模型。 BiLSTM+CRF


项目

功能支持

  • 配置所有设置:

    • 运行模式:[train/test/interactive_predict/api_service]
    • 数据集(输入/输出):
    • 标注方案:
      • [BIO/BIESO]
      • [PER|LOC|ORG]
      • ...
    • 模型配置:
      • 编码器:BGU/Bi-LSTM,层数,双向/单向
      • 解码器:crf/softmax,
      • 嵌入层次:字符/单词,
      • 是否使用自注意力机制
      • 超参数,
      • ...
    • 训练设置:
      • 监控指标:[精确率、召回率、F1 分数、准确率]
      • 优化器:GD/Adagrad/AdaDelta/RMSprop/Adam
    • 测试设置,
    • API 服务设置,
  • 记录所有日志

  • 提供 Web 应用演示,便于展示

  • 面向对象设计:BILSTM_CRF、Datasets、Configer、utils

  • 模块化设计,结构清晰,易于二次开发。

更多内容请参阅 HandBook

需求

  • python >=3.5
  • tensorflow >=1.8
  • numpy
  • pandas
  • Django==1.11.8
  • jieba
  • ...

安装

选项 A:

直接下载仓库使用。

git clone https://github.com/scofield7419/sequence-labeling-BiLSTM-CRF.git
pip install -r requirements.txt

选项 B: 待开发

将 BiLSTM-CRF 包作为模块安装。

pip install BiLSTM-CRF

使用方法:

from BiLSTM-CRF.engines.BiLSTM_CRFs import BiLSTM_CRFs as BC
from BiLSTM-CRF.engines.DataManager import DataManager
from BiLSTM-CRF.engines.Configer import Configer
from BiLSTM-CRF.engines.utils import get_logger

...

config_file = r'/home/projects/system.config'
configs = Configer(config_file)

logger = get_logger(configs.log_dir)
configs.show_data_summary(logger) # 可选

dataManager = DataManager(configs, logger)
model = BC(configs, logger, dataManager)
        
###### 模式 == 'train':
model.train()

###### 模式 == 'test':
model.test()

###### 模式 == '单句预测':
sentence_tokens, entities, entities_type, entities_index = model.predict_single(sentence)
if configs.label_level == 1:
    print("\n提取的实体:\n %s\n\n" % ("\n".join(entities)))
elif configs.label_level == 2:
    print("\n提取的实体:\n %s\n\n" % ("\n".join([a + "\t(%s)" % b for a, b in zip(entities, entities_type)])))


###### 模式 == 'API 服务 Web 应用':
cmd_new = r'cd demo_webapp; python manage.py runserver %s:%s' % (configs.ip, configs.port)
res = os.system(cmd_new)

在浏览器中打开 `ip:port`。

模块结构


├── main.py
├── system.config
├── HandBook.md
├── README.md
│
├── checkpoints
│   ├── BILSTM-CRFs-datasets1
│   │   ├── checkpoint
│   │   └── ...
│   └── ...
├── data
│   ├── example_datasets1
│   │   ├── logs
│   │   ├── vocabs
│   │   ├── test.csv
│   │   ├── train.csv
│   │   └── dev.csv
│   └── ...
├── demo_webapp
│   ├── demo_webapp
│   ├── interface
│   └── manage.py
├── engines
│   ├── BiLSTM_CRFs.py
│   ├── Configer.py
│   ├── DataManager.py
│   └── utils.py
└── tools
    ├── calcu_measure_testout.py
    └── statis.py
  • 文件夹

    • engines 文件夹中,提供核心功能代码。
    • data-subfold 文件夹中存放数据集。
    • checkpoints-subfold 文件夹中存储模型检查点。
    • demo_webapp 文件夹中,可以进行系统 Web 展示,并提供 API 接口。
    • tools 文件夹中,提供一些离线工具。
  • 文件

    • main.py 是系统的入口文件。
    • system.config 是用于配置所有系统设置的文件。
    • HandBook.md 提供使用说明。
    • BiLSTM_CRFs.py 是主模型。
    • Configer.py 用于解析 system.config
    • DataManager.py 负责管理数据集和调度。
    • utils.py 提供即时工具。

快速入门

请按照以下步骤操作:

第一步:在 system.config 中编写配置文件。

  • 配置数据集(输入/输出)。
  • 配置标注方案。
  • 配置模型架构。
  • 在演示示例时,配置 Web 应用设置。

system.config

第二步:开始训练(必要且必须)

  • 配置运行模式。
  • 配置训练设置。
  • 运行 main.py

training

第三步:开始测试(可选)

  • 配置运行模式。
  • 配置测试设置。
  • 运行 main.py

第四步:开始交互式预测(可选)

  • 配置运行模式。
  • 运行 main.py
  • 交互式输入句子。

interactively predicting

第五步:启动 API 服务和 Web 应用(可选)

  • 配置运行模式。
  • 配置 api_service 设置。
  • 运行 main.py
  • 在浏览器中进行交互式预测。

web app1

web app2

数据集

输入

训练集、测试集和验证集是整体使用所必需的。然而,如果您只想训练模型并在离线环境中使用,则仅需训练集即可。训练完成后,您可以使用保存的模型检查点文件进行推理。如果需要进行测试,则应...

对于 trainsettestsetdevset,常见格式如下:

  • 词级别:
(Token)         (Label)

for             O
the             O
lattice         B_TAS
QCD             I_TAS
computation     I_TAS
of              I_TAS
nucleon–nucleon I_TAS
low-energy      I_TAS
interactions    E_TAS
.               O

It              O
consists        O
in              O
simulating      B_PRO
...
  • 字符级别:
(Token) (Label)

马 B-LOC
来 I-LOC
西 I-LOC
亚 I-LOC
副 O
总 O
理 O
。 O

他 O
兼 O
任 O
财 B-ORG
政 I-ORG
部 I-ORG
长 O
...

请注意:

  1. testset 只能包含 Token 行。
  2. 每个句子的标记之间用空行分隔。
  3. 请参阅示例数据集以获取详细的格式说明。

输出(测试阶段)

在测试过程中,模型会根据 test.csv 输出预测的实体。输出文件包括两个:test.outtest.entity.out(可选)。

  • test.out

与输入的 test.csv 格式相同。

  • test.entity.out
Sentence
entity1 (Type)
entity2 (Type)
entity3 (Type)
...

test.entity.out

自定义

如果您想将该项目适配到自己的特定序列标注任务,可能需要以下提示。

  • 下载仓库源代码。

  • 标注方案(最重要)

    • label_scheme:BIO/BIESO
    • label_level:带后缀/不带后缀
    • 连字符用于连接前缀和后缀:如 B_PER'、`I_LOC'
    • 后缀=[NR,NS,NT]
    • 标注级别:词/字
  • 模型:在 BiLSTM_CRFs.py 中将模型架构修改为您所需的结构。

  • 数据集:按照正确的格式适配您的数据集。

  • 训练

    • 指定所有目录。
    • 设置训练超参数。

其他


有关更多使用细节,请参阅 HandBook

欢迎提出任何问题或错误。


正在更新...

  • 2019年6月4日,Vex 版本,v1.0,支持配置,可扩展。
  • 2018年11月5日,支持字符和词级别的嵌入。
  • 2017年12月6日,初始版本,v0.1。

许可证

CC0

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

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 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

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 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架