MITIE

GitHub
3k 534 较难 2 次阅读 3天前开发框架语言模型
AI 解读 由 AI 自动生成,仅供参考

MITIE 是一款专注于信息提取的开源库与工具集,能够自动从文本中识别命名实体(如人名、地名)并检测实体间的关系。它有效解决了非结构化文本数据难以被机器精准理解与利用的问题。

MITIE 的核心优势在于其高性能与易用性。底层基于优秀的机器学习库 dlib 构建,采用了分布词嵌入和结构支持向量机等前沿技术,确保在实体识别和关系检测上保持领先水平。尽管核心代码为 C++,但它提供了丰富的语言绑定,包括 Python、Java、R、C 及 MATLAB 等,让开发者能轻松将能力集成到现有应用中。此外,MITIE 支持免费商用,并预装了英、西、德三语的模型,同时也允许用户根据需求训练自定义模型。

无论是进行自然语言处理研究的学生,还是需要快速落地 NLP 功能的软件工程师,MITIE 都是值得信赖的选择。配合命令行工具和交互式标注器,上手过程十分顺畅。

使用场景

某金融风控团队需要每日从海量财经新闻中自动提取涉及上市公司的诉讼关系和并购信息,以辅助投资决策。

没有 MITIE 时

  • 依赖正则表达式匹配关键词,误报率高达 30%,经常把普通提及当成法律事件导致误判。
  • 人工标注训练数据耗时过长,无法快速适应新的实体类型如“子公司”或“高管”等复杂结构。
  • 处理速度受限于脚本逻辑,每天数万篇文档的解析需要数小时,严重影响风险预警时效。
  • 多语言支持缺失,遇到外文财报或海外新闻时完全无法识别关键实体,存在监控盲区。

使用 MITIE 后

  • MITIE 直接调用预训练模型进行命名实体识别,将实体抽取准确率显著提升并稳定在 90% 以上。
  • 通过 Python 接口快速加载新模型,只需少量样本即可微调检测特定类型的商业关系,降低开发门槛。
  • C++ 核心库保证了高并发下的低延迟,万级文档流可在分钟级内完成结构化输出,大幅提升效率。
  • 内置的西班牙语和德语模型让团队能无缝处理全球市场的非中文情报源,消除语言障碍。

MITIE 让非专业 NLP 团队也能低成本构建高精度的信息抽取系统,实现自动化情报分析。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
  • BSD
GPU

未说明

内存

未说明

依赖
notes需下载预训练模型文件(英文默认,西语/德语需单独下载);核心为 C++,提供 Python、R、Java、C、MATLAB 等绑定;编译时建议配置 OpenBLAS 提升性能;遵循 Boost 许可证;预编译包仅支持 Python 2.7 及 Java 64 位。
python2.7, 3.6-3.7, 3.8+
dlib
cmake
make
swig
openblas
MITIE hero image

快速开始

MITIE: MIT 信息抽取

本项目提供免费的(即使用于商业用途)最先进的信息抽取工具。当前版本包括用于执行 命名实体抽取二元关系检测 的工具,以及用于训练自定义抽取器和关系检测器的工具。

MITIE 基于 dlib 构建,这是一个高性能的机器学习库 [1]。MITIE 利用了几种最先进的技术,包括使用分布词嵌入 [2] 和结构支持向量机 [3]。MITIE 提供多个预训练模型,针对英语、西班牙语和德语提供不同程度的支持,这些模型是使用各种语言资源训练的(例如,CoNLL 2003, ACE, 维基百科,Freebase, 和 Gigaword)。核心 MITIE 软件是用 C++ 编写的,但为其他多种编程语言(包括 Python, R, Java, C 和 MATLAB)提供的绑定允许用户快速将 MITIE 集成到自己的应用程序中。

外部项目为 OCaml, .NET, .NET Core, PHP, 和 Ruby 创建了 API 绑定。还有一个 交互式工具 用于标注数据和训练 MITIE。

使用 MITIE

MITIE 的主要 API(应用程序编程接口) 是一个 C API,记录在 mitie.h 头文件中。除此之外,还有许多 示例程序 展示如何从 C, C++, Java, R 或 Python 2.7 中使用 MITIE。

初始设置

在运行提供的示例之前,您需要下载训练好的模型文件,可以通过运行以下命令完成:

make MITIE-models

或者只需下载 MITIE-models-v0.2.tar.bz2 文件并将其解压到您的 MITIE 文件夹中。请注意,西班牙语和德语模型是单独下载的。因此,如果您想使用西班牙语 NER(命名实体识别) 模型,请下载 MITIE-models-v0.2-Spanish.zip 并 将其解压到您的 MITIE 文件夹中。德语模型同理:MITIE-models-v0.2-German.tar.bz2

从命令行使用 MITIE

MITIE 附带一个基本的流式 NER(命名实体识别) 工具。因此,您可以告诉 MITIE 独立处理文本文件的每一行,并使用以下命令输出标记后的文本:

cat sample_text.txt | ./ner_stream MITIE-models/english/ner_model.dat  

ner_stream 可执行文件可以通过在顶层 MITIE 文件夹中运行 make 来编译,或者导航到 tools/ner_stream 文件夹并运行 make,或者使用 CMake 构建它,这可以通过以下命令完成:

cd tools/ner_stream
mkdir build
cd build
cmake ..
cmake --build . --config Release

将 MITIE 编译为共享库

在类 UNIX 系统上,这可以通过在顶层 MITIE 文件夹中运行 make 来完成,或者运行:

cd mitielib
make

这会在 mitielib 文件夹中生成共享和静态库文件。或者您可以使用 CMake 编译共享库,输入:

cd mitielib
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install

这两种方法中的任何一种都会在 mitielib 文件夹中创建 MITIE 共享库。

使用 OpenBLAS 编译 MITIE

如果您使用 cmake 编译 MITIE,它将自动查找并使用机器上的任何优化的 BLAS(基础线性代数子程序库) 库。但是,如果您使用常规 make 编译,则必须手动定位您的 BLAS 库,否则 DLIB 将默认使用其内置但较慢的 BLAS 实现。因此,在没有 cmake 的情况下编译时使用 OpenBLAS,请找到 libopenblas.alibgfortran.a,然后按如下方式运行 make

cd mitielib 
make BLAS_PATH=/path/to/openblas.a LIBGFORTRAN_PATH=/path/to/libfortran.a

请注意,如果您的 BLAS 库不在标准位置,cmake 将无法找到它们。但是,您可以通过将 cmake .. 替换为如下语句来告诉它要查找哪个文件夹:

cmake -DCMAKE_LIBRARY_PATH=/home/me/place/i/put/blas/lib ..

从 Python 2.7 程序使用 MITIE

一旦您构建了 MITIE 共享库,您就可以进入 examples/python 文件夹 并运行任何 Python 脚本。每个脚本都是一个教程,解释 MITIE 的某些方面:命名实体识别和关系抽取, 训练自定义 NER 工具, 或 训练自定义关系抽取器

您也可以使用此命令直接从 github 安装 mitiepip install git+https://github.com/mit-nlp/MITIE.git.

从 R 使用 MITIE

MITIE 可以作为 R 包进行安装。有关更多详细信息,请参阅 README

从 C 程序使用 MITIE

examples/C 文件夹中有示例 C 程序。要编译它们,只需进入这些文件夹并运行 make。或者像这样使用 CMake:

cd examples/C/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release

从 C++ 程序使用 MITIE

examples/cpp 文件夹中有示例 C++ 程序。要编译其中任何一个,只需进入这些文件夹并运行 make。或者像这样使用 CMake:

cd examples/cpp/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release

从 Java 程序使用 MITIE

examples/java 文件夹中有一个示例 Java 程序。在运行它之前,您必须编译 MITIE 的 Java 接口,您可以这样做:

cd mitielib/java
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install

这将把 javamitie 共享库和 jar 文件放入 mitielib 文件夹。一旦您有了这两个文件,您就可以通过运行 run_ner.bat(如果在 Windows 上)或 run_ner.sh(如果在 Linux 或 OS X 等 POSIX 系统上)来运行 examples/java 中的示例程序。

另外请注意,编译 MITIE 接口必须安装 Swig 1.3.40 或更高版本、CMake 2.8.4 或更高版本以及 Java JDK(Java 开发工具包)。最后,请注意,如果您在 Windows 上使用 64 位 Java,则需要使用如下命令:

cmake -G "Visual Studio 10 Win64" ..

而不是 cmake ..,以便 Visual Studio 知道要制作 64 位库。

运行 MITIE 的单元测试 (unit tests)

您可以运行一个简单的回归测试 (regression test) 来验证您的构建。请在 MITIE 顶层文件夹中运行以下命令:

make test

make test 会构建示例程序并下载所需的示例模型。如果您需要使用非标准的 C++ 编译器,请修改 examples/C/makefiletools/ner_stream/makefile 中的 CC

预编译的 Python 2.7 二进制文件 (binaries)

我们已为 64 位 Linux 和 Windows(包含 32 位和 64 位的 Python 版本)构建了打包了示例模型的 Python 2.7 二进制文件。您可以在此处下载预编译包:预编译 MITIE 0.2

Python 兼容性

MITIE 提供跨 Python 版本的完全兼容性:

Python 版本 支持级别 状态 推荐用途
2.7 遗留 ✅ 稳定 现有项目
3.6 - 3.7 受支持 ✅ 稳定 迁移项目
3.8+ 全面支持 ✅ 推荐 新项目

安装说明

  • 所有版本:使用标准库 ctypes (ctypes 模块) - 无需其他依赖
  • Python 2.7:包含自动字符串编码处理
  • Python 3.x:增强的 Unicode (统一码) 支持和更好的内存效率
  • 跨平台:支持 Windows、macOS、Linux、BSD 系统

建议:在新项目中使用 Python 3.8+,以受益于性能提升和现代语言特性。

预编译的 Java 64 位二进制文件

我们已为 64 位 JVM (Java 虚拟机) 构建了可在 Linux 和 Windows 上运行的 Java 二进制文件。您可以在此处下载预编译包:预编译 Java MITIE 0.3。文件中包含一个 examples/java 文件夹。您可以通过执行提供的 .bat.sh 文件来运行示例。

引用 MITIE

目前没有专门关于 MITIE 的论文。然而,由于 MITIE 基本上只是围绕 dlib 的一个薄封装层,如果您在研究中使用 MITIE,请引用 dlib 的 JMLR (Journal of Machine Learning Research) 论文:

Davis E. King. Dlib-ml: A Machine Learning Toolkit. Journal of Machine Learning Research 10, pp. 1755-1758, 2009

@Article{dlib09,
  author = {Davis E. King},
  title = {Dlib-ml: A Machine Learning Toolkit},
  journal = {Journal of Machine Learning Research},
  year = {2009},
  volume = {10},
  pages = {1755-1758},
}

许可证

MITIE 采用 Boost 软件许可证 (Boost Software License) - 版本 1.0 - 2003 年 8 月 17 日授权。

特此授予免费许可,允许任何获取本许可证所涵盖的软件及其附带文档副本的个人或组织(以下简称“软件”)使用、复制、展示、分发、执行和传输该软件,制作软件的衍生作品,并允许接收该软件的第三方进行上述操作,但须遵守以下条款:

软件中的所有版权声明及本声明全文(包括上述许可授予、本限制及以下免责声明)必须包含在软件的全部或部分副本以及所有衍生作品中,除非此类副本或衍生作品仅为由源语言处理器生成的机器可执行目标代码形式。

本软件按“原样”提供,不提供任何形式的担保,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性、所有权和非侵权性的保证。在任何情况下,版权所有者或任何分发本软件的人均不对因使用本软件或在本软件中进行的其他交易而引起的任何损害或其他责任负责,无论是合同责任、侵权责任还是其他责任。

参考文献

[1] Davis E. King. Dlib-ml: A Machine Learning Toolkit. Journal of Machine Learning Research 10, pp. 1755-1758, 2009.

[2] Paramveer Dhillon, Dean Foster and Lyle Ungar, Eigenwords: Spectral Word Embeddings, Journal of Machine Learning Research (JMLR), 16, 2015.

[3] T. Joachims, T. Finley, Chun-Nam Yu, Cutting-Plane Training of Structural SVMs, Machine Learning, 77(1):27-59, 2009.

版本历史

v0.72019/02/10
v0.62018/09/22
v0.52017/11/08
v0.42015/02/03
v0.32014/10/20

常见问题

相似工具推荐

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图像开发框架