« January 2017 | Main

February 2017

2017.02.15

計算して置換 和暦西暦の換算

日本語の文書を英語に翻訳するときに文中にある和暦を西暦に直さねばならないことがある。昭和20年8月15日を15 August, 1945(表記は英米でまた時代により多少違いはある)とするようなときである。

これを機械にやってもらうにはどうしたらよいか。検索と置換を使うのであるが、単に数字を転記し年月日の順番を入れ替えるだけでは年が合わなくなるので、年数の計算が必要になる。例えば昭和であれば、その年数に1925を加えて西暦とするという操作が要る。

置換のときに一緒に計算をすることができれば便利であるが、テキスト処理のエディターにはエクセルのような関数がない。さてどうするか。

仕事にはテキストエディターとして秀丸を使っているので、そのサポートフォーラムに相談をしてみた。残念ながら、replaceallの一回の置換での数値演算はできないという。

しかし検索された文字列を取得してから計算し、その計算結果を挿入するという方法を秀丸担当さんからお教えいただいた。そのマクロは以下の通りである。

setcompatiblemode 0x20000;
disabledraw;
gofiletop;
$s="昭和([0-9]{1,2})年";
while(1){
searchdown2 $s+"(?\\1)",regular;
if(result==false) break;
$found=gettext(foundtopx,foundtopy,foundendx,foundendy);
replaceup $s
,str(val($found)+1925)+"年"
,regular;
}

これを使うと昭和で記されている和暦が西暦になる。平成なら上記のスクリプトの1925の部分が1988となる。

なお和暦の表示が明治大正昭和平成ではなく、明大昭平であったりMTSHになっていることもあるので、実務で使うときには、上のスクリプトの検索条件を案件に合わせて変更したり、最初から何種類も用意しておく必要がある。1つ作ればすべてが賄えるわけではない。それは置換後の英文表記についても同様である。

年数の西暦換算だけなら以上であるが、年月日まで完全に置換で翻訳したければ、もう一度検索置換をする。上のマクロで昭和20年を1945年に直したうえで、1945年8月15日という文字列全体を対象に、従来通りの検索置換を行い15 August, 1945に直すのである。そのスクリプトは次の通り(これは1月用。2月から12月も同じように用意しておく。西暦1000年以降について対応)。

replaceall "(1|2)([0-9]{3})年1月([0-9]{1,2})日", " \\3 January, \\1\\2" , regular, nocasesense, inselect, nohilight;

処理の対象が年月だけの場合のスクリプトも加えておく。こちらについても12か月分必要になる。

replaceall "(1|2)([0-9]{3})年1月", " January, \\1\\2 " , regular, nocasesense, inselect, nohilight;

これで当初考えていた「置換の際に数値の計算をして、和暦西暦の換算のうえ、翻訳する」という作業をすべてパソコンに任せることができた。

以上、同じようなことをお考え方の参考になれば幸いです。またこれをお教えくださった秀丸エディタ&関連ソフトサポート会議室の秀丸担当さんに感謝します。

| | Comments (0) | TrackBack (1)

2017.02.13

部分と全体

翻訳をするときには余り小さく区切って全体を見失わないようにと注意される。段落全体で何が語られているかを理解し、前後の文章を把握し、その文脈の中で訳す必要がある。さてそれは部分とどのような関係になっているのか。全体観を得るにはどうしたらよいのか。

(1)考えてみると全体観はいきなり得られるものではない。まずは細かく区分されたもの(それは単語のことも熟語のこともある)がどのような意味なのかを正確に理解することから始まる。辞書を引くのはそのためである。場合によっては手書きの文字の解読から始まることもある。

(2)そのうえで、その区分されたものが他の小区分とどのような関係にあるのかを考える。例えばその単語なり文節が、他の単語や文節と対比したときに、並列なのか、順接なのか逆接なのか、装飾・被装飾の関係にあるのかを理解する必要がある。

他の単語との関連を検討したうえで、辞書にない表現を考える必要も出てくる。単語が熟語の中で使われると意味が変わる場合があるのも、このような関係性を勘案するからである。

(3)そのような部分の確認作業をした後に初めて、区分されたものが一つの文章の中でどのような位置付けになっているのか、前後の文章や段落との関係で辻褄が合っているのかを考えることになる。筆者の言いたいことが読み手の中である程度まとまった形で姿を現すようになるのは、このような手順を踏んでからのことである。

訳文を作っていく際に全体の中での均衡を吟味し当初の理解で良いのかを検討するのは、この段階の話である。その前の検討を飛ばしてはいけない。

(随分前のことになるが、欧米諸国が国際データ流通(Transborder Data Flows)を問題にしたことがあり、米国議会の立法の動き追ったことがあった。そのときに米国の文献にsun setという言葉が出てきて、20代半ばの自分はサンセット法と訳した。個別の単語に捉われて全体観を得ることがうまくできなかった例である。今なら時限法と訳すであろう。)

部分と全体は密接につながっている。どちらか一方では不十分。全体観を大切にという議論はもっともであるが、それは「各部分を丁寧に確認する」ことを前提にしての話である。部分を確認しつつ、次第に浮かび上がる全体像を見ては、部分に戻ってそれを修正する。その繰り返しにより全体の像が明瞭になってくる。全体観が単独にあるのではない。

それは訳文を作るときも、自分の文章を書くときも同じ。部分と全体の両者を往復しなければ首尾の整った文章は書けない。その往復により自分の思考が少しずつ明晰になってくるのである。

| | Comments (0) | TrackBack (0)

« January 2017 | Main