我从科学文献中提取了一系列表格,这些表格由列组成,每个列都是不同的类型。这是一个例子
我希望能够为每一列自动生成正则表达式。显然有一些简单的解决方案,例如,.*
我将添加它们仅使用的约束:
[A-Z] [a-z] [0-9]
- 明确的标点符号(例如
','
,'''
) - “简单”量词(例如
{3,4}
上表的“最佳”答案是:
[A-Z]{3}
[A-Za-z\s\.]+
\d{4}\sm
\d{2}\u00b0\d{2}'\d{2}"N,\d{2}\u00b0\d{2}'\d{2}"E
(speciosissima|intermediate|troglodytes)
(hf|sr)
\d{4}
当然,如果我们移出地理区域,第 4 个正则表达式会中断,但软件不知道这一点。目的是收集许多正则表达式,比如“坐标”并概括它们,可能部分是手动的。只有当有少量不同的字符串时才会创建枚举。
我会很感激可以做到这一点的(尤其是 F/OSS)软件的例子,尤其是在 Java 中。(类似于 Google 的 Refine)。我在4 年前就知道这个问题,但这并没有真正回答这个问题,而且text2re网站似乎是交互式的。
注意:我注意到投票结束为“过于本地化”。这是一个非常普遍的问题(给出的表格只是一个例子),正如 Google/Freebase 开发 Refine 来解决这个问题所展示的那样。它可能指代非常广泛的表格(例如金融、新闻等)。这是一个浮点值:
自动确定某些当局以实数(例如,不是月、日)报告年龄并使用 2 位精度将是有用的。