介绍
在过去的30年里,女性作家项目(WWP)按照文本编码倡议(TEI)指南所设定的标准,开发了一个前维多利亚时代女性作家文本全文抄写的数字集合。1文本编码计划指引(http://www.tei-c.org/)指定一种XML语言,用于创建人文科学、社会科学和语言学研究材料的高质量数字表示。该指南自1994年以来一直是数字人文学科实践的主要标准。这个集合之间独特的将数字类型:有超过400条短信(约1100万字),收集是相当大的,远远超出范围的一个典型的学术版本,但是细节和人类的注意力水平的代表在编码区分它与典型的大规模文本数字化工作。TEI和XML的使用通过添加关于文本结构、内容、类型和相互连接的信息,将基本文本内容转换为更强大和更复杂的内容。考虑到这些文本的大小和复杂性,在用XML编码这些文本时管理错误和不一致是一项关键任务。在很长一段时间内,将TEI指南应用于广泛的体裁,在实践中会产生差异,即使是在训练最有素的工作人员手中,手工抄写和编码的过程也不可避免地产生一定程度的错误。当消费者的大型数字集合变得更加适应错误的成本规模(谷歌书籍和其他光学字符同时考虑集合是明显的例子),WWP的观众和使用模型依赖于高水平的准确性和一致性,尽管集合的大小。
在这样一个集合中查找和修复错误需要自动化,并且有各种XML技术(如XQuery、XPath和XSLT)为发现变化模式和对复杂编码数据进行全局更改提供了强大的工具。然而,有几个原因不能简单地将错误纠正视为技术挑战,这是工作流中的一个自动清理阶段,将文本从(人道主义)抄写员传递给(技术人员)数据清理专家。首先,在实际操作中,转录和编码水平上决策的复杂性意味着,尽管不一致的模式很容易用自动化工具检测到,但在它们被解读为“错误”之前,需要由那些具有文本专业知识的人进行解释。通常,奇怪的边界情况和异常结果显示骨折的编码策略本身,可以激励重新评估的具体实践:例如,当调查阶段的处理方向不一致导致的发展一个更微妙的标记功能。2
在这种情况下,我们的文档的时间指示编码器选择一个值“混合”<阶段>元素@type属性在多个值的情况下可能应用(如“进入Sophonsiba,说话大声,“它包含一个入口和一个描述的人物的行交付)。通常情况下,奇边情况和异常会揭示编码策略本身的缺陷,并促使对特定实践进行重新评估。然而,编码器发现“混合”值不足以代表他们的文档的特殊性,我们发现有些人只是简单地选择了任何更具体的值,似乎是主要的(因此失去了“混合”应该传达的多元性的想法)。认识到这一点,我们决定修改编码,允许@type上有多个值,并审查我们的阶段方向,根据这个新条款更新它们;审查过程还让我们为@type添加了三个新值。有关我们目前对舞台指示的处理,请参见http://wwp.neu.edu/research/publications/documentation/internal/#!/entry/stage_element。
但更重要的是,为了在这类项目中建立和维持一种授权协作的文化,在转录和编码本身的过程中放置尽可能多的工具是很重要的。这样做可以让学生有机会熟悉新技术(而不是将这些技术隔离在森林的另一部分,作为遥远而可怕的“专家”系统),同时也将他们的编码工作定位为对整个现有集合的参与,既介入了项目的既定实践,又受到了约束。我们并没有将错误纠正视为私有过程末尾的评估阶段,而是寻求将其视为改进编码过程本身并使其更具对话性的工具。这些都是有用的原则,但是在实际中如何建立一个复杂的错误纠正工具,并将其部署为XML文本编码过程的一部分呢?在下面的简要案例研究中,我们检查了一些具体的例子,以探索在使新工具适应数据的特殊性和工作环境的特殊性时涉及到什么。
实践中的质量保证
在我们的自动化错误测试例程中,WWP采用的协作开发过程使我们能够引入专业的技术知识和对WWP编码的深入理解。一个典型的例子是ISO Schematron3.ISO Schematron是一种基于规则的XML模式语言,用于验证XML文档。我们用来查找短语级元素周围的空格错误的模式(用于标记短语级现象的元素,如名称、日期和技术术语)。此模式运行一系列测试以检查以下错误:
丹麦<地名> < /地名> < / roleName > < /名称>
在这种情况下,由于编码中的开始和结束标记,人类校对者很难看到(逗号后的)空格。该模式可以识别与空格相关的错误范围,并将其标记为消息,如“This
这个模式相当复杂,因为它测试的问题类型可能以复杂的方式表现出来。它需要能够识别相关的短语级元素和识别编码的环境如何影响间距问题(如当元素之间的空间是没有必要,因为他们是嵌套在其他元素,如在一个列表上的项目或的段落将违约开始一个新行)。它还需要区分没有空格的正常情况(例如,原始文本中的缩写紧跟在编辑扩展之后)。它必须正确地处理标点符号:例如,逗号应该有后面而不是前面的空格;破折号前后不应该有空格。它还必须正确处理WWP对上标、i/j和u/v移位、行尾连字符、所有格、标记注释锚点的字符、独特的首字母以及许多其他影响是否需要空格的现象的编码。
这个模式最初是由WWP的高级XML程序员兼分析师Syd Bauman开发的;然后WWP工作人员对它进行了测试,他们与Bauman一起编辑模式文件,现在学生编码器使用它作为我们常规发布过程的一部分。通常情况下,我们使用Bauman生成的报告开始工作,但现在我们已经将模式文件置于版本控制之下,以便编码器和工作人员可以使用它来直接验证他们正在处理的文件。
为了验证具有众多变量的例程,通常需要多次迭代来识别和处理标记和转录文本交互的所有方式,并由多个工作人员贡献他们对项目编码实践的详细理解。在这种情况下,鲍曼最初开发的图式检索了数百个错误,其中许多是假阳性。为了让这个模式适用于我们收集的所有文本,鲍曼建立了总结报告,以确定最常见的间距错误类型,其中大约一半是假阳性或真正的错误,可以在全球范围内解决。4例如,我们解决了
我们在模式开发的细化阶段所做的一项调整可以说明其中的复杂性:WWP有两种不同的方式来编码某些类型的标点字符,如破折号、引号和括号。当这些字符被视为标记元素边界的“分隔符”时,它们将使用@rend属性作为元素的“再现”或外观的一部分进行记录。5WWP记录了文本翻译的许多方面,包括斜体、套管、缩进、对齐、下划线等等。在其他情况下,字符只是作为文本的一部分被转录。该模式的初始版本正确地处理了转录的em破折号,但错误地标记了将em破折号编码为再现的元素之间缺少空格。更新后的模式现在可以处理以下情况:
To be or not To be
< bbl rend= " pre(-
莎士比亚)" > <作者> < persName > < / persName > < /作者> < / bibl >
编码这段文字没有问题:
生存还是毁灭——莎士比亚
在确定并解决了这个问题之后,WWP的工作人员意识到,我们需要检查使用@rend编码可能会影响空格错误测试的其他方法,之后我们对模式做了几次额外的修改。正如这个例子所表明的,创建这样一个模式需要理解编码,不仅需要识别编码和模式之间交互的相关类别(这里,用@rend编码的分隔符意味着不需要空格),它可能与几个不同的元素一起出现,并由不同类型的错误消息标记,但也认识到特定类型错误的更广泛的含义(这里,这类错误表明需要更彻底地审查我们的再现编码)。WWP有两种不同的方式来编码某些标点字符,比如破折号、引号和括号。如果没有这篇综述,我们对错误的系统识别将远不准确,错误地标记正确的编码,如上所述,但也不能识别错误——例如,因为我们在Women Writers Online (WWO)集合中将em破折号周围的空格规整为零,实际上,在和< bbl >元素之间有空格将是一个错误。这些细节可能看起来微不足道,但它们会迅速扩大,关键是我们要始终遵循规范和我们文档中列出的其他编辑实践,6见http://wwp.neu.edu/research/publications/documentation/internal/ # ! / / regularization_narrative条目。尤其是为了让WWO的读者能够依赖其中所表示的信息。
由于为WWO编码需要与标记进行非常高水平的接触,在我们的编码器培训中,我们不仅强调转录和标记的基础知识,还强调使用XPath、正则表达式和其他搜索机制对数字集合进行高级导航。我们还帮助编码器开发项目如何使用验证和转换例程来管理我们的集合的强大的概念性理解。这种方法意味着编码器可以使用许多不同的例程作为他们个人的校对过程的一部分,也可以有助于我们正在进行的收集改进和一致性检查。例如,在一组编码器与其他几个编码器一起学习如何使用短语级间距模式后,7其中包括检查引用和直接引语的链接实例是否正确地指向彼此,以及查找“错误空元素”的另一种情况,或者应该始终包含内容的元素为空的情况。一个编码器问,Schematron是否还可以查找应该始终有标记的元素,指定它们是否以新行开始,以标记任何缺少标记的情况。它可以——我们现在有了一个新的模式在我们的校对程序中,就是这样做的。
这只是编码器在我们的工作过程中推动改进的许多情况之一。对于最后一个例子,一个编码器领导推在她的同事发表WWO文本使用XPath搜索在所有情况下,他们不确定我们的元素(如果有的话)应该使用命名实体编码一个特定的词或短语,在最近的一次讨论是否如< persName >, <名称>,或者其他元素最适合编码"不列颠尼亚"长期以来,编码器在有问题时都能搜索WWO来查找示例,但是这个编码器将使用XPath查询集合变成了一种正式的实践,现在所有编码器都遵循这种实践,作为我们小组讨论的起点,讨论如何处理边缘情况和检查过去的编码是否一致。因此,质量保证已经在编码器自己与收藏的直接接触中找到了它的方式。更重要的是,编码器建议我们调查创建一个转换,让我们回顾这些问题往往出现的元素(如<名称>,< persName >, <地名>,和<标题>),然后检查他们的内容,以确保具有挑战性的单词和短语(如“不列颠”,“首长”,“天堂”,或“Chiron”)用相同的元素编码。我们现在已经开始开发XSLT转换,它可以定位相同的单词或短语(适应较小的拼写和正字法变化),并显示编码它们的元素,以便查看和解决任何不一致的地方。与阶段级间隔模式一样,该测试的开发将涉及编码器和技术人员之间的密切合作。
结论
正如这些例子所说明的,教学在这些策略的成功中扮演着重要的角色,不仅在支持编码器使用复杂工具方面,而且(更重要的是)在内容专业知识和技术专业知识非常紧密地交织在一起的团队中,在他们早期的适应中扮演着重要的角色。对他们来说,项目的任何部分工作都是无形的或禁区。负责领导工具开发的工作人员也与编码工作人员密切合作,并参与到这种教学中,这是非常重要的。理解工具本身及其开发作为学习过程的一部分,有助于确保学生编码器不被定位为永远需要技术保护的新手,而是作为充满好奇心的学习者和互补性知识的贡献者。
正如WWP自己的经验所显示的那样,这是一个很容易看到良好实践却很难遵循的领域。例如,WWP多年来一直成功地使用emacs(一个功能强大的命令行文本编辑器)作为其编码环境。但是,尽管emacs是创建错误发现和纠正工具的理想环境(我们开发了几个),但我们没有成功地将它们建立在编码器自己的核心专业知识基础上。结果,尽管这些工具满足了实际的需求,但一旦最初掌握它们的少数编码器继续工作,这些工具就会被废弃。
因此,这种教学互惠的一个重要副作用是增加工作环境中工具的透明度(以及文化可持续性):因为其用户完全了解工具的运作方式,因此不太容易发生意外误用,或因失去一名专家而被废弃。维护这些材料的完整性(从数据角度和学术质量角度)是一个相当大的挑战,但也与项目的教学和合作精神密切相关。我们希望我们的学生同事拥有强大的能力和广泛的知识,而不是让他们使用黑盒工具来解决孤立的问题。工具、培训、文档和沟通在这里都扮演着重要的相互关联的角色。
参考文献
1. | ↑ | 文本编码计划指引(http://www.tei-c.org/)指定一种XML语言,用于创建人文科学、社会科学和语言学研究材料的高质量数字表示。该指南自1994年以来一直是数字人文学科实践的主要标准。 |
2. | ↑ | 在这种情况下,我们的文档的时间指示编码器选择一个值“混合”<阶段>元素@type属性在多个值的情况下可能应用(如“进入Sophonsiba,说话大声,“它包含一个入口和一个描述的人物的行交付)。通常情况下,奇边情况和异常会揭示编码策略本身的缺陷,并促使对特定实践进行重新评估。然而,编码器发现“混合”值不足以代表他们的文档的特殊性,我们发现有些人只是简单地选择了任何更具体的值,似乎是主要的(因此失去了“混合”应该传达的多元性的想法)。认识到这一点,我们决定修改编码,允许@type上有多个值,并审查我们的阶段方向,根据这个新条款更新它们;审查过程还让我们为@type添加了三个新值。有关我们目前对舞台指示的处理,请参见http://wwp.neu.edu/research/publications/documentation/internal/#!/entry/stage_element。 |
3. | ↑ | ISO Schematron是一种基于规则的XML模式语言,用于验证XML文档。 |
4. | ↑ | 例如,我们解决了 |
5. | ↑ | WWP记录了文本翻译的许多方面,包括斜体、套管、缩进、对齐、下划线等等。 |
6. | ↑ | 见http://wwp.neu.edu/research/publications/documentation/internal/ # ! / / regularization_narrative条目。 |
7. | ↑ | 其中包括检查引用和直接引语的链接实例是否正确地指向彼此,以及查找“错误空元素”的另一种情况,或者应该始终包含内容的元素为空的情况。 |