5

それぞれが異なるタイプの列で構成される科学文献から一連の表を抽出しました。ここに例があります値の表

各列の正規表現を自動的に生成できるようにしたいと考えています。明らかに、次のような簡単な解決策がある.*ため、それらが使用する制約のみを追加します。

  • [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 番目の正規表現が壊れますが、ソフトウェアはそれを認識しません。目的は、「座標」などの多くの正規表現を収集し、おそらく部分的に手動で一般化することです。列挙型は、少数の個別の文字列がある場合にのみ作成されます。

特にJavaでこれを行うことができる(特にF / OSS)ソフトウェアの例に感謝します。(Google の Refine に似ています)。私はこの質問を4年前に認識していますが、それは実際には質問と対話型のように見えるtext2reサイトには答えませんでした.

注: 「あまりにもローカライズされている」としてクローズする投票に注意してください。これは、問題に取り組むために Refine を開発している Google/Freebase によって示されているように、非常に一般的な問題です (表は一例にすぎません)。それは潜在的に非常に多様なテーブル (例えば、金融、ジャーナリズムなど) を参照します。浮動小数点値を持つものは次のとおりです。 ここに画像の説明を入力

一部の当局が年齢を実数 (たとえば、月や日ではない) で報告し、2 桁の精度を使用していることを自動的に判断すると便利です。

4

3 に答える 3