【Spark NLP】第 18 章:人类标签

发布于:2022-11-01 ⋅ 阅读:(556) ⋅ 点赞:(0)

  🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

文章目录

术语说明

指导方针

场景:学术论文分类

在哪里可以找到贴标机

标签者间协议

迭代标记

标记文本

分类

标记

清单

结论


我们在本章的部分内容中提到了人类标签。在本章中,我们将考虑人类如何实际为不同类型的 NLP 任务进行标记。一些原则(例如指南)适用于一般标签。NLP 标记任务所需的大多数特殊考虑是围绕技术方面和处理语言任务时的隐藏警告。例如,要求某人标记词性要求他们了解词性是什么。让我们首先考虑一些基本问题。

关于您的实际输入是什么,可能值得考虑一下。例如,如果您正在为分类任务标记文档,则输入是显而易见的——文档。但是,如果您正在标记命名实体,人类不需要查看整个文档即可找到它们,因此您可以按段落甚至句子将其分解。另一方面,我们在第 9 章中讨论过的共指解析可能具有长距离的共指,因此您可能需要对整个文档进行人工处理。

要考虑的另一件事是您的任务是需要领域专业知识还是只需要一般知识。如果您需要专业知识,收集标签可能需要更多时间和金钱。如果你不确定,你可以做一个实验来找出答案。让一组非专家以及一位专家(或一组专家,如果可能的话)标记数据的子集。如果非专家和专家有足够高的一致性,那么你可以在没有专家标签的情况下度过难关。我们将在本章后面讨论标签商之间的协议,衡量标签商达成一致的频率。

在进行贴标时,我们首先需要考虑的是为贴标者定义任务。这是一个有时会引起争议的话题,因为对于您应该给予多少指导意见不一。

术语说明

有许多用于标注和标注的人的术语:标注/标注者、评级/评分者、评判/评判等。还有许多用于评估标注者的预标注示例的术语——基本事实集、黄金集, 等等。在本章中,我将使用“labeling/labelers”和“golden set”。

指导方针

指南是告诉贴标机如何完成任务的说明。任务所需的详细信息量通常是有争议的。幸运的是,您可以牢记一些经验法则。首先,确保您的指南反映了对产品的预期。例如,如果您正在为垃圾邮件分类器收集标签,您需要清楚垃圾邮件的含义. 人们有时将新闻通讯和其他自动电子邮件称为垃圾邮件。您的模型不仅可以近似于人工贴标签的过程,还可以作为产品特征。这意味着我们可以使用两组期望来明确定义我们的任务。我喜欢从思想实验开始。如果我忘记了所有的时间和预算限制并雇佣了一大群贴标师来开发我的产品怎么办?我会告诉他们什么对客户是必要的?答案是指南的基础。

既然我们对任务有了一个很好的定义,我们还有一些其他的考虑。第二条规则是避免过度限制正确的标签是什么。有些任务自然是模棱两可的。如果你试图约束这种自然的歧义,你可能会引入一些问题。第一个问题是您将在模型中引入偏差。第二个问题是,如果你不自然地约束问题,你可能会导致贴标者在你没有考虑到的情况下给出错误的结果。让我们考虑一个场景来使这个想法更具体。

场景:学术论文分类

我们将从上一章中提取我们的场景。我们正在构建一个应用程序,该应用程序接收多种语言(英语、法语、德语和俄语)的研究论文,并根据它们所属的学术部门对它们进行分类——例如,数学、生物学和物理学。我们的标签库由来自各个部门的本科生和研究生组成。我们将随机分发文件,但我们会确保贴标人会说研究论文的语言。这意味着说英语和法语的语言学系本科生可能会得到法语的物理论文,但永远不会得到德语的论文。

让我们应用我们的第一条经验法则。我们产品的用户期望为每个文档正确分配部门标签。但是,有跨学科的论文,所以也许每个文件都没有一个正确的答案。这在正确和不正确之间创建了一个有点模糊的界限。我们可以定义一些简单的规则来合理地约束问题。物理论文将始终包含数学内容,但哲学和教学论文可能除外。然而,这并不意味着每篇带有物理标签的论文都应该有数学标签。事实上,假阳性的扩散比假阴性的扩散要糟糕得多。像这样的应用程序的用户可能正在搜索或浏览论文。如果几乎每篇物理论文都有数学标签,那么看数学论文的人将需要浏览所有物理论文。如果我们不支持多个标签,则意味着跨学科论文的可发现性会降低。我们可以通过与标签间协议和迭代标签技术相关的技术来解决后一个问题。不过,就目前而言,我们应该在我们的指南中明确指出,不允许贴标人指定多个标签。相反,我们将指示贴标者选择与给定文档最匹配的部门。我们应该在我们的指南中明确指出,贴标者不得指定多个标签。相反,我们将指示贴标者选择与给定文档最匹配的部门。我们应该在我们的指南中明确指出,贴标者不得指定多个标签。相反,我们将指示贴标者选择与给定文档最匹配的部门。

第二条经验法则是不要不自然地限制任务。似乎我们已经按照第一条规则做到了这一点。我们通过确保不止一个人看到每篇论文来开始减少这个问题。这确实意味着工作量将增加一倍或更多,具体取决于我们希望每篇论文有多少眼睛。

因此,我们的指南将指导我们的贴标者为每个文档选择最佳的部门标签。它会警告他们歧义是可能的。我们还需要在指南中包含示例。我通常喜欢展示几个标签容易辨别的清晰例子和一个模棱两可的例子。例如,将爱因斯坦关于狭义相对论的论文“论动体的电动力学”作为物理学论文的一个明显例子。您希望尽早为您的标注员做好准备以应对模棱两可的情况,这样他们在遇到模棱两可的示例时就不会脱轨。

即使使用外部贴标机(为不同组织工作的贴标机),最好在内部测试指南。我建议从你的团队中找一些人,让他们阅读指南并判断一些例子。在此之后,与您的产品负责人一起查看示例,如果可能的话,与利益相关者一起查看这些示例。写作指南迫使你写下你的许多假设。通过让其他人使用您的指南并评估结果,您可以检查这些假设。

现在我们有了指导方针,让我们来谈谈可以改进标签使用的一些技术。

在哪里可以找到贴标机

您在哪里找到贴标机取决于您的任务。如果您希望使用需要一般知识的公共数据为任务收集标签,您可以使用 Amazon Mechanical Turk 或 Figure 8 等众包解决方案。如果您需要专业知识,您也许可以使用众包,尽管它会更贵。如果该技能足够稀有,您可能需要寻找贴标者。

如果您的数据无法公开,那么您可能需要在自己的组织内招聘。为此,一些组织有自己的全职贴标员。

标签者间协议

贴标商间协议是贴标商之间的协议。该术语还用于指代由不同标记者标记相同的示例比例的度量。这个概念在人类标签中有很多用途。首先,我们可以使用它来确定我们的模型实际上可以预期的效果。例如,如果我们发现在我们的场景中,85% 的由多个标签器标记的文档具有相同的标签,那么我们知道,在这个任务模型上,在人类水平上执行可以预期获得 85% 的准确率。这并不总是正确的。如果任务只要求标注者批准基于模型的推荐,那么您很可能会看到更高的准确度。这是由于基于模型的推荐偏向于人类。

贴标商间协议的另一个用途是找到在任务上有困难的贴标商,或者没有努力实际贴标的贴标商。如果您发现某个贴标商与其他贴标商的一致率较低,您可能需要查看他们的工作。对此可以有许多可能的解释。以下是一些可能的原因:

  • 您的指导方针含糊不清
  • 他们对指南的解释与其他贴标者不同
  • 他们在这件事上拥有不同的专业知识,导致他们得出不同的结论
  • 他们没有阅读指南,也可能没有在标签上付出努力

在跳入恶意之前,您可能应该排除其他解释。如果它是前两种解释之一,您可以适当地调整您的指南。如果是第三种解释,那么你应该考虑他们的结论是否对你的产品有效。如果是这样,那么标签很好,但问题可能比您最初想象的要困难。如果结论无效,那么您应该在指南中提供有关此类示例的指导。如果您认为这是出于恶意,那么您应该丢弃这些标签,因为它们会给您的数据添加噪音。

您还可以使用您混合到未标记数据中的一组经过验证的标签示例来衡量标记质量。这个黄金集可以来自与您的数据相似的公共数据集,或者我们可以自己手动管理。即使您没有向多个贴标者展示示例,这也可以让您找到生产可能有问题的标签的贴标者。请记住,这些经过验证的标签可能仍基于您的假设,因此,如果您的假设错误,则可能会错误地认为贴标机正在生成不正确的标签。

可能对标签之间协议最有用的用例是找到模棱两可的例子。在您查看了标签之间的协议并认为标签质量良好后,我们可以考虑使用不同的标签作为示例,以表明它是否有歧义。首先,我们应该找到它的普遍性。如果四分之一的研究论文有多个标签,那么您可能希望将其视为多标签问题而不是多类问题。如果只有少数文档有多个标签,那么您可以简单地采用具有多数支持的标签,或者如果捆绑则随机。或者,您也可以将多个标签保留在验证集和保留集中。这将使您的训练数据保持一致,但不会因为您推荐有效的替代方案而受到惩罚。我们可以用来处理标签歧义的另一种技术是迭代标记。这让我们可以使用贴标机匿名检查彼此的工作。

迭代标记

迭代标签可用于提高标签质量,而不会增加您的工作量。这个想法是你将你的标签任务分成至少两个步骤。第一步是让标注者快速分配适当的标签,并理解可能由于歧义和缺乏领域专业知识而导致错误。然后,您有另一个更专业的贴标机来验证或使标签无效。让我们看看这在我们的场景中会是什么样子。

第一项任务是将研究论文发送给了解论文语言的本科生贴标员。然后将论文发送给第一个标注员指定的部门的研究生,该研究生也知道该语言。第二个贴标者,即毕业生,只会验证第一个贴标者的工作。这有一些优点和缺点。这意味着可能更昂贵的毕业生的工作量更少,这为我们节省了钱。这也意味着分配给部门的研究论文由部门中的某人进行审查。缺点是它要求每个部门语言对都有一个研究生,这可能是不可能的。您可以通过允许研究生自愿​​代表他们熟悉的部门来缓解这一要求。例如,

迭代标记也可用于将复杂任务简化为一系列简单任务。这在与文本相关的标签中特别有用。让我们看一下与文本相关的标签的一些特殊注意事项。

标记文本

到目前为止,我们所涵盖的大部分内容都适用于一般的标签。让我们看一下在标记文本时应该牢记的一些特殊注意事项。

分类

您应该注意要分类的文档的大小。如果您正在对推文或类似的小段文本进行分类,您的标注员应该能够快速完成任务。如果它们是较大的文本,例如在我们的场景中,则存在贴标机疲劳的危险。当单个任务(对文档进行分类)非常耗时,并且在完成许多任务后标注员变得不那么专心时,就会出现贴标机疲劳。可以争论的是,人类天生就是懒惰的,这就是我们制造计算机为我们做事的原因。这意味着标注者有时会无意中找到任务的捷径——例如,在文档中搜索特定的单词。这些标签质量很差。如果你想让这个任务更小,你可以通过两种方式来完成。首先,让标注员对摘要进行分类。这意味着贴标签者对任务的信息较少,但他们也会更快地完成任务。另一种可能性是使用指南来建议贴标者不要在单个任务上花费太多时间。使用后一种方法,您绝对应该尝试将文档放在多人面前。

标记

第二种文本标记任务是标记。这是您要求标注者识别文本片段的地方。在文档中查找命名实体就是一个例子。在我们的场景中,我们可能会使用它来查找文档中的技术词汇。然后可以使用这些来构建概念提取注释器,该注释器被馈送到分类模型的下游。如果您的文档长于几句话,则个别任务可能会变得非常费力。如果您正在做命名实体识别之类的事情,您应该考虑将文档分解成句子,并让您的任务识别句子中的实体,而不是文档。此类任务需要考虑的另一个警告是,它可能需要语言学知识。例如,假设我们将接受用波兰语写的论文。然而,所有其他语言都由包含词性标注器的处理管道支持,但我们没有针对波兰语的这种模型。识别词性可能不是一般知识。您将需要找到不仅会说波兰语而且还了解波兰语语法技术的人。一些讲波兰语的人会具备这方面的知识,但您在寻找贴标商时应指定此要求。

清单

考虑有关您的项目的以下问题:

  • 输入是什么(文档、句子、元数据等)?
  • 输入可以分解吗?
  • 此任务需要领域专业知识还是仅需要一般知识?
  • 指南清单

    • 我能解释一下这个任务如何支持产品的功能吗?
    • 这个任务有多模棱两可?能有多个正确答案吗?
    • 我对任务施加了哪些限制?
    • 谁可以和我一起测试这些指南?
  • 贴标商间协议清单

    • 我能否为所有示例配备多个贴标机?部分示例怎么样?
    • 我是否有一套黄金套装来衡量贴标机的正确性?
  • 迭代标签清单

    • 我的任务可以分成多个阶段吗?
    • 每个阶段我都有合适的贴标机吗?
  • 标签文本清单

    • 我在做什么样的文本标注任务?
    • 我的任务很大吗?它们可以做得更小吗?
    • 我的任务是否需要该语言的技术知识?

结论

收集标签是任何可以通过衡量人类判断来帮助的应用程序所需的宝贵技能。能够创建自己的标记数据可以使原本不可能完成的任务成为可能。

现在我们已经讨论了收集标签,让我们看看我们应该做什么来发布我们的应用程序。