翻訳メモリツールは分節と呼ばれる文書単位で作業を行ないます。文書を文節化する方法は複数あります。
OmegaT は最初に文書を構造レベルの分節化のためにパースします。この処理中はソースファイルの構造だけが分節の生成に使われます。 例えば、テキストファイルは改行や空行で分節化されるかもしれませんし、構造レベルでは全く分節化されないかもしれません。フォーマットのあるファイル(OpenOffice.org, OpenDocument, XHTML, HTML ドキュメント)はブロックレベル(段落)タグで分節化されます。
(XHTML または HTML ファイルの)翻訳可能なオブジェクト属性も別々の分節に展開されます。
OmegaT は文単位で分節化することもできます。文単位の分節化は構造レベルの分節化の後に行なわれます。両方の処理中に作成された分節は残念ながら翻訳中には変更(分割又は結合)できません。これは我々が認識している OmegaT の制限です。
もしこの分節化に満足できない場合、ソースファイルを外部的に修正するか、文単位の分節化規則を修正する必要があります。これを行なった場合、変更を適用するためにプロジェクトを再読み込みする必要があります。
OmegaTがソースファイルを論理単位(これはフォーマット化されたファイルでは通常段落です)に分節化した後、文単位の分節化機能をオフにしていなければ、これらのブロックをさらに文単位に分節化します。一般的に言って、 OmegaT は設定次第でソースファイルの論理ブロックをどのような形にでも分節化できます。しかし、デフォルトでは OmegaT は文単位で分節化するので、我々はこれを文単位の分節化と呼んでいます。
文単位の分節化は Segmentation Rules eXchange (SRX) 標準を考慮に入れて構築されていますが、この文書を記述している時点では、OmegaT はSRX の全ての機能に対応していませんし、SRX フォーマットでのルールのインポート・エクスポートにも対応していません。もし SRX がどのように働くかを知っているなら、すでに OmegaT がどのように働くかを知っていることになります。この二つはほぼ同じものだからです。
二種類の規則があります。
分割規則の例: "Did it make sense?I was not sure." これは "?
" の後ろで二つの文に分節化されます。"?
"のための分割規則があるべきです。
例外規則の例: "Who is afraid of Mrs. Woolf?"(バージニアウルフなんてこわくない)は ".
" の後ろで分節化されてはいけません。"Mrs.
" のための例外規則があるべきです。
定義済みの分割規則はほとんどのヨーロッパ言語と日本語に対しては十分なはずですが、全ての言語に対して全ての例外規則を事前に定義するのは明らかに不可能なので、翻訳しようとしている言語のために更なる例外規則を定義することを薦めます。
規則を設定するには、メインメニューから設定 -> 分節化...を選択します。プロジェクトを開いているときに分節化設定を変更した場合、変更を適用させるためにプロジェクトを再読み込みさせなければならないことに注意してください。
一致する言語パターンについての分節化規則は、与えられた優先順に適用されますので、特定の言語のための規則はデフォルトのものより高い優先順を与えるべきです。
例えば、カナダフランス語(FR-CA)用の規則は、フランス語(FR.*)用の規則よりも優先され、更にデフォルト値(.*)よりも優先されます。そして、カナダフランス語から翻訳している間、プロジェクトは、この言語として定義された規則、フランス語の規則、デフォルトの規則を正しい順序で使用します。
空の規則セットを作成するために、ダイアログの上半分にある追加をクリックします。表の末尾に空行が現れます。規則セットの名前と言語パターンを変更します。言語パターンの文法は正規表現の文法に従います。以下の正規表現構造の短い要約の章を参照してください。
作成する規則セットが言語-地域ペアを扱う場合、上へ ボタンを使って先頭に移動させることを薦めます。
規則セットを編集するために、表の規則セットをクリックすると、ウィンドウの下半分に規則セットが現れます。
「分割/例外」チェックボックスは分割規則(セットした場合)なのか例外規則(セットしなかった場合)なのかを指定します。「分節前の構図」と「分節後の構図」の二つの正規表現は、分割規則か例外規則が成立するためにある場所の前後がどうなっていなければならないかを指定します。
分節化の処理は以下のように単純化されます。文書の最初の文字の後ろから最後の文字の前まで移動するカーソルを想像してください。それぞれのカーソル位置において、それぞれの規則を与えられた順序で取り出し、 分節前の構図がカーソルの左側にある文書全体について、 分節後の構図がカーソルの右側にある文書について適用できるかどうかを試します。
文書中の各位置において、規則の適用に成功した場合、それが例外規則なら、何も行ないませんがそれ以上規則を試すのを中止し、分割規則なら、左側の文書を分割した分節とします。
.
')の後ろ、スペースの手前で分節を作る。\.
分節後の構図: \s
\.
"は文字".
"を意味します。 \s
"は任意の空白文字を意味します。Mr."の後ろで分節化しない。
Mr\.
分節後の構図: \s
分節化規則は正規表現で記述されています。これにより、規則の定義に最大限の柔軟性が与えられ、SRXにも従います。
これらは OmegaT の分節化規則に使われているだけではなく、とても一般的に使われている構造です。OmegaT はSRX 標準 で記述されている全ての正規表現機能に対応しています。
構造 | マッチ |
---|---|
フラグ | |
(?i) | マッチングの時に大文字小文字を区別しません (デフォルトでは、大文字小文字を区別します)。 |
文字 | |
x | 文字xそのものですが、以下のものは例外です... |
\uhhhh | 16 進数 0xhhhhの値を持つ文字 |
\t | タブ文字('\u0009') |
\n | 改行文字('\u000A') |
\r | 復帰文字('\u000D') |
クォート | |
\ | どの文字も表しませんが、次の文字をクォートします。これはメタキャラクタ!$()*+.<>?[\]^{|} を、その文字そのものとマッチングさせたいときに必要です。 |
\\ | 例えば、これはバックスラッシュ文字です。 |
\Q | どの文字も表しませんが、\Eまでの全ての文字をクォートします。 |
\E | どの文字も表しませんが、\Qから続くクォートを終了させます。 |
文字クラス | |
[abc] | a, b, cのいずれか (単純クラス) |
[^abc] | a, b, c以外の文字 (否定) |
[a-zA-Z] | a から z または A から Z (範囲) |
定義済みの文字クラス | |
. | (行末文字を除く)任意の文字 |
\d | 数値: [0-9] |
\D | 数字: [0-9] |
\s | 空白文字: [ \t\n\x0B\f\r] |
\S | 非空白文字: [^\s] |
\w | 単語文字: [a-zA-Z_0-9] |
\W | 非単語文字: [^\w] |
境界とマッチングするもの | |
^ | 行頭 |
$ | 行末 |
\b | 単語の区切り |
\B | 単語の区切りでないもの |
貪欲量指定子 | |
これらはできるだけたくさんの文字とマッチングします。例えば、a+ は aaabbb の中の aaa とマッチングします。 | |
X? | 0個か1個のX |
X* | 0個以上のX |
X+ | 1個以上のX |
無欲量指定子 | |
これらはできるだけ少しの文字とマッチングします。例えば、a+? はaaabbb の中の最初のa とマッチングします。 | |
X?? | 0個か1個のX |
X*? | 0個以上のX |
X+? | 1個以上のX |
論理演算子 | |
XY | Xに引き続いてY |
X|Y | XかYのどちらか |
(XY) | XYを一つのグループとする |