text_gcn
text_gcn copied to clipboard
关于打乱和缩小数据集规模
您好! 我想缩小数据集规模来查看text-gcn的表现如何,所以就先尝试在build-graph.py的第54行添加了一句random.shuffle(lines)来打乱数据集的顺序(为了让8种标签的句子能随机出现),但是加了这句之后再运行准确度就变得十分低,请问一下这是哪里出了问题呢?
@demons6665
您好,您这样打乱会使文本类别列表和文本元数据(label,训练或测试)列表不能一一对应。也就是变成张冠李戴,文本A原来的label跑到文本B上去了。
实际上build_graph.py中已经有打乱的代码,就是第65行random.shuffle(train_ids)和第80行random.shuffle(test_ids)。
关于只用部分训练集,也就是重现论文中的图4,只需要恢复build_graph.py中第68行train_ids = train_ids[:int(0.2 * len(train_ids))]即可。
您好!感谢您的耐心回复! lines中的每一个行都包含了文本数据和文本类别对吗?那么在提取标签的代码中,标签y都是来自于shuffle_doc_name_list,而shuffle_doc_name_list来自于doc_name_list,doc_name_list是从lines中提取的,那这样的话,打乱lines应该不会打乱这种一一对应的关系,而只是打乱数据(文本数据+标签)的顺序吧?还是说label并不是从lines中提取的呢?
@demons6665
label 位于另外一个文件中,也就是第40行的lines,跟第54行不是一个。
哦原来是这样,好的,谢谢! 还有最后一个问题,我的数据集是情感分类的二分类问题,用您的模型跑了之后训练集很容易准确率就达到了九十几,验证集准确率也在八十几,一个奇怪的现象就是虽然loss在下降但是准确率也在下降,而且最后测试集准确率只在百分五十左右,困扰了我很久一直无法解决,想请教一下您对这个问题有什么看法吗?
@demons6665
首先我觉得GCN不太适用于情感分类,这在论文中MR数据集的结果体现了。这类文本通常比较短,且顺序很重要,GCN忽略了单词的顺序,且对于短文本,图比较稀疏。
train.py中是以验证集loss不下降作为early stop条件,您可以试试改成用验证准确率不上升,或者直接减少epochs个数。