翻訳横丁の裏路地

We can do anything we want to do if we stick to it long enough.


2件のコメント

MSワード正規表現 〜お題に沿って〜 その2

さて、「禿頭帽子屋の独語妄言 side A」の「# 翻訳者のための正規表現~勉強会の解説、その2」になぞって、お題その3をワードの正規表現を使って表現してみたいと思います。

お題その3

  • 和文中の余分なスペースを削除する
    例:国内の△農業△生産 → 国内の農業生産

【検索】

([一-鶴ァ-ヾぁ-んー。、・]) ([一-鶴ァ-ヾぁ-んー。、・])

【置換】

¥1¥2

【解説】

  • [一-鶴ァ-ヾぁ-んー。、・]………漢字全角カタカナひらがな、長音、句読点、中黒…の中の任意の文字
  • () ………括弧内の式の結果が、置換語の¥nへ代入されます。()の登場順番に従い ¥1, ¥2 … となります。

例えば、「あいうえお△かきくけこ」の場合は、「お△か」が対象としてヒットします。¥1には「お」が代入され、¥2には「か」が代入されます。置換句に「¥1¥2」と半角スペースなく記述しているので、置換結果は「おか」となります。

このようなワードの正規表現を使う上で、指定する文字範囲を知る必要がありますね。以下に参考として列記します。
(「」内が対象の文字範囲指定です)

  • ひらがな     ……     「ぁ-ん」
  • 半角カタカナ     ……     「ヲ-゚」
  • 半角数字     ……     「0-9」
  • 半角英字     ……     「a-zA-Z」
  • 全角カタカナ     ……     「ァ-ヾ」
  • 全角数字     ……     「0-9」
  • 全角英字     ……     「a-zA-Z」 
  • 漢字     ……     「一-鶴」
  • 全角ギリシャ文字     ……     「Α-Ωα-ω」
  • 全角ひらがな&カタカナ&漢字&記号) ……     「、-鶴」

スペースの処理は、私も結構使います。原稿処理や翻訳文チェック時に使用しています。英文のスペーシングが2スペース以上のもの(入力ミス等による)を1スペースに修正したり(「([a-zA-Z0-9,.])△{2,}([a-zA-Z0-9])」→「¥1△¥2」)、紛れ込んだ全角スペースを半角スペースへ置き換えたり(「□」→「△」)、でも、こういう置換作業をしていて心配なのは、思いもよらないところまで置換されてしまう事ですね。そういう時のために、置換作業をする際に、置換後の文字列が蛍光ペン表示されるようにすると良いです。また、自分が指定した検索文字列がどのようにヒットするのかを勉強する上でもビジュアル化するのに便利です。

置換後文字に蛍光ペンを付ける方法:「検索と置換」ウインドウで、「置換後の文字列」を入力する際に、「検索」のところの「書式」をクリックし、「蛍光ペン」を選択します。


コメントする

MSワード正規表現 〜お題に沿って〜 その1

4月23日に翻訳勉強会「十人十色」で、正規表現入門セミナーを行いました。その時の講師の一人 高橋さんが、受講者から寄せられたお題を例にして、秀丸エディタによる正規表現の実例と説明をブログ「禿頭帽子屋の独語妄言 side A」で連載されています。

私は、業務ではマイクロソフトワードを使ってそういった処理しているので、どうしてもワードの「ワイルドカード+正規表現」の組合せでの実現方法を考えてしまいます。Twitter で、高橋さんのお題説明に沿ってワードの正規表現説明をしてみようか?とツイートしたら、意外に反響がありましたので、高橋さんのご了解をいただいて「ワード正規表現」を当ブログで説明していきたいと思います。

最初に断っておきますが、私もワードの正規表現を使い始めて、まだ日が浅いです。「それ違うぞ」「こう表現した方がいい」というツッコミを是非お願い致します。

〜〜〜〜

ここでは、私の持つWindows Word 2007とMac Word 2011をベースに説明を進めます。他バージョンの方はごめんなさい。でも、やり方は同じ筈です。

ワード上でこれらの検索・置換を行う上でのお約束として、「ワイルドカードを使用する」をレ点してONにして下さい。

Windows Word 2007: CTRL+H で「検索と置換」ウインドウを出し、「オプション(M)」を押すと「検索オプション」が出ます。そこに「ワイルドカードを使用する」がありますので、レ点を入れてONにしておいて下さい。

Mac Word 2011: shift+command+H で「検索と置換」サイドウインドウを出し、ギアマークを押して「高度な検索と置換」を選択します。「▼」を押すと「検索オプション」が出ますので、そこにある「ワイルドカードを使用する」にレ点を入れてONにします。

〜〜〜〜

今回は、高橋さんのブログの「# 翻訳者のための正規表現~勉強会の解説、その1」のお題内容をワードの正規表現を使ってやってみます。

表記については、高橋さんのブログの記述に従います。

  • 「お題」と【解説】の中では半角スペースを△、全角スペースを□で表します。
  • 【検索】、【置換】の中では、半角スペースも全角スペースも実際の文字で表しています。
    したがって、【検索】【置換】の文字列は、そのままコピペすれば試すことができます。

お題その1

・Page△12 → 12ページ

【検索】

Page ([0-9]{1,})

【置換】

¥1ページ

【解説】

  • Page△  ………英語の”Page”と半角スペース
  • () ………括弧内の式の結果が、置換語の¥nへ代入されます。()の登場順番に従い ¥1, ¥2 … となります。
  • [0-9] ………半角数字
  • {1,} ………1回以上の連続出現
    {n} もしくは {n,m} と表現されます。{3} で3
    回連続、{1,} で1回以上連続、{1,5}で1回〜5回の連続…という意味になります。n,m には0(ゼロ)は設定できません。

この場合の「([0-9]{1,})」とは、検索対象は「半角数字が1回以上連続している箇所」で、それを¥1へ代入します。お題の例ですと「12」がこれに該当します。

秀丸エディタの正規表現で、 ¥f (区切り文字)で区切られた前後の式の結果が、それぞれ ¥0, ¥1 へ代入されると習いました。ワードでは半角括弧()内の式の結果が代入されます。()の登場する順番で ¥1, ¥2… と代入されます。秀丸エディタは¥0からでしたが、ワードは ¥1 から始まります。

お題その1の応用

・Page△12 → 12ページ
・Page24 → 24ページ

さて、これがワードでは問題なのです。私の知る限り、秀丸エディタの正規表現にある「?」(0か1回)に該当する表現がないのです(ちなみにワードでは「?」は任意の一文字という意味になります)。従って、上記のお題その1の置換を行い、かつ、以下の置換を行って初めて、この応用問題をクリアできます。
(もし、1文で表現できる方法をご存知の方は、教えて下さい)

 きました!きました!読者さんから、こうすれば一行で表現できる!という案が、それを以下に示します。

【検索】

Page([0-9]{1,})

Pag[e ]{1,2}([0-9]{1,})

【置換】

¥1ページ

【解説】

Pag[e△]{1,2} で、Page, Pag△, Page△, Pagee, Pag△e, Pag△△ が対象になります。ここで欲しいのは「Page」と「Page△」ですね。それ以外の「Pag△, Pagee, Pag△e, Pag△△」 が有り得るか?って事ですが、無いと考えていいでしょう。
正規表現は組合せ方を工夫する事で、色々な事ができますが、こういう発想はとても素敵ですよね。参りました(笑)
@trantran93 さん、ありがとうございました。

先のお題その1と違うのは、Pageの後ろにあった半角スペースをなくしただけです。半角スペースがあるのとないのと…という表現ができないので、2段階で置換する形になってしまいます。
例えば、Page△{0,}([0-9]{1,}) なんて記述ができれば良いのですが、上で説明した通り {0,} というゼロ指定が許されていません。(「検索した文字列」に指定したパターン マッチングが正しくありません…というエラーになる)

お題その2

・長いカタカナ語を最初の3文字にしたい
例:「クルーズ・コントロール」を「クルー」に

【検索】

([ァ-ヾ][ァ-ヾー・]{2})[ァ-ヾー・]{1,}

【置換】

¥1

【解説】

  • () ………括弧内の式の結果が、置換語の¥nへ代入されます。()の登場順番に従い ¥1, ¥2 … となります。
  • [ァ-ヾ] ………1文字目は全角カタカナ(UNICODE)のみ。
  • [ァ-ヾー・] ………2文字目以降は長音と中黒あり。
  • {2} ………直前の文字が2回繰り返される。
  • [ァ-ヾー・] ………長音と中黒を含む全角カタカナ
  • {1,} ………直前の文字が1回以上繰り返される。

([ァ-ヾ][ァ-ヾー・]{2})[ァ-ヾー・]{1,} :1文字目が全角カタカナで、2文字と3文字目が長音、中黒、全角カタカナのいずれか、4文字目以降が長音、中黒、全角カタカナのいずれかである文字列が検索され、最初の3文字の文字列が ¥1 へ代入される。

〜〜〜〜〜〜〜

上記のお題その1の応用のようなケースですと、2つの置換作業を行わないと対応できません。こういう作業を一括で行うにはマクロに盛り込んでしまうのが1つの手ですが、検索対象が変わるたびにマクロを書き換えるのも手間が掛かります。

そこで私が使っているのが拙作のGlossaryMatchなんです。上記のケースですと、以下のようなテキスト型の辞書ファイルを作り、全置換で適用すれば、一度に適用できます。

Page ([0-9]{1,})            <TAB>         ¥1
Page([0-9]{1,})             <TAB>         ¥1

検索対象が変われば記述を変えるだけで対応できます。ちょこちょこ検索対象を変えるなら、辞書ファイルをノートパッド等で開いたままにして、記述を変更→上書き保存→GlossaryMatchで実行…のサイクルを繰り返せば楽です。

以上、ご参考です。


GlossaryMatch 実用例その1

Word版GlossaryMatchをちょっとだけ修正して、Ver. 1.01 にしました。

修正内容は、辞書の置換元用語の先頭に半桁の「~」(チルダ)を入れておくと、蛍光ペン付けしないようにしました。

ここでは、この機能を使った使用例を示します。

原稿

 

このような部署名を企業の中で見掛けないでしょうか?
色々な文書に、作成者や改訂者情報、検討チームリストなど、部署名が良く書かれています。こういう部署名などは間違いをなくすために、置換作業で処理したいところです。しかし、困るのが、漢数字に全角半角数字の混在ですね。

これを解決する為に作った辞書ファイルのサンプルが次のものです。(漢数字へ対応するためのサンプルです)

辞書

 

GlossaryMatchでは、蛍光ペンのない文字列に対して、置換元用語の検索を行い、該当するものがあれば置換先用語に置換し、最後に蛍光ペンを付けます。
但し、置換元用語の先頭に、半角「~」(チルダ)が入っている場合は、置換後に蛍光ペンが付きません。例えば上の辞書の第一行目の記述に従うと、「一課」が「1課」と置換されますが、蛍光ペンは付かず、その後の処理でも、この「1課」は置換対象となります。

この辞書ですと、漢数字の一課~五課までを半角数字の1課~5課に置換するものの、蛍光ペンは付けない為、その後の行の処理では置換対象となります。つまり、六行目の「経理([0-9]{1,})課」以降の行で置換の対象となります。

モード選択

 

モードの選択で「2. 完全置換」を選択すると、以下のようなプログレスバーが現れ、置換が終了すると終了画面が出ます。

ProgressBar

 

完成

 

上記のサンプル辞書には、全角数字を半角にするための処理を入れていなかったため、経理1課~経理5課までが置換されずに残っていますが、漢数字だった部署名は全て置換されています。

このように、辞書ファイルに処理の順番で正規表現を記述しておく事で、色々な処理を行う事ができます。

なお、辞書の置換元用語にある「([0-9]{1,})」は、半角数字で1桁以上連続した数字を意味します。1課でも12課でも、123課でも対象となります。そして置換先用語にある「\1」は、置換元用語のカッコ内「()」で該当した数字が代入されます。
つまり、「経理900課」があると、900 が \1 の位置に代入され、Accounting Dept. 900 と置換されます。

 

 


【アップデート】 GlossaryMatch 用語置換ワードマクロ

今回、ワード版のGlossaryMatchの置換方法を変え、若干の機能追加をしましたので、公開します。

GlossaryMatch

今回の変更は以下の通りです。

  • ワイルドカードを使った置換が出来るように変更しました。
    辞書ファイルにワイルドカードによる記述を入れておくことで、色々な検索と置換が可能になりました。但し、細かな記述のチェックを行っていないので、記述内容によってはエラーを吐き出すかもしれません。
  • 「アドイン」メニューにGlossaryMatchのメニューを追加。
  • 大きな辞書や文書を処理する場合、反応なしとなって、ワードが死んだような状態になる(但し、処理はバックグラウンドで行われている)のを回避するため、プログレスバーを表示し、処理残時間を表示するように変更しました。
  • また、処理中に「中止」ボタンにて、中止できるようにしました。
  • モードを、1) 蛍光ペン付け、2) 完全置換、3) 併記置換、4) コメント挿入、の4モードに変更。
  1. 蛍光ペン付け
    辞書に登録された用語が本文に見つかれば、蛍光ペンを付けます。
    このモードは、チェック作業に使用する事を目的に作りました。チェック用の辞書を作っておくと便利です。この記事の後に、いくつか自分用に作ったテキスト辞書を紹介します。
  2. 完全置換
    辞書に登録された用語(置換元用語、置換する用語)に従って、完全に用語を置き換えます。置き換えた用語は蛍光ペン付けされます。
    置換する用語が登録されていない場合は、置換せず、蛍光ペン付けだけ行います。
    (蛍光ペンは、メニューの「蛍光ペンを解除する」を選択すると、解除できます。)
  3. 併記置換
    辞書に登録された用語(置換元用語、置換する用語)に従って、用語を置き換えます。その際、「置換元用語(置換する用語)」で置き換えられます。
    置換する用語が登録されていない場合は、置換せず、蛍光ペン付けだけ行います。
  4. コメント挿入
    辞書に登録された用語(置換元用語)が本文に見つかれば、コメント機能を使って「置換する用語+備考」でコメント付します。

訳文チェック用の辞書を幾つか紹介します。自分の為に作ったもののため、記述間違いなどあって正常に動作しない場合があるかもしれませんが、ご了承ください。あとは、ご自身で改造・追加して頂ければと思います。

  • GMDIC_CHK_数字チェック.txt
    [対象:和英訳、英和訳] 原稿と訳文の数値を蛍光ペン付けします。半角全角数字、月、漢数字、丸付数字などが対象です。詳細は辞書ファイルを見て下さい。
    私の使い方は、原稿と訳文に「蛍光ペン付け」機能を使ってこのチェック辞書を適用し、横に並べて比較してチェックするという流れです。機械的に照合チェックする手段を持たないので、苦肉の策です(笑)
  • GMDIC_CHK_間違い易い英単語.txt
    [対象:英文] ネイティブが間違いやすい英単語や、タイプミスしてスペルチェッカーで見つからない英単語を登録してチェックしています。単に蛍光ペンが付くだけですが、意識してチェックするようになるので検出力が上がります。
  • GMDIC_CHK_JTF日本語標準スタイルガイド.txt
    [対象:日本文] 言わずと知れたJTFの日本語標準スタイルガイドに沿ったチェックをする為のチェック辞書です。全てを網羅している訳ではありませんし、記述ミスもあるかもしれませんので「参考」として見て下さい。

これらの辞書は、いずれ少しづつ更新していこうと思います。また、みなさんもお作りになった辞書を公開してくれると嬉しいですね。

なお、ワードのワイルドカードの記述については、水野麻子さんの「Wordワイルドカード徹底活用ガイド」が役立ちます。(登録不要版がこちらにもあります)

以上、お役に立つようでしたら、ご利用下さい。


JATセミナー「マクロでWordをチューニング」聴講報告

昨日(2月9日)、日本翻訳者協会(JAT)主催の月例セミナー「マクロでWordをチューニング」を聴講してきました。

講師は Microsoft MVP for Word で、ブログ「みんなのワードマクロ」で有名な新田順也さんです。セミナー内容は以下のような内容でした。

  • Wordのおせっかい機能と賢くつきあう方法
  • ツールバーを自分好みにカスタマイズする
  • WordマクロでWordをチューニングする
  • フリーウェア(無料マクロ)でここまでできる!
  • キーボードからWordマクロを実行
  • Wordマクロの今後の展望

(新田さんのブログ「みんなのワードマクロ」から引用)

セミナーの中で紹介があったマクロ、書籍は以下の通りです。

このセミナーで私が一番印象に残ったのは、「オートコレクト機能を全部オフにする」という点です。セミナーで新田さんは、口頭で明確には言及されませんでしたが、過去の彼のセミナーを聴いた経験から判断して、新田さんが良く仰っている「ワードを自分のコントロール下に置く」という考えに基づくものであると思います。

この考え方は、ワードをツールとして使用する(使用せざるを得ない?)翻訳者にとって、とても重要な考え方だと思います。少なくとも、AutoFormat や AutoCorrect なる「おせっかい機能」が、自分の意志とは全く関係ないところで、自分が行った作業を書き換えている事に、危機感を感じない意識は即刻、正すべきだと思います。

道具(ツール)は、自分が意図した通りの結果を生み出してくれるものが良いツールであり、意図した通りの結果が生まれるようにツールを整備する事が、プロフェッショナルでしょう。Auto機能は機械が「良きに計らって」くれるから〜と鵜呑みにして、その機能の意味も理解しないまま初期設定で使用する事は、あってはならないと思います。「私は正しく入力した筈なのに…」という翻訳事故が発生するかもしれません。決して自動化してくれる機能を否定している訳ではなく、その機能を理解した上で、自分の意志でその機能をオンにしているという意識が大切だと思うのです。

これを機会にワードの AutoFormat, AutoCorrect の機能を見直してみてはどうでしょうか?