如何从各种来源检测表格数据

Asked
Viewd131

1

在一个正在进行的实验项目中,我希望能够查看文本数据并检测其是否包含表格格式的数据。当然,有很多情况看起来像表格数据,所以我想知道我需要研究哪种算法来寻找共同特征。

我的第一个想法是编写一个长的switch / case语句,该语句检查由制表符分隔的数据,然后检查由管道符号分隔的数据的另一种情况,然后再以其他方式分隔的数据等的另一种情况,等等。现在当然我意识到我必须要列出一系列要检测的不同事物,但是我想知道是否有比对每种类型进行相对缓慢的搜索更智能的方法来检测这些特征。

我意识到这个问题并不是特别雄辩,所以我希望它有意义。

有什么想法吗?

(也不知道如何标记该标签-欢迎提供帮助!)

  • 第一步是非常清楚准确地定义“表格数据”的含义。听起来好像您没有这样做。

    Matt BallNovember 13, 2009 20:40

3 个答案

1

唯一可靠的方案是使用机器学习。例如,您可以在一系列表格和非表格材料示例上训练感知器分类器。

  • [将要检查的]特征向量是什么?我不确定培训是否可以找到格式错误的行。

    monksyNovember 13, 2009 21:22
1

这假定您尚未在TSV中存储定义的类型。

TSV文件通常是 [Value1] \ t [Value..N] \ n

我的建议是:

  1. 计算所有选项卡
  2. 计算所有新行
  3. 计算第一行中的标签总数
  4. 将标签总数除以第一行中的标签

结果为4,如果得到的余数为0,那么您就有了TSV文件的候选项。从那里,您可能想要执行以下操作:

  1. 您可以继续读取数据,而忽略每行少于或多于预期标签的行错误
  2. 您可以在阅读前扫描每一行,以确保所有内容都是一致的
  3. 您可以阅读不适合该格式的行,然后引发错误

一旦您对制表符分隔的值的数量有了很好的预测,就可以使用正则表达式解析这些值(作为一组)。

1

一种混合解决方案可能是合适的,即您可以按照建议使用简单的试探法(以“类开关”的方式处理)来处理最常见/最明显的情况,而让困难重重案例,用于自动学习和其他类型的分类器逻辑。