1

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

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

我意识到这个问题并不是特别雄辩地提出,所以我希望它有一些意义!

有任何想法吗?

(也不知道如何标记这个 - 所以欢迎帮助!)

4

3 回答 3

1

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

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

我的建议是:

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

结果为 4,如果余数为 0,则您有一个 TSV 文件的候选者。从那里你可能想要做以下事情:

  1. 您可以继续读取数据并忽略每行少于或多于预测标签的行的错误
  2. 您可以在阅读前扫描每一行以确保所有内容一致
  3. 您可以阅读不符合格式的行,然后抛出错误

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

于 2009-11-13T21:21:05.440 回答
1

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

于 2009-11-13T20:39:09.707 回答
1

混合解决方案可能是合适的,即您按照您的建议使用简单的启发式方法(以“类似开关”的方式处理)处理最常见/最明显的情况,并将更难的情况留给自动学习和其他类型的分类器逻辑。

于 2009-11-13T20:46:08.543 回答