正規表現を使用してあいまい一致を行う方法を探しています。私はPerlを使いたいのですが、誰かがこれを行う方法を推奨できるなら、それは役に立ちます.
例として、「New York」という単語の前に 2 桁の数字が続く文字列を一致させたいとします。テキストがPDFのOCRからのものであるため、難しさが生じます。そのため、あいまい一致を実行したいと考えています。一致させたい:
12 New York
24 Hew York
33 New Yobk
およびその他の「近い」一致 (レーベンシュタイン距離の意味で)。
aa New York
11 Detroit
明らかに、一致の許容距離 (「あいまいさ」) を指定する必要があります。
私が理解しているように、これを行うために Perl モジュールを使用することはできませんString::Approx
。なぜなら、一致に正規表現を含める必要があるためです (前の数字と一致させるため)。
また、これは私が実際に一致させようとしているものの非常に単純化された例であるため、力ずくのアプローチを探しているわけではないことに注意してください。
追加するために編集:
さて、私の最初の例は単純すぎました。人々が前の数字にこだわるつもりはありませんでした -- 悪い例で申し訳ありません。これがより良い例です。次の文字列を検討してください。
ASSIGNOR, BY MESHS ASSIGN1IBNTS, TO ALUSCHALME&S MANOTAC/rURINGCOMPANY, A COBPOBATlOH OF DELAY/ABE.
これが実際に言っていることは次のとおりです。
ASSIGNOR, BY MESNE ASSIGNMENTS, TO ALLIS-CHALMERS MANUFACTURING COMPANY, A CORPORATION OF DELAWARE
私がする必要があるのは、「ALUSCHALME&S MANOTAC/rURINGCOMPANY」と「DELAY/ABE」というフレーズを抽出することです。(これは狂気のように思えるかもしれませんが、私は楽観主義者です。) 一般に、パターンは次のようになります。
/Assignor(, by mesne assignments,)? to (company name), a corporation of (state)/i
マッチングが曖昧です。