如何构建基于网页的语料库

2020-04-23 12:25:01 sketchengine

本文共3091个字,阅读需8分钟

阅读模式 切换至双语

网络网站是一个文本语料数据的巨大来源,且数据容易获取,但同时也是垃圾邮件、机器生成内容和不适合语言分析的复制内容的垃圾仓库,并且这些无效内容可能会使网页语料库的语言质量受到影响。 SketchEngine确切意识到在构建基于网页的语料库时存在的问题。这就是为什么我们从不盲目地将网络提供的任何东西都纳入其中。通常,我们会丢弃获取到的文本中40%到60%内容。SketchEngine会使用精细程序来识别不适用于语言分析的数据,主要是剔除以下内容。 重复的内容 在多个网站甚至同一网站的不同页面上发现相同或近乎相同的内容,这种情况并不罕见。例如,传媒集团经常会在他们拥有的各个网站上发布同一篇新闻文章,有时只是稍作改动,或是经过缩短或延长的版本。同样,旅行社也经常在其网站上发表旅游胜地说明。然而,这些描述通常不是自己写的,而是从其他旅游网站抄袭过来的,有时会略作改编。 同一文本在网页上出现了几次并不意味着有几个人先后写了这篇文章。如果将文章的每一个实例都包含在一个通用的语言语料库中,语料库中显示出的语用信息就会被扭曲。简单地说,语料库将显示复制内容中的语言比实际使用频率更高。基于网页的语料库非常容易受到这个问题的困扰,这会让其变成无效语料库。 如何避免重复的内容 SketchEngine使用重复数据删除程序,该程序能够检测完全重复的文本以及稍作调整、缩短或扩展的文本。这意味着,如果两个文本间只有微小的差别,那么在语料库中只会保留一个实例。重复数据删除是在段落级别进行的,这意味着程序会比较整个段落的相似性。如果语料库中任何地方的两个段落被识别为相同,其中一个段落将会被删除。因此,基于网页的语料库中的某些文档可能会缺少一个或多个段落。 利用用户语料库删除重复数据 当用户在SketchEngine中使用内置的WebBootCaT工具(https://youtu.be/VjHC4lMop-s)构建自己的语料库时,重复数据删除程序在默认情况下不会被激活,因为在很多情况下,用户可能需要包含重复的内容。例如,用户可能希望分析同一条新闻在语料库中出现的次数。 重复数据删除程序可以在语料库编译期间激活,也可以选择执行重复数据删除的级别:句子级别、段落级别、文档级别,或可以选择任何其他结构。例如,选择句子级别后,将对单个句子进行比较,如果发现相同的句子,则将在语料库中保留一个,其余重复句子全部删除。 不需要的内容 互联网上充斥着几乎没有任何语言价值的文本内容(除非你想专门研究这类文本),这类文本可能包括: 由不完整的句子组成的文本(回帖、评论和讨论) 页面广告 网站子网页上的重复内容(如导航菜单、顶部菜单,结尾内容文本、法律条款) 文本片段(邀请用户阅读完整文章或页面的开头部分内容) 使用JusText(http://corpus.tools/wiki/justext)可以消除上述类型的垃圾文本,JusText能够从下载的网页中识别并删除这些内容。当用户使用带有网页选项的集成语料库构建工具(https://www.sketchengine.eu/guide/create-a-corpus-from-the-web/)时,该工具也适用于用户语料库。 在以下网页中应用JusText工具将会删除绿色标记外的所有内容。从第一个网页页面开始,没有任何内容会被纳入语料库,因为每一段文字都不够长,无法为语言分析提供必要的语境。 新闻网站的主页,只有新闻标题或新闻片段,没有足够的上下文。该主页没有任何内容会被纳入语料库。 一篇博客文章或新闻文章的主体将被包括在语料库中,其余的内容将被忽略。 垃圾信息 这里所说的垃圾文本是指在互联网上发现的文本,这些文本可能是机器生成的,或是生成后被多次自动复制到网络上其他地方。垃圾信息可能包括: 在互联网大量出现但在互联网外出现的频率极不相称的文本(如色情网站和成人网站,出售减肥、增肌、生发和其他健康产品的网站)极不相称。这些站点经常在各种URL上自动复制,这进一步增加了它们的出现的频率。 机器生成的文本,通常不会传达任何有意义的信息 机器翻译文本 SketchEngine构建基于网页的语料库时,会使用重复数据删除程序消除部分垃圾信息。在最坏的情况下,语料库中每页最多只会出现一处垃圾信息。然而,SketchEngine中剔除垃圾信息的主要方法是使用种子URL。 种子URL 爬取网页数据的过程并非完全随机的。在爬取数据开始之前,会编译一个高质量的网站列表,网络爬虫开始下载这些种子url的内容。这些网站可以是媒体网站、博客、专业网站,也可以是我们过去下载好内容的其他网站。如果从一个链接发现另一个网站,网络爬虫将跟随该链接,但它会一直继续重复该操作直到先前设定的级别。由于大多数不需要的网页内容都是英语内容,因此在构建基于网页的英语语料库时,必须将级别设置得很低。对于其他主要语言,级别可能会相对高,而对于小语种,设置级别可能会更高,因为这些语言的垃圾信息相对较少。 当使用内置的WebBootCaT工具构建用户语料库时,不能使用种子URL。种子URL仅限于在SketchEngine中进行的基于网页的语料库构建中使用。然而,用户可以通过使用带有网站选项的WebBootCaT一次下载一个网站来构建语料库。 附加标准 用于构建基于网页的通用语料库的网页爬取数据过程还包括各种附加准则。 长度 在应用上述清理工具后,一个文档只要在其下载的网页包含足够的数据时才会被保留在语料库中。如果文档太短,例如只有一个句子,则文档将不会被纳入到语料库中,因为脱离语境的单独句子在语言学上几乎没有价值。另一方面,如果文档过长,例如数千字,则可能表明内容不是标准网页,或内容可能根本不具有语言性质,这类文档也不会被收入语料库中。 在使用内置的WebBootCaT工具构建用户语料库时,可以将这些参数设置为不同的值,甚至可以禁用这些参数以保留语料库中的所有文本。 语言检测 在爬取数据期间,检测下载文本的语言,只保留指定语言的文本。这意味着一个英语语料库可以包含德语、西班牙语、法语、日语等网站上发布的网页,只要其文本内容是英文的。 文本从何而来? 尽管使用种子URL作为网页爬虫的起点,但要概括并给出一个简单的答案并不容易。然而,语料库中的每个文档(下载的网页)都带有元数据,例如源网站以及下载文本的确切URL。用户可以生成所有网站或URL列表以及从每个源下载的文档或令牌的数量。我们从这里可以看到数据从何而来。 同样,可以在每一行都显示这些信息,或者将搜索范围缩小到某些网站,这样用户就可以始终控制结果的来源。文本类型或子语料库是为实现这一目标而设计的功能。 如何建立自己的基于网页的语料库 建立自己基于网页的通用语料库没有什么意义,因为SketchEngine中已经有大量的基于网页的通用语料库,其中最大的包含400亿单词,18种语言的时间戳语料库(Timestampedcorpus)甚至每天都在更新。 如果您需要构建一个专用性语料库,请使用内置的网页语料库构建工具,其中包括以下一个或多个选项: 从网页搜索构建语料库 从网页链接构建语料库 下载一个网站。 极客须知 大多数集成到SketchEngine、网页爬虫和WebBootCaT中的工具都是开源的,可以从http://corpus单独下载。然而,它们的安装、配置和使用可能需要高级的IT技能。通常使用预先加载在SketchEngine中的语料库或使用内置的语料库构建工具会高校许多。

以上中文文本为机器翻译,存在不同程度偏差和错误,请理解并参考英文原文阅读。

阅读原文