masatoの日記

やっていきます

OmegaTの分節化規則: ピリオドの後で分節化するのを避けるには<正規表現の戻り読み>

OmegaTの分節化規則をもっと細かく調整してやりたい場合があります。 例えば、特定の文字列が先に来る場合は分節化したくない、など。 正規表現の先読み(lookahead)、戻り読み(lookback)を使えばそんな希望がかなえられます。

そういうことができるらしい、ということは前から知ってたんですが、ようやく実際に使えるようになりました。

やりたいこと

ピリオド(.)で分節化するけど、"Pos.“、"e.g."とかでは分節化しない。

分節化規則

「初期値」に設定してみました。選択されている項目のところで「否定の戻り読み」と呼ばれるやつを使ってます。

f:id:masatoz:20170616104854p:plain

「前方の正規表現」はこういうやつ。

(?<!Pos|approx|e\.g)[\.\?\!]+

「後方の正規表現」。

\s

感想

正規表現はわかると便利だけど、それまでが大変な場合が多いように感じます。 上のやりたいことで書いた分節化の仕様は、戻り読みとか先読みとか使わなくてもできた、とも記憶しています。 OmegaTのプレセット値にMr.とかe.g.とかの後に分節化しないというものがありました。

だけど、色々な条件を組み合わせているうちに、毎回わけがわからなくなってるので、正規表現で一発ばしっと決めてやるのもアリではないでしょうか。

参考

qiita.com

正規表現の「先読み」「戻り読み」についてかみ砕いて解説してくれてます。 「先」とか「後」とかのニュアンスと実際の動作がどうしても結びつかなくて、「???」になってましたが、これを読んでようやくイメージがつかめました。