UA-GEC: 乌克兰语语法错误纠正和流畅性语料库
该存储库包含UA-GEC数据和相应的Python库。
最新动态
- 2023年5月: 发布了乌克兰语GEC共享任务的结果。
- 2022年11月: 发布2.0版本,包含更多数据和详细注释。
- 2021年1月: 首次发布。
详细更新请查看CHANGELOG.md。
数据
所有语料库数据和元数据都在./data
目录下。它有两个子文件夹,分别对应GEC-流畅性和仅GEC语料库版本。
两个语料库版本都包含两个子文件夹训练和测试集,有不同的数据表示方式:
./data/{gec-fluency,gec-only}/{train,test}/annotated
存储注释格式的文档。
./data/{gec-fluency,gec-only}/{train,test}/source
和./data/{gec-fluency,gec-only}/{train,test}/target
存储文档的原始版本和纠正版本。这些目录中的文本文件是纯文本,没有注释标记。这些文件是从注释数据生成的,在某种程度上是冗余的。我们保留它们是因为这种格式在某些用例中很方便。
./data/{gec-fluency,gec-only}/test/*.m2
包含M2文件。
元数据
./data/metadata.csv
存储每个文档的元数据。它是一个CSV文件,包含以下字段:
id
(字符串):文档标识符;author_id
(字符串):文档作者标识符;is_native
(整数):如果作者是母语使用者则为1,否则为0;region
(字符串):作者的出生地区。特殊值"Інше"用于出生在乌克兰以外的作者和不愿指定地区的作者;gender
(字符串):可以是"Жіноча"(女性)、"Чоловіча"(男性)或"Інша"(其他);occupation
(字符串):为"Технічна"、"Гуманітарна"、"Природнича"或"Інша"之一;submission_type
(字符串):为"essay"、"translation"或"text_donation"之一;source_language
(字符串):对于"translation"类型的提交,此字段表示翻译文本的源语言。可能的值为"de"、"en"、"fr"、"ru"和"pl";annotator_id
(整数):纠正文档的注释者ID;partition
(字符串):为"test"或"train"之一;is_sensitive
(整数):如果文档包含亵渎或冒犯性语言,则为1。
注释格式
注释文件是使用以下内联注释格式的文本文件:
{error=>edit:::error_type=Tag}
,其中error
和edit
分别代表纠正前后的文本项,Tag
表示错误类别,如果是语法和流畅性相关错误,还包括错误子类别。
注释句子示例:
I {likes=>like:::error_type=G/Number} turtles.
以下是语料库中出现的错误类型列表:
Spelling
:拼写错误;Punctuation
:标点错误。
语法相关错误:
G/Case
:任何实词词类的格使用不正确;G/Gender
:任何实词词类的性使用不正确;G/Number
:任何实词词类的数使用不正确;G/Aspect
:动词体使用不正确;G/Tense
:动词时态使用不正确;G/VerbVoice
:动词语态使用不正确;G/PartVoice
:分词语态使用不正确;G/VerbAForm
:分析性动词形式使用不正确;G/Prep
:介词使用不正确;G/Participle
:分词使用不正确;G/UngrammaticalStructure
:违反句法规范;G/Comparison
:形容词和副词比较级形式不正确;G/Conjunction
:连词使用不正确;G/Other
:其他语法错误。
流畅性相关错误:
F/Style
:风格错误;F/Calque
:其他语言的直译;F/Collocation
:不自然的搭配;F/PoorFlow
:句子流畅度不自然;F/Repetition
:单词重复;F/Other
:其他流畅性错误。
随附的Python包ua_gec
提供了许多处理注释文本的工具。详情请参见其文档。
训练-测试集划分
我们希望语料库用户仅在__训练__集上训练和调整他们的模型。可以自由地将其进一步划分为训练-开发集(或使用交叉验证)。
请仅使用__测试__集报告最终模型的分数。特别是,切勿在测试集上进行优化。不要在其上调整超参数。不要以任何方式将其用于模型选择。
下一节列出了每个集合的统计数据。
统计数据
UA-GEC包含:
GEC+流畅性
集合 | 文档数 | 句子数 | 词元数 | 作者数 | 错误数 |
---|---|---|---|---|---|
训练集 | 1,706 | 31,038 | 457,017 | 752 | 38,213 |
测试集 | 166 | 2,697 | 43,601 | 76 | 7,858 |
总计 | 1,872 | 33,735 | 500,618 | 828 | 46,071 |
详细统计信息请参见stats.gec-fluency.txt。
仅GEC
集合 | 文档数 | 句子数 | 词元数 | 作者数 | 错误数 |
---|---|---|---|---|---|
训练集 | 1,706 | 31,046 | 457,004 | 752 | 30,049 |
测试集 | 166 | 2,704 | 43,605 | 76 | 6,169 |
总计 | 1,872 | 33,750 | 500,609 | 828 | 36,218 |
详细统计信息请参见stats.gec-only.txt。
Python库
除了直接操作数据文件外,您还可以使用名为ua_gec
的Python包。该包包含数据,并提供了用于遍历文档、读取元数据、处理注释等的类。
入门
可以通过pip
轻松安装该包:
$ pip install ua_gec
或者,您可以从源代码安装:
$ cd python
$ python setup.py develop
遍历语料库
安装完成后,您可以从Python代码中获取注释文档:
>>> from ua_gec import Corpus
>>> corpus = Corpus(partition="train", annotation_layer="gec-only")
>>> for doc in corpus:
... print(doc.source) # "I likes it."
... print(doc.target) # "I like it."
... print(doc.annotated) # <AnnotatedText("I {likes=>like} it.")
... print(doc.meta.region) # "基辅"
请注意,doc.annotated
属性的类型是AnnotatedText
。这个类在下一节中有描述。
处理注释
ua_gec.AnnotatedText
是一个提供处理带注释文本工具的类。它可以遍历注释、获取注释错误类型、删除某些注释等。
下面是一个入门示例。它将从文本中删除所有F/Style注释:
>>> from ua_gec import AnnotatedText
>>> text = AnnotatedText("I {likes=>like:::error_type=G/Number} it.")
>>> for ann in text.iter_annotations():
... print(ann.source_text) # likes
... print(ann.top_suggestion) # like
... print(ann.meta) # {'error_type': 'Grammar'}
... if ann.meta["error_type"] == "F/Style":
... text.remove(ann) # 或 `text.apply_correction(ann)`
多个注释者
某些文档由多个注释者注释。这些文档共享相同的doc_id
,但在doc.meta.annotator_id
上有所不同。
目前,gec-fluency和gec-only的测试集由两名注释者注释。训练集包含45个双重注释的文档。
贡献
- 欢迎对数据和代码进行改进。请提交拉取请求。
引用
随附论文如下:
@inproceedings{syvokon-etal-2023-ua,
title = "{UA}-{GEC}: 乌克兰语的语法错误纠正和流畅性语料库",
author = "Syvokon, Oleksiy and
Nahorna, Olena and
Kuchmiichuk, Pavlo and
Osidach, Nastasiia",
booktitle = "第二届乌克兰自然语言处理研讨会(UNLP)论文集",
month = may,
year = "2023",
address = "杜布罗夫尼克,克罗地亚",
publisher = "计算语言学协会",
url = "https://aclanthology.org/2023.unlp-1.12",
pages = "96--102",
abstract = "我们提供了一个专业注释的乌克兰语语法错误纠正(GEC)和流畅性编辑语料库。我们构建了该语料库的两个版本--GEC+流畅性和仅GEC--以区分语料库的应用。据我们所知,这是第一个乌克兰语GEC语料库。我们从包括母语和非母语使用者在内的多样化贡献者群体中收集了含有错误的文本(33,735个句子)。这些数据涵盖了从文本聊天和文章到正式写作的广泛写作领域。专业校对人员对语料库中与流畅性、语法、标点和拼写相关的错误进行了纠正和注释。该语料库可用于开发和评估乌克兰语的GEC系统。更广泛地说,它可用于研究多语言和低资源自然语言处理、形态丰富的语言、文档级GEC和流畅性纠正。该语料库可在https://github.com/grammarly/ua-gec公开获取",
}