#数据模型 #文件格式 #注释 #语言 #研究 #转换 #测试

bin+lib annatto

基于 graphANNIS 数据模型的中间表示,可以将语言数据格式进行转换,并可以应用一致性测试

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解析器实现

Download history 15/week @ 2024-04-26 1/week @ 2024-05-03 114/week @ 2024-05-17 46/week @ 2024-05-24 3/week @ 2024-05-31 4/week @ 2024-06-07 156/week @ 2024-06-14 565/week @ 2024-06-21 21/week @ 2024-06-28 403/week @ 2024-07-05 125/week @ 2024-07-12 110/week @ 2024-07-19 49/week @ 2024-07-26 8/week @ 2024-08-02 98/week @ 2024-08-09

每月 266 次下载

Apache-2.0

1MB
22K SLoC

docs.rs codecov

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 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

版本级别应为 patchminormajor,具体取决于发布的更改。运行发布命令还会触发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