CLIN28拼写更正共享任务脚本

clin28tools的Python项目详细描述


#CLIN2018共享任务:拼写更正

尽管最先进的拼写检查在日常生活中表现相当不错,但要达到高精度仍然是一项具有挑战性的任务。这项共同任务的重点是检测和纠正荷兰语维基百科文本中的拼写错误。维基百科的文章旨在成为标准的荷兰语文本,其中可能包含行话。特别是,此任务涉及检测和更正下一节中列出的拼写错误类型。

请注意:
*将对提交的拼写更正程序进行评估,以检测和更正这些类型的错误,并且仅对这些类型的错误进行评估。
*spelling错误不必归类到下面列出的类别中-只需检测和更正。
*如果正式接受的拼写变化或对正确拼写有疑问,则接受所有正确的变体。
*根据woordenlijst nederlandse taal(http://woordenlijst.org/)和leidraad(http://woordenlijst.org/leidraad)。

数学错误,等等):
*ik wordt→ik word
*stijl→steil
*hobbies→hobby's
*me→mijn
*als→dan
**split errors**(``spliterror`),不正确分隔的复合词:
*beleids medewerker→beleidsmedewerker
*lang durig→langdurig
**runon errors**(``runonerror`),单词连接错误:
*et cetera→et cetera
*zei dat→zei dat
**missing words**(``missingword``),由于缺少元素,句子不符合语法:
*samen met vrouw die→samen met de vrouw die
***多余的单词**(``redundantword``),由于多余的元素,句子不符合语法:
*door doordat→doordat
**缺少标点符号**(``missingpurtication``),缺少变音符号和连字符标记(其他缺少标点符号的情况除外任务:
*een en ander→en en en ander
*financiele→financi_le
*auto ongeluk→auto ongeluk
***冗余标点符号**(``冗余标点符号``),冗余的变音符号和连字符符号(任务中排除了其他冗余标点符号的情况):
*co assistent→coassistent
**capitalization errors**(``capitalizationerror`),不正确使用大写字母:
*joodse→joodse
*van onderwijs部长→van onderwijs部长
*amstelveen→amstelveen
**ed拼写:
*aktie→actie
*paardebloem→paardenbloem
***非单词错误**(``non word error`),荷兰语中不存在的单词:
*voek→boek
*assertief→assertief

总是在数据中被提及,
这与[此folia集定义](https://github.com/proycon/folia/blob/master/setdefinitions/spellingcorrection.folia set.xml)是一致的。

一个由50篇维基百科文章组成的验证集将在10月底之前发布。文档可能包含零个、一个或多个拼写错误。验证集包含下面列出的所有拼写错误类别。12月,一个完整的测试集将以相同的格式发布。


](https://proycon.github.io/folia)和json格式。这个json表示是从
folia文档自动派生的,并作为此任务的简化格式,使其更易于访问,而不会给文档解析带来不必要的
高负担。它可以作为系统的输入,因为它包含所有重要信息,但是它没有原始的folia文档丰富。

在这两种情况下,使用我们提供的验证工具确保
输出有效是很重要的。对于folia,请使用"folia validator"工具(https://github.com/proycon/folia的一部分),对于json,请使用此存储库中提供的验证程序。

标记化是使用
[ucto]进行的(https://languagemachines.github.io/ucto)。您应该遵守这种标记化,数据格式具有
用于合并、拆分、插入和删除标记的特殊功能,这是在拼写
更正过程中自然产生的。

我们的代表。在根级别,我们有
``words``和``corrections`。words包含所有单词/标记及其id和一些其他信息的列表。
corrections包含对这些单词的更正列表,这将提供给试用数据和任务结束后的
gold标准版本。对于测试数据,它将是一个空列表,希望您的系统
填写它。请考虑以下示例:

``json
{
"words":[
{"text":"dit","id":"word.1","space":true,"in":"sentence.1"},
{"text":"is","id":"word.2","space":true,"in":"sententence.1"},
{"text":"een","id":"word.3","space":true,"in":"sententence.1"},
{"text":"vooorbeeld","id":"word.4","space":false,"in":"sentence.1"},
{"text":".","id":"word.5","space":true,"in":"sentence.1"}
],
"corrections":[
{"class":"nonworderror","span":["word.4"],"text":"voorbeeld"}
]
```

示例显示了一个更正。

**单词规范**:
*``text`-单词/标记的文本,字符串
*``id`-单词/标记的ID(字符串)。这是用来指回令牌的。请注意,尽管id通常具有指示顺序的隐式编号,但这是**不**保证的。单词的顺序只能从单词表中出现的顺序派生出来。ID区分大小写!
*`` space``一个布尔值,指示单词/标记后面是否跟有空格。这可用于在标记化之前重建
文本。
*`` in`-这指的是单词出现的结构元素的id,几乎总是一个句子。句子
可以通过该值的变化检测到中断。有关更多结构信息,您需要原始的folia
文档。

**更正规范:**
*``SPAN``-此更正适用的单词ID列表。
*``TEXT`-更正的文本,即新单词。如果删除
(例如多余的单词/标点符号),则此文本可能是空字符串,如果出现run on
错误(例如*naar huis*->;*naar huis*),则此文本可能由多个空格分隔的单词组成。应使用
*`` after``(而不是'span``),而不是'span``in插入的情况(插入以前不存在的新单词/标记)。该值是一个字符串,是单词**的id,在此之后**要插入更正。
*``置信度`(可选)-介于0.0和1.0之间的浮点数,表示此更正的置信度。(如果未明确提及,则假定为1.0)
*``类`(可选)-错误的类型;即在[我们的集合d定义](https://github.com/proycon/folia/blob/master/setdefinitions/spellingcorrection.foliaset.xml)(使用ID,而不是标签!)。您的系统不**需要输出这个,它只是作为金标准中的额外信息。

但是如果你想充分利用输入文档中可用的
信息,你可以使用原始的folia输入。

folia格式被广泛地记录下来;请参考[folia网站](https://proycon.github.io/folia),我们
特别参考第2.10.8节。n更正。python
用户可能会从使用python folia库(pynlpl的一部分)(https://github.com/proycon/pynlpl)和
文档[此处](http://pynlpl.readthedocs.io/en/latest/folia.html)中受益。

folia文档还可以作为使用folia awa进一步丰富语言的来源。Re工具,如
[Frog](https://languageMachines.github.io/Frog)。


\*更正应跨越单词/标记的最小数量,不包括未更正的前导/尾随标记;例如,对于*e e n en ander*?*then en ander*,仅更正*een*?*then*

评估


检测和更正测试文档中的拼写错误分别评估(尽管校正
也必然意味着检测),方法如下:

*将检测到的错误与金标准注释中标记的错误相匹配:
*精度将由COR根据正确检测到的错误的比例进行测量所有测试文档中的目录。(即不考虑实际的校正)
*召回将作为校正者检测到的所有测试文件的金标准注释中标记错误的比例进行测量。
*F分数是精度和召回的调和平均值。
*匹配PROposed拼写校正器对金标准注释中所做的校正所检测到的错误的校正:
*精度将作为校正器在所有测试文档中正确校正错误的比例进行测量。
*召回将作为他在所有被校正器纠正得很好的测试文档的金标准注释中标记错误。
*F分数是精确性和召回率的调和平均值。

不要求拼写校正器预测拼写错误的类别。为了更详细地描述提交的质量,这些更正类被标记,并将出现在评估输出中。

若要评估,请运行``clin28 evaluate--ref reference.json--out youroutput.json`,请参阅下一节。

提供以下工具进行验证、计算和转换:

*``clin28 validator``-验证json是否有效。(**在提交之前,请在系统输出中使用此选项!**)
*``clin28 evaluate`-实现上面指定的计算:根据json引用文件计算json输出文件
*``clin28-folia2json`-将folia xml转换为此任务的json格式

这些工具是用python编写的(3.4或更高版本!)可从python包索引下载并安装,使用
simple:


for global installation,如果您具有管理权限,可以预先设置"sudo",但我们建议使用python虚拟环境。

alter在本机上,您可以在克隆了这个git存储库之后安装这些工具:

python3 setup.py inst所有

因此,我们鼓励参与者将其用于此任务的软件公开为开源软件。我们将使用[Clariah软件质量调查](http://softwareQuality.clariah.nl/)和最高评分系统(即,不一定
最有效的系统!)来判断此任务的
软件。将被授予荣誉称号。


\r重要日期

*2017年12月4日:在线测试数据
*2017年1月12日:提交源代码和输出的截止日期
*2018年1月19日:提交反馈
*2018年1月26日:在临床会议上提交结果E<BR/>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android首选项相同getPreference()值的不同数据   字符串如何在Java中连接两个列表中的单词   安卓 Java Socket编程:检测客户端和服务器是否连接   使用JTextField的java无法将值转换为int   在java中,如何在不通过超级构造函数设置的情况下将消息设置为自定义异常类   用于标识属性值的java正则表达式模式   Android中的java不可见谷歌地图   java正确取消启动ExecutorService的JavaFX任务   在非活动java类中使用安卓的融合位置提供程序,并在主活动类中获取经度和纬度   spring为什么我的大摇大摆不能用springboot在java中工作?   java JSF(2.2)ViewScope在Weblogic 12.2.1.2和JDK 8上使用Spring 4.3.7(在Mac OS和Docker Oracle Linux环境上)   java如何用一个按钮提高计时器速度   java如何检查字符是否是元音?   注册表引用了不存在的Java运行时环境安装或运行时已损坏错误   来自ResultSet java的mysql getDateTime   maven LanguageTool Java API是否具有“无用”依赖关系?   twitter api身份验证的java Trycatch问题   java在Apache Struts 1.1中是否可以显式白名单?   安卓致命异常:主java。lang.RuntimeException:被问及未知片段