段落下に訳文入力。原文を一括削除したい。

昨日のWildLight中級セミナーで、表題のような質問をいただきました。

原文の各段落の下に訳文を入力していくスタイルで翻訳をされていて、最後に原文を一気に消したいという要望です。

この解決策として提案したのは、翻訳を開始する前に、WildLightを使って以下の辞書を原稿に適用し、段落に区切りマーク(罫線のペア)を埋め込んでから、翻訳を行う方法です。

WLDIC_一発対訳_(1)原稿の文節末尾にマーカー追加.txt

この辞書を原稿に適用すると、以下のようになります。
そして罫線の間に訳文を入力していきます。

原文第1段落・・・・
└────
訳文を入れる
┌────
原文第2段落・・・・
└────
訳文を入れる
┌────

あとは、区切りマーク(罫線)を手掛かりに、原文を削除する辞書を作ればいいと説明しましたが、でも、そんなWildLight辞書を作るのはハードルが高過ぎますよね。

そこで早速作ってみました。以下のものがそうです。

WLDIC_一発対訳_(2)原文を削除する.txt

役立つようでしたら、ご利用ください。

 

 

全角スペースを半角に変換する

先日、某所でWildLight初級セミナーを行いました。そこで「全角スペースを半角へ変換する方法」の質問を受けましたので、WildLight辞書の記述方法を記しておきます。

' ワイルドカードモードにする
WILDCARD:ON
' 全角スペースに蛍光ペンを付ける(変換箇所が分かるように)
[ ]
Zen2Han,[ ]

辞書ファイル「WLDIC_変換_全角スペースを半角へ変換.txt」としてWildLight共有フォルダーに公開しておきましたので、ダウンロードしてご利用ください。

【ワイルドカード】数字列から任意の桁数を抜いて、別形式の番号体系に置換する。

決められた番号体系に基づいて付与された管理番号の一部を、他の番号体系へ転記して、新たな番号を作らなくてはならない・・・というようなことが、事務処理の中ではよく発生します。

例として、以下のようなものを想定してみましょう。

例)Aから始まる9桁の番号があり、うしろ8桁の数字部を抜き出し、抜き出した数字部の後にUS01を付与して、新しい番号を作成して置き換える。

A12345678  →  12345678US01

ワードの置換機能を使い、「ワイルドカードを使用する」をONにして、以下の記述を行います。

検索する文字列

<A([0-9]{8})

置換後の文字列

\1US01

検索する文字列は、Aから始まり、続いて8桁の数字を持ったものを検索するように記述してあり、その8桁の数字は()で閉じることで\1へ代入されます。置換後の文字列の\1にその8桁の数字が展開され、その後にUS01が付与されることになります。

数字の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文では表現しきれない処理も、辞書に記述を並べることで処理を可能にできるところが、大きな特長です。

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」として作成しておきました。ライブラリーからダウンロードしてご利用下さい。