Giter Club home page Giter Club logo

xiaotang314 / marktool Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fxlp/marktool

0.0 0.0 0.0 780 KB

基于web的开源通用文本标注工具。支持命名实体识别的实体标注、关系标注、事件标注、文本分类、基于字典匹配和正则匹配的预标注以及用于实现归一化的标准名标注,同时也支持文本的迭代标注和实体的嵌套标注。通过分级实体集合扩大了实体类型的规模,并设计了全新高效的标注方式,提高了用户体验和标注效率。

License: MIT License

JavaScript 17.85% HTML 0.05% Vue 79.77% CSS 0.09% Handlebars 0.07% SCSS 2.17%

marktool's Introduction

MarkTool 基于web的通用文本标注工具

完整版特性:

  1. 高效的标注方式:它对每个实体的标注不需要鼠标的多次点击或者大范围移动,并且支持实体嵌套标注、文本迭代标注和基于预标注功能的半自动标注方式。

  2. 强大的标注功能:它支持多种类型的标注任务,包括命名实体识别的实体标注、两个实体之间的关系标注、多个实体集合的事件抽取、文本分类、归一化任务的标准名标注以及通过字典匹配和正则匹配实现的预标注功能。

  3. 优雅的标注界面:它通过创建实体分级的标注规范可以保证在使用大规模的实体类型的同时避免标注界面中实体选择栏的爆炸显示。此外,它还具有实体统计模块,可以直观地显示实体标注的具体类型及其实时统计的数量。将鼠标箭头在文本中所标注的实体上悬浮1秒即可显示该实体所对应的的实体类型的这一设计非常方便用户进行回顾检查。

  4. 通用的标注平台:它支持序列文本的语言无关性和领域无关性,现已在多个领域包括军工、医疗和公共治安领域投入应用。

  5. 独特的质检模式:它支持多人协同标注,尽管有详细的标注规范和规则说明,但是由于人为的错误、标注规则未涵盖的语言现象以及词语本身的歧义,标注者之间的分歧仍不能完全避免,因此对标注结果的质检就显得不可或缺。MarkTool通过添加审核阶段对多个标注者的标注结果进行一致性检验和微调,从而提高标注结果的正确率和可靠性。

  6. 便捷的获取途径:它不依赖于特定的操作系统,只需要将docker镜像导入并在工作目录下输入命令docker-compose up启动服务即可在浏览器进行标注工作。

带审核流程版代码地址:https://github.com/PPzXiao/MarkTool2

后端代码地址:https://github.com/sxthunder/ecust_annotation

clone the project

git clone https://github.com/FXLP/MarkTool.git

enter the project directory

cd MarkTool

install dependency

npm install

develop

npm run dev

项目目标

由于市面上的文本标注工具无法满足实际项目的标注场景需求,因此本项目自主开发了基于web的文本标注工具用于构建高质量的语料库。该工具需要支持实体标注、关系标注、事件抽取、文本分类等基础标注功能,要求标注规范可自定义,文本可迭代标注,适用于大规模实体类型的标注任务,可拓展嵌套实体标注、标准名标注和基于字典匹配和正则匹配的预标注功能。在满足标注功能的前提下,尽可能优化标注体验,减少用户的工作量和成本消耗,同时保证标注结果的准确性。标注工具需满足在主流操作系统Windows、Linux和Mac上正常运行。

技术难点

(1).最基础的实体标注功能需要实时可视化显示每次的标注结果,每次标注时需要支持可选择大量实体类型。

(2).两个实体之间的关系标注实现方式,多个实体之间的事件抽取实现方式。

(3).嵌套实体标注的实时可视化展示。

(4).文本支持迭代标注中对已标注文本的标注内容识别导入数据库。

(5).预标注功能的中间结果缓存与显示以及预标注结果的确认。

(6).优化用户标注体验、提高标注效率。

(7).提高标注结果的正确率。

(8).允许在多种系统环境上部署运行。

解决方案及效果展示

前端采用VUE框架实现数据与视图绑定,可实时将后端传过来的实体标注的结果进行可视化显示,用户能够在文本上看到每个实体的颜色、类型(及其标准名),并且进行标注数量的实时统计,在实体统计区域显示每种实体类型的已标注数量,其效果如图1所示。 Image

为了能够满足大规模实体类型的标注任务需求,该工具设计了一种全新的分级实体选择方式,通过二级实体将可选的实体类型总数从原有的n种大大提高到n2种,并且第一次和第二次都只需要浏览n种选择即可。在每次的实体标注中用户不需要多次点击鼠标和大范围移动,在数千上万的标注工作中极大地提升了用户的工作效率。其效果如图2所示。 Image

关系标注的核心是在已标注的实体集上进行一一映射,因此该工具在关注标注模块中设计为第一步选择前实体,第二步选择后实体、第三步确定这二者之间的关系名,其效果如图3所示。 Image

事件抽取的本质是多个实体的集合,因此该工具在事件标注任务中通过先建立相应的事件标注规范对需要抽取的事件组类型以及事件组的实体构成再选择添加某个事件组类型并进行事件组内部实体的标注。在事件统计列表中可以看到每个已标注事件的具体标注情况,包括每个实体的内容和类型,并且通过点击“查看标注”按钮可以切换对不同事件的查阅与修改。事件标注的示例图如图4所示。 Image

嵌套实体标注首先记录每个实体的始末位置以及实体内容、实体颜色,通过对不同实体的位置进行计算,在长实体的基础上将短实体的所在的位置进行显示覆盖,如果删除该实体则需要将文本该始末位置之间的显示内容进行还原。嵌套实体标注的示例图如图5所示。 Image

迭代标注时首先需要保证已标注的文本(答案文件)的传入顺序与之间首次标注时传入的顺序相同,利用python的pickle 模块将答案文件的标注内容反序列化,并将结果存入数据库中以实现再标注。创建任务时要在步骤6中按序上传对应的答案文件,如图6所示。 Image

预标注的正则匹配和字典匹配都需要对预标注的结果的可视化显示,并且允许在看完结果后选择不保存,因此需要前端进行缓存结果显示但是不传入后端数据库,只有在用户点击确认保存之后才会将结果存入后端数据库。进行预标注之前可以选择上传相应的字典文件和正则文件。创建任务时可在步骤3中上传对应的字典文件,如图7所示;可在步骤4中上传对应的正则文件,如图8所示。如果在创建任务时选择不上传相应的字典文件和正则文件则需要在后续的标注工作中逐条添加所需的字典和正则规则。 Image Image

该工具还支持标准名标注,如图9所示。用户可以通过上传标准文件或者在标注过程中选择管理标准名称进行添加。 Image

为了提高标注效率,在系统设计中允许自定义的标注规范可复用,实现“一次建立多次复用”的目标,极大地减少了用户在同类型标注任务中对标注规范的反复创建。标注规范的示例如图10所示。 Image

该系统还设计了审核环节用以保证标注结果的准确率与可靠性。审核环节中会对标注者的标注结果进行一致性检验,对于通过检验的文本会对标注结果进行合并,并显示合并结果来源,同时还支持切换查看不同角色的标注结果,帮助审核者快速分析与调整,其页面效果如图11所示。 Image

该工具采用docker镜像进行部署,只需系统上有docker环境即可一键导入工具的镜像,无需复杂的配置步骤和系统操作,对操作系统类型没有限制,即使在不联网的环境也能正常使用。导入镜像并在工作目录下执行命令docker-compose up启动本地服务即可访问浏览器地址 http://127.0.0.1:18080/ 进行标注。

Attention

如果只是单纯需要运行使用该工具,可通过star该项目并向本人邮箱[email protected]或者[email protected]发送邮件获取docker镜像文件直接在含有docker环境的机器上运行。 该工具已于2020年获得软件著作权,证书号:软著登字第5885316号,如需二次开发使用则要在项目中着重标明来源!

marktool's People

Contributors

ppzxiao avatar fxlp avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.