19 个版本 (破坏性更新)
新功能 0.15.0 | 2024 年 8 月 14 日 |
---|---|
0.14.0 | 2024 年 7 月 24 日 |
0.13.1 | 2024 年 7 月 11 日 |
0.5.0 | 2024 年 1 月 19 日 |
0.2.0 | 2023 年 4 月 27 日 |
270 在 解析器实现 中
每月 266 次下载
1MB
22K SLoC
Annatto
该软件旨在测试和转换柏林洪堡大学的 RUEG 研究小组内的数据。测试旨在持续评估 RUEG 语料库数据 的状态,以便及早发现有关兼容性、一致性和完整性的问题,从而便于处理有关注释、发布和集成方面的数据。
为了提高效率,Annatto 依赖于 graphANNIS 表示,并提供了一套基本的数据处理模块。
安装和运行 annatto
Annatto 是一个命令行程序,适用于 Linux、Windows 和 macOS,已经预编译。下载并解压您平台上的最新 发布文件。
Annatto 的主要用途是通过命令行界面。运行
annatto --help
以获取有关子命令的更多帮助。最重要的命令是 annatto run <workflow-file>
,它将运行在给定的 [工作流程] 文件中定义的所有模块。
模块
Annatto 包含多个模块,具有不同的类型
导入器 模块允许从不同的格式导入文件。可以在工作流程中使用多个导入器,但那时需要使用合并操作符之一来合并语料库数据。在工作流程中运行时,导入器将首先并行执行。
图操作 模块更改导入的语料库数据。它们将依次执行(非并行)并按在工作流程中定义的顺序执行。
导出器 模块将数据导出到不同的格式。可以在工作流程中使用多个导出器。在工作流程中运行时,导出器将最后并行执行。
要列出所有可用的格式(导入器、导出器)和图操作,请运行
annatto list
要显示有关给定格式或图操作的模块的信息,请使用
annatto info <name>
模块的文档也包含在此处 [链接]。
创建工作流文件
Annatto 工作流文件列出了要执行的导入器、图操作和导出器。我们使用一个以 .toml
结尾的 TOML 文件 来配置工作流。TOML 文件可以像键值对一样简单,例如 config-key = "config-value"
。但它们也可以表示更复杂的结构,如列表。TOML 网站有一个很好的“快速浏览”部分,其中通过示例解释了 TOML 的基本概念。
导入
导入步骤从头部 [[import]]
开始,并为键 path
提供配置值,该值表示从何处读取语料库,以及键 format
声明语料库的编码格式。文件路径相对于工作流文件。导入器还有一个额外的配置头部,它跟在 [[import]]
部分之后,并标记为 [import.config]
头部。
[[import]]
path = "textgrid/exampleCorpus/"
format = "textgrid"
[import.config]
tier_groups = { tok = [ "pos", "lemma", "Inf-Struct" ] }
skip_timeline_generation = true
skip_audio = true
skip_time_annotations = true
audio_extension = "wav"
您可以拥有多个导入器,并且可以在工作流文件的开始处简单地列出所有不同的导入器。即使导入器没有设置任何特定的配置选项,它也总是需要一个配置头部。
[[import]]
path = "a/mycorpus/"
format = "format-a"
[import.config]
[[import]]
path = "b/mycorpus/"
format = "format-b"
[import.config]
[[import]]
path = "c/mycorpus/"
format = "format-c"
[import.config]
# ...
图操作
图操作使用头部 [[graph_op]]
和键 action
来描述要执行的操作。由于没有要导入/导出的文件,它们没有 path
配置。
[[graph_op]]
action = "check"
[graph_op.config]
# Empty list of tests
tests = []
导出
导出器的工作方式类似于导入器,但使用关键字 [[export]]
代替。
[[export]]
path = "output/exampleCorpus"
format = "graphml"
[export.config]
add_vis = "# no vis"
guess_vis = true
完整示例
您不能混合导入、图操作和导出头部。您必须首先列出所有导入步骤,然后是图操作,然后是导出步骤。
[[import]]
path = "conll/ExampleCorpus"
format = "conllu"
config = {}
[[graph_op]]
action = "check"
[graph_op.config]
report = "list"
[[graph_op.config.tests]]
query = "tok"
expected = [ 1, inf ]
description = "There is at least one token."
[[graph_op.config.tests]]
query = "node ->dep node"
expected = [ 1, inf ]
description = "There is at least one dependency relation."
[[export]]
path = "grapml/"
format = "graphml"
[export.config]
add_vis = "# no vis"
guess_vis = true
开发 annatto
您需要安装 Rust 以编译项目。我们建议为开发 annis-web 安装以下 Cargo 子命令
- cargo-release 用于创建发行版
- cargo-about 用于重新生成第三方许可文件
- cargo-llvm-cov 用于确定代码覆盖率
- cargo-insta 允许审查测试快照文件
- cargo-dist 用于配置创建发布二进制的 GitHub 动作。
执行测试
您可以使用默认的 cargo test
命令运行测试。要计算代码覆盖率,您可以使用 cargo-llvm-cov
cargo llvm-cov --open --all-features --ignore-filename-regex 'tests?\.rs'
执行发布
您需要安装 cargo-release
以执行发布。执行以下 cargo
命令一次以安装它。
cargo install cargo-release cargo-about
要执行发布,切换到主分支并执行
cargo release [LEVEL] --execute
版本级别应为 patch
、minor
或 major
,具体取决于发布的更改。运行发布命令还会触发CI工作流,在GitHub上创建发布二进制文件。
资金来源
本出版物的研究成果由德国研究协会(DFG)资助 - SFB 1412,416591334以及FOR 2537,313607803,GZ LU 856/16-1。
这项研究得到了德国研究协会(DFG,德国研究协会)的资助 - SFB 1412,416591334和FOR 2537,313607803,GZ LU 856/16-1。
依赖关系
~63MB
~1M SLoC