创建一个简单但不平凡的数据集

数据挖掘 深度学习 nlp lstm
2022-03-06 05:00:07

我正在研究自动标点的问题:给定一个单词流,决定每个单词后面是否应该有标点符号(在未来的工作中我也想区分不同的标点符号,但目前这是一个二进制分类问题)。我的分类器使用双向 LSTM,其输出被馈送到多层感知器。当前分类器对整个数据集的准确率不够好。为了理解原因,我想创建一个“更简单”的数据集——一个即使是简单(但并非微不足道)分类器也会产生良好结果的数据集。然后,我会让数据集变得越来越难,看看分类器需要做哪些改进。什么是创建更容易(但并非微不足道)正确分类的合成数据集的好技术?

如果相关,以下是我系统的一些详细信息:

  • 每个单词由一个长度为 200 的嵌入向量表示。
  • 嵌入向量被输入到输出长度为 50 的双向 LSTM。
  • LSTM 输出被馈送到一个有两层的多层感知器,隐藏层的大小为 60。
  • 该数据集有大约 2000 个段落,每个段落包含大约 200 个单词。
  • 由于类不平衡(只有 20% 的单词被标点符号),我使用Cohen 的 kappa 系数检查系统准确性- 一个介于 -1 和 1 之间的数字。随机分类器的 kappa 约为 0。一个好的分类器的 kappa 高于 0.7。我目前的分类器的 kappa 大约为 0.4(10 倍交叉验证的平均值),也就是说,比随机的要好但不是很好。
  • 我在 80 次迭代中训练分类器。每次迭代后,我都会在验证集上检查模型的 kappa。最后我返回 kappa 最高的模型。
1个回答

您可以使用马尔可夫链来生成足够简单的数据集。您可以通过扫描大量文本(例如维基百科)来估计标点符号的概率,然后您可以使用该模型生成带有标点符号的虚构句子。您可以设置马尔可夫链的顺序,以使生成的数据集越来越接近真实世界的文本。但是,马尔可夫链应该在单词集上定义,因此您必须仔细选择词汇表。