LCSTS 数据来源主要是微博爬虫,数据收集的策略很类似pageRank思想。先找50个流行的官方组织用户作为种子然后从种子用户中抓取他们关注的用户,并且将不是大V,且粉丝少于100万的用户过滤掉。然后抓取候选用户的微博内容。最后通过过滤,清洗,提取等工作得到最后的数据集。
来源为哈尔滨工业大学深圳研究生院,是开放的数据集。
一、数据下载
1、根据 http://icrc.hitsz.edu.cn/Article/show/139.html 该网站上的提示发送申请获取数据集。
2、可以在我的网盘下载:https://download.csdn.net/download/u012495579/12050986
二、数据解析处理
下载下来的数据集是三个txt文件,里面的数据格式类似于XML格式的,如下:
<doc id=0>
<human_label>5</human_label>
<summary>
可穿戴技术十大设计原则
</summary>
<short_text>
本文总结了十个可穿戴产品的设计原则,而这些原则,同样也是笔者认为是这个行业最吸引人的地方:1.为人们解决重复性问题;2.从人开始,而不是从机器开始;3.要引起注意,但不要刻意;4.提升用户能力,而不是取代人
</short_text>
</doc>
我们在做NLP任务的时候通常需要将摘要与原文本分别提取出来,此前尝试了使用XML解析工具进行解析,会出问题。后来采用HTML解析工具BeautifulSoup进行解析可行。下面是完整的解析代码,解析出来的摘要和原文本分别存放在不同文件,每行对应。
from bs4 import BeautifulSoup
import os
from tqdm import tqdm
INPUT = {
'valid': './LCSTS_ORIGIN/DATA/PART_III.txt',
'test': './LCSTS_ORIGIN/DATA/PART_II.txt',
'train': './LCSTS_ORIGIN/DATA/PART_I.txt'
}
OUTPUT_DIR = './dataset/LCSTS_DATA'
for key in INPUT:
print('start process: {}\n'.format(key))
src_file = open(os.path.join(OUTPUT_DIR, key + '.src'), 'a+', encoding='utf-8')
tgt_file = open(os.path.join(OUTPUT_DIR, key + '.tgt'), 'a+', encoding='utf-8')
input_file_path = INPUT[key]
with open(input_file_path, encoding='utf-8') as file:
contents = file.read()
soup=BeautifulSoup(contents,'html.parser')
line_count = 0
max_lines = 2078888 # 此处设置了一个变量控制最大解析多少条数据
for doc in tqdm(soup.find_all('doc')):
if line_count > max_lines:
break
short_text = doc.find('short_text').get_text()
summary = doc.find('summary').get_text()
src_file.write(short_text.strip() + '\n')
tgt_file.write(summary.strip() + '\n')
line_count += 1
src_file.close()
tgt_file.close()
在代码中采用了一个max_lines = 2078888
将最大解析条数设置在了2078888条,主要是原数据解析的时候在208万条左右会出错误,暂时没去分析错误原因,想想208万条也够用了,所以设置了一个限制,到此处就停止解析。
解析后的内容被分别输出到6个文件中:
train.src (训练集的输入(短文本))
train.tgt (训练集的输出(摘要))
test.src (测试集的输入(短文本))
test.tgt (测试集的输出(摘要))
vaild.src (验证集的输入(短文本))
vaild.tgt (验证集的输出(摘要))
之后就可以对解析后文本进行分词等处理操作啦。