Jupyter小部件集合,用于设置模块化注释环境
项目描述
Metanno是一个JupyterLab扩展,允许你构建自己的注释器。目前,它专注于具有丰富结构实体的文本文档。其主要目标是
- 模块化:你决定需要多少个数据视图
- 定制化:你可以轻松地在Python中定制软件行为并立即看到更改
- 交互性:你所有的注释在你编辑任何内容后立即作为Python对象可用
功能
- 多行和嵌套的span注释
- 🖇️ 嵌套、关联、复杂的注释与表格视图
- 🔗 多种数据类型:超链接、文本、列表
- 🪟 文本视图或表格视图
- ✨ 丰富的定制能力
- 🐍 在Python中编写你的应用程序,在浏览器(或内核,由你决定)中执行
- 🚀 快速:客户端是用React编写的,默认情况下,所有操作都在浏览器中直接处理
- 🌐 WebSocket通信:你不需要打开任何端口
- ⏮️ 不可变状态管理,任何状态更改都会被记录并可撤销
安装
此项目仍在开发中,可能发生变化。如果你使用Jupyterlab 3,简单的pip install应该足够了。你不需要打开任何端口。
# To setup the environment
conda create --name annotation python=3.9
conda activate annotation
pip install ipykernel && python -m ipykernel install --user --name annotation
# To install the package
pip install metanno
如果你是共享Jupyter环境中的用户(你没有运行jupyter lab
命令),你应该在用户级别安装扩展
pip install metanno --user
原因
在注释方案设计时必须考虑注释软件的选择。例如,在Brat中注释隐含/文档级实体比较困难,注释多行关系也不可行,同时一次性处理多个文档也不可能。现在有许多注释工具可用(参见Neves等人),但其中大部分是专有的,对文档或多文档注释的适应性差,需要复杂安装,不兼容现有的远程工作环境,或者难以定制。最后,注释级别(提及/关系/事件)的标准化是新任务发展的障碍。鉴于现有软件的限制和难以用单个静态注释器满足所有需求,本项目启动了提供模块化和完全可定制的注释框架Metanno,以解决这些困难。
演示
您可以通过尝试它。但请耐心,在没有缓存构建的情况下,可能需要几分钟才能启动。
它如何工作
整个应用由一个单一的状态控制,该状态在前端(Jupyter客户端)和后端(Python内核)上进行了复制。Jupyter中渲染的每个视图都使用该状态的派生版本(想想view_data = fn(app_data)
),并在事件发生时调用应用类中的函数。这个应用类是用Python(由您编写)编写的,自动转换为javascript并发送到前端,以便用户的每个动作都能立即得到响应。如果给定的函数修改了状态(通过@produce
装饰器包装),则更改将发送到后端或前端以保持状态副本同步。如果函数需要在前端或后端(例如,在后台触发数据库查询)独占执行,则可以将其包装在@frontend_only
或@kernel_only
中,并且调用将通过Jupyter websocket传输。
待办事项
- 添加基本应用示例
- 添加文档
- 添加更多表格列类型和渲染器(数值、日期等)
添加可定制的列过滤器- 添加带有可编辑箭头的关联可视化和编辑
- 添加图像注释视图
完成javascript到typescript的转换可定制的撤销/重做逻辑- 添加多单元格编辑(参见react-data-grid PR)
- 添加测试套件(Cypress?)
- 制作独立版本(不带Jupyter)
贡献
任何贡献都受欢迎,请随意提交PR。
项目详情
下载文件
为您的平台下载文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。