数字の3桁位取りを自動化する

先日行ったWildLight中級セミナーで、受講していただいた方から以下のようなお題をいただきました。もちろん、セミナーではこれを題材にワイルドカードとWildLight特殊コマンドの実習を行いました。うまく解決できたお題ですので、当ブログでシェアいたします。

4桁以上の数字を自動的にカンマで位取りしたい

まず考えたいのは、対象となる数字の桁数です。4桁以上は確かですが、最大何桁までを対象と考えるかです。

X,XXX 〜 XXX,XXX,XXX,XXX

まぁ「兆」くらいをカバーしておけば実用的でしょうか?(笑) すると対応しなくてはならない組合せは以下の3通りということになります。

XXX,XXX
XXX,XXX,XXX
XXX,XXX,XXX,XXX

ワイルドカードで実現する上で、数字の桁数によって処理を変えるというのは、記述が難しそうですので、まずは、末尾三桁(下の例だと012)とそれ以前(123456789)を分けてヒットさせる方法を考えました。

123456789012

[0-9]@[0-9]{3}>

このワイルドカードの記述により、末尾三桁を[0-9]{3}> でヒットさせ、それ以前を [0-9]@ でヒットさせられます。それぞれを置換時に利用するために ( ) で括り、そして、それらの間に位取りのカンマ「,」を挿入するために、置換語に「¥1,¥2」と記述すれば良いことになります。WildLight辞書へは以下のように記述します。(※(TAB)は実際にタブキーを押して入力してください)

WILDCARD:ON
([0-9]@)([0-9]{3})>(TAB)¥1,¥2

この辞書を実行すると、4桁以上の数字は、以下のようになるはずです。

123,456
123456,789
123456789,012

さて、さらに上位の桁の位取りはどうしたらいいでしょう?
そうです。このワイルドカードを繰り返して実行すればいいのです。

ただし、ここで注意しなければならないのは、WildLightに以下の基本機能があることです。

  1. 検索した結果には、必ず蛍光ペンが付く。
  2. 蛍光ペンのない箇所が検索対象となる。

上記のワイルドカードを実行したことにより、数字にはすべて蛍光ペンがついている状態になっています。つまり、そのまま続けて実行したのでは、それらの数字は検索対象から除外されてしまい、位取りがされません。そこで利用するのが、検索時の蛍光ペンの有無を無視するコマンド「IgnoreH」です。

IgnoreH:ON で、検索時に蛍光ペンの有無を無視します(すべてを検索対象として検索する)。ちなみに IgnoreH:OFF でデフォルト値に戻り、基本機能通り、蛍光ペン箇所は検索対象から除外されます。では、これを使って辞書を記述してみると以下の通りになります。

WILDCARD:ON
([0-9]@)([0-9]{3})>(TAB)¥1,¥2
IgnoreH:ON
([0-9]@)([0-9]{3})>(TAB)¥1,¥2
([0-9]@)([0-9]{3})>(TAB)¥1,¥2

これで、兆までの数字に対して3桁位取りが自動で行われ、蛍光ペンがつきます。

この辞書は、ライブラリーに「WLDIC_変換_4桁以上の数値をカンマで自動的に位取り.txt」という名前で登録してありますので、ダウンロードしてご利用ください。

WildLightは、ワイルドカードの1文では表現しきれない処理も、辞書に記述を並べることで処理を可能にできるところが、大きな特長です。

助詞の反復箇所を検出する

なんとなくFBへ書き込んだ誤変換ネタに、「助詞の反復箇所をWildLightで検出できますよね」という趣旨のレスをいただきました。

なるほど!というわけで、「WLDIC_JCHK_日本語チェック.txt」に追加しておきました。

([がのをにへとでやもては])\1

もっと荒っぽく、同じひらがなが2文字連続したものへ蛍光ペン付けするには、以下の記述です。

([ぁ-ん])\1

和訳品のチェックに使っているWildLight辞書へ、追加しておくと良いですね。

WildLight中級セミナー 1/31

[Blog更新] WildLight中級セミナー(1月31日)

初の中級セミナー。ワイルドカードとWildLight特殊コマンドで、いろいろな翻訳周辺作業を簡素化しましょう。

この度、東京ほんま会主催による「WildLight中級セミナー」を、1月31日(日)に開催します。

今まで、初級セミナーは何度となく開催してきましたが、中級は初めてとなります。さて、一体、何が「中級」なのか?(笑)

具体的には、WildLightを活用するための辞書作成を、ワークショップを通じて学ぶスタイルになります。そう、自分で辞書を書きます。やはり、自分で書かないと自分のものになりませんものね!

セミナー最初は初級セミナーのおさらいをします。基本的な動作とメニューにある機能を、デモをご覧に入れながら説明いたします。その後に、参加者の皆さんに答えいただいたアンケート結果を課題として、それらを解決するためのWildLight辞書作りを行っていきます。もちろん、ワイルドカードの学習とWildLight特殊コマンドの学習をあわせて行っていきます。

途中、既存の辞書の中身をみんなで読み解いて、何をしているのかを理解するセッションも設けるつもりです。辞書はあるけど、何やってるの?・・・って知らない人が多いので、その考え方を学ぶことで、自分専用の辞書へ作りかえる力を身につけます。

中級セミナーは、今後の開催は未定ですので、WildLightを使いこなしたいと考えておられる方は、この機会に参加されることをお勧めいたします。

詳細は、以下のリンクをご覧ください。

東京ほんま会「WildLight中級セミナー」

 

ウエブにある用語集をWildLight辞書に変換してみる

インターネット上には専門分野に特化した用語集が多く公開されており、翻訳作業の中でその業界や分野で使用される用語を理解するために、良く利用されていると思います。ただ、インターネット上にあることで検索性が乏しく、PC内にある辞書と同じように簡単に検索出来たらと考えるのは、翻訳を仕事にしている人間なら当然のことでしょう。

私が良くやるのは、それらのウエブ用語集を変換してWildLight用辞書にしてしまうという方法です。一度変換しておけば、他への流用もできますからとても有益な作業なのですが、ただ、それを簡単に実現する方法がありませんよね?
私もいろいろな方法を使っていますが、1つの方法としてWildLightを使う方法です。

今回は、その方法の一例をご紹介します。

今回、題材にあげるのは統計用語集(http://software.ssri.co.jp/statweb2/gloss/glossary.html) です。この用語集を例にした理由は、通常、公開されている用語集には表形式が多く、それらはどちらかといえば変換が容易な形式ですが、この統計用語集は日本語と英語が複数行に跨いでおり、変換が難しいと思われたからです。

こういったウエブ用語集は、その作り方により、変換が可能なものとそうでないものに分かれますが、表示される画面のソースを見て判断することになります。今回は、以下のようなアプローチで変換を試みます。

  1. ソースファイルを読み解く。
  2. 変換するための作戦を決める。
  3. ワイルドカードとWildLight特殊コマンドを記述する。

1.ソースファイルを読み解く

統計用語集の「ア行」を表示し、ブラウザ上で右クリックしてソースを表示します。すると、こんな記述がみられます。

ア行

この場合、用語集として必要になるのは日本語と英語のペアですが、ソースファイルを上から下まで眺めていくと、どうも、この用語ペアは以下のような記述になっているようです。

<h3 id=”a022″>アドホック調査<br>ad hoc survey</h3>

2.変換するための作戦を決める

ソースを良く見て、すべてが以下のような構成になっているかを確認します。「<h3 id=”????”>」や「<br>」「</h3>」が他に使用されていないかもあわせて確認します。

<h3 id=”????”>検索語<br>置換語</h3>

他の読み行のソースも含めて確認し、すべてこの構成で成り立っていて、かつ、他に使用されていないことが確認できました。では、以下の作戦でやってみましょう。

  • 「<h3 」で始まるタグを用語ペアの先頭(3の後ろには半角スペースがあります)
  • 「<br>」をセパレータ
  • 「</h3>」を用語ペアの終端

これらの条件で用語ペアの検索を掛けて、対象に蛍光ペン付けし、WildLightの特殊コマンド ExtractH2Word で蛍光ペン部をワードへ抜き出します。

1回の作業で用語集ができそうな感じに見えますが、実は、<br>をタブに変換した後に特殊コマンド(ExtractH2Word)でワードへ抽出した場合、タブが消えてしまうという制限があるため、2段階で作業をする必要があります。つまり、まず、1)用語ペアを抜き、それから2)セパレータをタブへ置換する、という流れになります。

3.ワイルドカードとWildLight特殊コマンドを記述する

用語ペアの抜き出しの記述を考える前に、用語ペアを抜いた後の処理を少し意識しておきたいと思います。それは、今後もいろいろな形式の用語集を変換することになると想像され、二度目の処理としてセパレータの置換が必ず発生するわけですから、できれば毎回同じWildLight辞書で処理できるように、最初の処理である「用語ペア抜き」の結果が、いつも同じスタイルになるようにルールを決めておきたいと思います。

そのルールとは、用語ペアは「●」で囲み、セパレータは「■」とするスタイルです。

では、今回のケースでも、抜き出し結果がこのスタイルになるように用語ペアを抜いてみます。

  • 「<h3 」で始まるタグを「●」に変換
  • 「<br>」を「■」に変換
  • 「</h3>」を「●」に変換

次に、作業の流れを作ります。

  1. 蛍光ペンを付けずに、「<h3 」で始まるタグを「●」に変換
  2. 蛍光ペンを付けずに、「<br>」を「■」に変換
  3. 蛍光ペンを付けずに、「</h3>」を「●」に変換
  4. 「●」と「●」に挟まれた文字列へ蛍光ペンを付ける。
  5. 蛍光ペン部を新文書へ抽出する。

この流れにより、「●検索語■置換語●」というスタイルで用語ペアが抽出されることになります。では、具体的にワイルドカードと特殊コマンドで記述してみます。

  1. WILDCARD:ON
    まず、ワイルドカードが利用できるようにONにします。
  2. ~\<h3 *\>(tab)
    置換後の文字に蛍光ペンを付けないため、先頭に「~」を付与し、検索語「\<h3 *\>」を記述します。(「<」や「>」などのワイルドカード文字を検索語とするときは、その前に「\」を付けなくてはなりません。)
    そしてセパレータのタブを入れ、置換語の「●」を記述します。
  3. ~\<br\>(tab)
    同様に蛍光ペンなしの「~」を先頭に入れて、検索語「\<br\>」を記述し、セパレータのタブを入れて、置換語の「■」を記述します。
  4. ~\<\/h3\>(tab)
    同様に蛍光ペンなしの「~」を先頭に入れて、検索語「\<\/h3\>」を記述し、セパレータのタブを入れて、置換語の「●」を記述します。
  5. ●*●
    ●で挟まれた文字列をすべて蛍光ペン付けします。
  6. ExtractH2Word
    蛍光ペンがついた文字列をワードへ新規文書として抽出します。

これらを記述した辞書を作成し、統計用語集のア行のソースに適用してみます。
(「WLDIC_Sample_抽出_統計用語集.txt」としてWildLight Dic Library に登録しておきましたので、ご覧ください)

抽出用語ペア

上手く用語ペアが抽出できたようです。あとは、最後の料理として、「●」を消し、「■」をタブに置き換えます。そのための記述は以下のようになります。

  1. WILDCARD:ON
    ワイルドカードが利用できるようにONにします。
  2. ~●(*)●(tab)\1
    置換結果に蛍光ペンが付かないよう先頭に「~」を付与し、「●」で挟まれた文字列を検索して、「●」を除いた文字列へ置き換えます。
  3. ~■(tab)^t
    置換結果に蛍光ペンが付かないよう先頭に「~」を付与して「■」を検索し、タブ(^t)へ置換します。

これらを記述した辞書ファイルを「WLDIC_変換_●■●記述を辞書へ変換する.txt」として登録してありますので、ご利用ください。(今後、「●検索語■置換語●」スタイルで用語ペアを抽出すれば、この辞書を流用できます)

この辞書を、上記の抽出結果に適用すると、以下のようになります。

変換後

この作業を各「読み行」で実施し、変換された用語ペアを合体すれば、WildLight辞書の出来上がりです。

こんなやり方で、ウエブに公開されているいろいろな用語集を変換してみると良いと思います。

「FIGURE 1A」を「図 1A」に変換したい

今日、以下のような変換をしたいという問合せをもらいました。

英語から和訳を行う際、英語の「FIGURE 1A」とか「FIGURE 10B」を、それぞれ「図 1A」、「図 10B」に変換したいとの事でした。

これをWildLightで変換する場合、ワイルドカードと特殊コマンド Han2Zen を使えば変換できます。

WILDCARD:ON
FIGURE ([0-9A-Z]{1,})                 図 ¥1
Han2Zen,[0-9A-Z]

この3行を記述した辞書ファイルを準備すれば良いです。(2行目の検索語と置換語の間は TABです)

1行目の「WILDCARD:ON」でワイルドカードモードをONにします。

2行目は、検索語に「FIGURE ([0-9A-Z]{1,})」、置換語に「図 ¥1」を指定して置換します。「([0-9A-Z]{1,})」にヒットする図番号が、置換語の「¥1」に代入されて置換されます。

3行目の「Han2Zen,[0-9A-Z]」で半角数字と英大文字を全角文字へ変換します。

お試しください。

SFAオープンスクールの質問から

昨日、2月28日(土)はサン・フレアアカデミーのオープンスクールでした。

クラスの中でWildLightの使い方に関する質問がありました。これは他の皆さんも利用できる情報ですので、ここにシェアしておきます。

1. 蛍光ペンのついた文字列をワードやエクセルへ抜き出せるか?

WildLight特殊コマンドの「ExtractH2Word」もしくは「ExtractH2Excel」を使います。

例)
ExtractH2Excel

いずれかのコマンドを1行記述した辞書ファイルを準備し、蛍光ペンされたテキストを抜き出したいワード文書へ適用すれば、抜き出せます。

この例を記述した辞書を「WLDIC_抽出_蛍光ペン部をExcelへ抜く.txt」として作成しておきました。ライブラリーからダウンロードしてご利用下さい。

2. PDFファイルからワードにしたものを整形するには、どうしたらいいか?

 この質問については明確な回答ができませんでした。PDFからワードファイルを起こした場合、使用したアプリケーションや原稿PDFの中身によって、出る症状が違うからです。

  • 私の経験した症状として、以下のようなものがあります。
    1. 全角文字間に全半角スペースが紛れ込んでいる。
    2. 全半角数字の後ろに複数の半角スペースが入っている。
    3. 半角英数字間のスペースに全角スペースが入っている。
    4. 文頭に不要なスペースが入っている。

これらへの対処として、以下のような処理を行っています。

' 全角英文字カタカナ漢字の間に挟まった全半角スペースを除去する
 
 ([a-zA-Zァ-ヾ一-鶴ぁ-ゞ])[  ]{1,}([a-zA-Zァ-ヾ一-鶴ぁ-ゞ])     \1\2
' 全半角数字の後のスペースを半角スペース1つにする

 ([0-90-9])[  ]{2,}     \1
' 半角英数字間のスペースを半角スペース1つにする

 ([\!-~])[  ]{1,}([\!-~])     \1 \2
' 文頭の不要なスペースを削除する

 ^13[  ]{1,}     ^p

上記4例とも、[ ]の中は全角スペース1つと半角スペース1つが入っています。
また、セパレーターはTABです。
これらが記述された辞書は、「WLDIC_編集_日本語:PDF抽出文書の成形.txt」として提供しています。

3. エクセルやパワーポイントファイルからテキスト抽出するには、どうしたらいいか?

Microsoft Office Personal以外(Excel, PowerPointが入っているもの)をお使いの方は、WildLight Users Group でのみ配布されている Full バージョンを使えば、エクセルやパワーポイントからテキスト抽出する機能を利用できます。

4. 全角文字の間にまぎれた半角スペースを除去する方法は?

全角文字の間に半角スペースが入っているケースは、PDFファイルからワードへ変換した時に良く見かけるので、質問2への対処の1つとしても有効だと思います。

全角文字をワイルドカードで表現すると以下のようになります。

 、-鶴

そして、全角文字に挟まれる半角スペースを検出して削除するには、辞書に次のように記述します。

 ([、-鶴])[ ]([、-鶴])                  \1\2

[ ]の間には半角スペースを入れます。
([、-鶴]) ([、-鶴])と\1\2の間はセパレーターのTABです。

この辞書を「WLDIC_変換_全角文字間の半角スペースを除去.txt」として作成しておきました。ライブラリーからダウンロードしてご利用下さい。

【ワイルドカード】同じ単語の連続を検出する

中級セミナーで受講者の方から出た質問です。

間違って同じ単語が連続して入力されたものを検出するには、辞書にどういう記述をすればいいですか?

これを実現するには、以下のようなワイルドカードを記述します。

(<[a-zA-Z]{1,}>)[ .]\1

ワードの検索機能で、ワイルドカードをオンにして実行すれば、検出できます。

また、WildLight辞書へは、このまま記述すればOKです。

英数字の全角・半角チェック

翻訳チェックの中で、スタイルガイドの指定に従って英数字の全角・半角チェックを行う事があります。また、翻訳文中で同じ文字種において全角と半角の不統一は好ましくありません。ここでは、英数字の半角・全角チェックをWildLightで行うための辞書の記述方法を説明します。

全角数字のチェック: [0-9]
全角英字のチェック: [a-zA-Z]
半角数字のチェック: [0-9]
半角英字のチェック: [a-zA-Z]

これらの文字列を、行いたいチェックに合わせて組合せ、WildLight用の辞書に記述すれば良いわけです。

例えば、半角英数字を検出して蛍光ペンをつける場合は、以下のように辞書に記述します。

[0-9]
[a-zA-Z]

これだけです。これだけを記述したテキストファイルを準備して WildLight に読み込ませると半角英数字に蛍光ペンが付きます。

ワイルドカードに詳しい方は、 [0-9a-zA-Z] と一文に書き直して頂いても構いません。

WildLightの良いところは、辞書に記述されたワイルドカードを順次に処理してくれるところです。ワードの検索や置換機能を使って一発で処理しようと、ワイルドカードの記述に頭を悩ますくらいなら、やりたい事を分割してワイルドカードで表現し、WildLightの辞書にして実行すれば、簡単に処理ができます。