# DataCollector

 DataCollector项目主要介绍NLP预训练模型训练数据集资源、数据清洗过滤方法。
 [[网页数据介绍及清洗过滤方法](#网页数据介绍及清洗过滤方法)]

 - Common Crawl数据格式

 - 基于common crawl WET格式原始数据清洗过滤方法

    （1）不同语言数据分类过滤

    （2）基于规则的过滤

    （3）基于分类模型的垃圾数据过滤

    （4）数据去重方法

 - 运行

 [[加入鹏程·PanGu-α微信交流群](#微信交流群)]

# 网页数据介绍及清洗过滤方法

### Common Crawl数据格式

Common Crawl网站提供了包含上百亿网页数据的免费数据库，并希望这项服务能激发更多新的研究或在线服务。Common Crawl原始数据包括三种格式：WARC、WAT、WET。

- WARC：WARC格式是抓取的原始数据，提供了到抓取过程的直接映射。该格式不仅存储了它联系的网站的HTTP响应(WARC-Type: response)，它还存储了关于该信息是如何被请求的信息(WARC-Type: request)和抓取过程本身的元数据(WARC-Type: metadata)。


- WAT：WAT格式以JSON格式存储， WAT文件包含关于上面以WARC格式存储的记录的重要元数据。该元数据是为这三种类型的记录(元数据、请求和响应)中的每一种计算的。如果爬行的信息是HTML，计算的元数据包括返回的HTTP头和页面上列出的链接(包括链接的类型)。


- WET：由于许多任务只需要文本信息，普通抓取数据集提供了只包含提取的明文的湿文件。以WET格式存储文本数据的方法非常简单。WARC元数据包含各种细节，包括URL和明文数据的长度，明文数据紧随其后。


## 基于common crawl WET格式原始数据清洗过滤方法

##### 不同语言数据分类过滤

通过不同语言的Unicode编码范围可以快速过滤出相应语言的网页。在实际数据抽取中可能还需要同时考虑原始数据的编码格式、网页结构等因素，构建网页黑白名单等方法提高数据抽取效率和数据的质量。除此之外也可以考虑采用文本分类模型等方式进行过滤。

##### 基于规则的过滤

Common Crawl数据包含较多各种类型的垃圾，如特殊符号、广告、网页标题，通过数据特点构建相应的数据清洗规则往往能比较好的提高数据质量。

##### 基于分类模型的垃圾数据过滤

通过上述两个步骤形成的文本数据往往仍然包含大量敏感、黄色、广告等信息，我们通过基于[Fasttext](./src/3-JunkDataFilter)的文本分类模型、关键词等方法对于敏感、黄色、广告等文本信息进行了过滤。

##### 大规模数据去重方法

网页内部、不同网页之间均存在文本完全重复的情形，基于Hadoop+Spark平台采用[HashTF+MiniHashLSH](./src/)算法对数据在段落粒度做了文本去重。目前正在对这部分工作进行总结并撰写专利，等专利提交后会开源该部分基于 spark 大数据平台的全局去重代码。目前只开源文档内的去重代码。

## 运行

##### 1、语言过滤、规则清洗、敏感词过滤

```
python cc_cleaner.py 
```

##### 2、fasttext 垃圾分类

## 微信交流群

添加微信入鹏程.盘古α交流群:<img src="./docs/个人微信.jpg" width="270"/><br/>

<img src="./docs/交流群00.jpg" width="270"/><br/>



