注目

最新バージョン情報

  • WildLight : 2.58
  • ACE : 0.04
  • MildLite : 0.04β
  • WebDicSearcher:0.08

ダウンロードは、WildLight共有フォルダーからどうぞ。
https://app.box.com/v/WildLight

広告

【ワイルドカード】{1,}と@の違い

以前からワイルドカードの記述で {1,} と @ に違いを認識しながら、明確にその差を理解していませんでした。ちょうどSNSで話題になったため、調べてみましたので、その結果を以下にまとめておきます。

{1,} でダメで @ ならうまく行くケース

例えば、英単語のing形を検索してヒットさせるワイルドカードを考えるとき、以下のような記述を思い付くと思います。

[A-Za-z]{1,}ing

しかし、これではまったくヒットしません。WildLight辞書ライブラリーにある「WLDIC_ECHK_簡易技術英文チェック.txt」で、これを検索するワイルドカードの記述がありますが、以下のように記述します。

[A-Za-z]@ing

そもそも、{,}と@の意味は、ワードの以下の説明から理解しています。

スクリーンショット 2019-05-04 10.50.12

差が良く分からないですよね。{1,} と @ が同じ動きをするという解釈自体が間違っているのかもしれません。

{1,} と @ による検索の動きがどう違うのかを実際にMicrosoft Wordで見てみました。
以下の英文をサンプルにして、{1,} と @ で検索の違いを見てみます。

スクリーンショット 2019-05-04 10.12.111

ヒット数の違いに着目してみます。

{1,} 

Inkedスクリーンショット 2019-05-04 10.13.34_LI

27件がヒットしています。

@

Inkedスクリーンショット 2019-05-04 10.14.04_LI

155件がヒットしています。

実は、27件というのは単語数と同じ、155件は文字数と同じです(カンマ、コンマを含まず)。

スクリーンショット 2019-05-04 10.11.35

どうも @ は1文字ずつヒットするようです。実際にどのような検索範囲になるのかを見てみると、以下のようになります。

{1,} 

スクリーンショット 2019-05-04 10.15.11

@

スクリーンショット 2019-05-04 10.14.36

やはり、前者は単語単位、後者は文字単位でヒットしていることが分かります。

さて、元に戻って、 {1,} ではダメで @ ならうまく行く理由を知りたいのですが、例として上記サンプル英文の「example」を利用して検索してみます。

[A-Za-z]{1,}ple

もちろん、これでは、まったくヒットしません。これを以下のように変えてみたらヒットしました。

[A-Za-z]{1,4}ple

これを「[A-Za-z]{1,3}ple」にすれば「xample」、「[A-Za-z]{1,2}ple」にすれば「ample」、「[A-Za-z]{1}ple」にすれば「mple」がヒットしますが、次の記述だとヒットしなくなります。

[A-Za-z]{1,5}ple

{1,5}の5を4より大きな数字にすると、まったくヒットしなくなります。これは{n, m}のmの数字に影響を受けていることになります。pleの前にm個分の文字が存在しないとヒットしないということのようで、{1,}では無限大の文字数ということになり、何もヒットしないのでしょう。

ところが ple を半角スペースにすると、「[A-Za-z]{1,} 」でも文字数に関係なくヒットするのです。もしかすると{1,}の後の文字数の問題かと「[A-Za-z]{1,}e」を試しましたが、まったくヒットしません。

ん~、良く分かりません。
誰か、この辺りを説明できる方、教えてくださいm(_ _)m

==== < 2019/05/04 17時追記> ====
早速、SNSで反応をいただきました。

{1,}は、先行するパターンがマッチする範囲で一番長い部分で一致し (最長一致)、@は、全体のパターンがマッチする一番短い部分で一致 します(最短一致)

ということで、検索挙動の違いは、この説明通りですね。

また、「[A-Za-z]{1,}ple」の場合、「example」まで最長で一致し、その後に「ple」を探すため、マッチしないという現象になるようです。

情報をくださった方、ありがとうございました。

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

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

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

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

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

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

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

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

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

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

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

 

 

[AHK] ホットキー設定ヘルパー

西の方でAutoHotKeyのセミナーがあったようなので、ひとつ話題を投入しておく。

AutoHotKeyのスクリプトを書く際、キーコードで悩むことがありますが、それを簡単に出力してくれるスクリプトが無料で公開されているのをご存じでしょうか?

翻訳者には有名だと思いますが、内山卓則さんが開発されたAHK版「かんざし」に「ホットキー設定ヘルパー.ahk」というスクリプトが同梱されています。これが非常に便利で、スクリプトに記述するキーコードを、該当するキーを押すだけで出力してくれます。

このスクリプトを実行すると、以下のようなダイアログボックスが現れます。

スクリーンショット 2019-04-09 21.39.16

ここで、コードを知りたいキーの組合わせを押すと、「スクリプトに記述するコード」にコードが出力されるようになっています。出力されたコードをコピーして、スクリプトにペーストするだけという手軽さ。

スクリーンショット 2019-04-09 21.48.23

例えば、Ctrl + Alt + W のキーコードを知りたい場合は、その通りにキー操作すれば、こんな感じでコードが出力されます。出力された「^!w」をスクリプトに記述すれば良いことになりますね。

 

私は以前からこのスクリプトにお世話になっています。AutoHotKey でスクリプトを書く方は利用してみては如何でしょうか?

億万単位を自動で英語置換

某所でWildLightセミナーを開催したのですが、こんな課題をいただきました。

  1. 〇〇〇億〇〇百万円 ⇒ 〇〇,〇〇〇 million yen
    ex. 158億32百万円 ⇒ 15,832 million yen
  2. 〇〇億〇〇百万円 ⇒ 〇,〇〇〇 million yen
    ex. 11億70百万円 ⇒ 1,170 million yen
  3. 〇億〇〇百万円 ⇒ 〇〇〇 million yen
    ex. 6億47百万円 ⇒ 647 million yen
  4. 〇〇百万 ⇒ 〇〇 million yen
    ex. 6百万円 ⇒ 6 million yen
  5. 〇〇〇億〇百万円 ⇒ 〇〇,〇0〇million yen
    ex. 530億2百万円 ⇒ 53,002 million yen
  6. 〇〇億〇百万円 ⇒ 〇,〇0〇 million yen
    ex. 10億9百万円 ⇒ 1,009 million yen
  7.  〇,〇〇〇,〇〇〇千円 ⇒ 〇,〇〇〇 million yen
    ex. 9,144,781 ⇒ 9,144 million yen (下3桁を削除)

これを実現するためのWildLight辞書を作ってみました。
DEMO_変換_和数字を英語へ.txt」として公開しておきました。

辞書の中身は、以下のような記述になっています。

WILDCARD:ON
Zen2Han,[0-9]
([0-9]{1,2})([0-9])億([0-9]{2})百万 \1,\2\3 million 
([0-9])([0-9])億([0-9]{2})百万 \1,\2\3 million 
([0-9])億([0-9]{2})百万 \1\2 million 
([0-9]{1,2})([0-9])億([0-9])百万 \1,\20\3 million 
([0-9])([0-9])億([0-9])百万 \1,\20\3 million 
([0-9])億([0-9])百万 \10\2 million 
([0-9])億 \100 million 
([0-9]{1,3},[0-9]{3}),[0-9]{3}千 \1 million 
([0-9]{1,3}),[0-9]{3}千 \1 million 
([0-9,]{1,11})百万 \1 million 
百万 million 
円 yen

1行目:ワイルドカードモードに切り替えます。
2行目:全角の数字を Zen2Han コマンドで半角に変換します。
3~5行目:「〇〇〇億〇〇百万」を置換します。
6~8行目:「〇〇〇億〇百万」を置換します。
9行目:「〇億」を置換します。
10行目:「〇〇〇,〇〇〇,〇〇〇千」を置換します。
11行目:「〇〇〇,〇〇〇千」を置換します。
12行目:「〇〇〇,〇〇〇,〇〇〇百万」を置換します。
13行目:「百万」を置換します。
14行目:「円」を置換します。

お役に立つようでしたら、お使いくださいませ。

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

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

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

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

対訳表作成時間

WildLightを使って翻訳チェックする上で、欠かせないのが対訳表作成。

対訳表によるチェックは、問題検出効果が大きいという話を、いままであちこちの講演でしてきました。ところが、対訳表作成に時間が掛かることから、なかなか踏み込めない方が多いようです。

対訳表作成に、どれくらいの時間を見積もっておけばいいのでしょうか?

“対訳表作成時間”の続きを読む

AutoHotKeyでEBWin4検索 パート3

帽子屋さんこと高橋聡さんがブログで「# 複数単語(連語)の検索方法 – EBWin4」という記事を公開されました。この記事の中で、熟語検索をするなら単語間スペースなしの条件検索が良いと書かれています。

ということで以前公開した AutoHotKey スクリプトを、これに対応するように作り変えてみました。

以前紹介したスクリプトは、単語の検索と連語の検索でEBWin4の検索モードを切り替えるように作ってありました。その「連語の検索」で条件検索が行われるように変更しました。具体的には、EBWin4を呼び出すときのスイッチをkに変えたことと、検索文字列の中の半角スペースをすべて削除するようにスクリプト追加しました。1単語だけ指定のときは前方検索連続した2単語以上を指定したときは条件検索になります。

; ━━━━━━━━━━━━━━━━━━━━━━━━━━━
; ● Control + Shift + E でEBWin4検索
; EBWin4 Ver. 4.4.4 以降で動作します
; http://ebstudio.info/manual/EBWin4/EBWin4.html
; ――――――――――――――――――――――――――――――――――
^+e::
 Backup := ClipboardAll
 clipboard = Send ^c
 ClipWait, 1
 keyword = %clipboard%
 Clipboard := Backup
 Backup =
 keyword := trim(keyword)
 if strlen(keyword) = 0
    {
    msgbox, 検索する文字列を範囲指定してから実行してください。
    return
    }
; EBWin4 のコマンド引数; /M= p[refix]|s[suffix]|e[xact]|c[rossword]|k[eyword]|f[ull text]|a[uto]
; p:前方一致, s:後方一致, e:完全一致, c:クロス条件検索, k:条件検索, f:全文検索, a:自動検索
 if Instr(keyword, " ")
    {
    StringReplace, keyword, keyword, %A_Space%, , All
    RUN C:\Program Files (x86)\EBWin4\EBWin4.exe /M=k /S="%keyword%"
    } else {
    RUN C:\Program Files (x86)\EBWin4\EBWin4.exe /M=p /S="%keyword%"
    }
return

 

WildLight

前回の記事を書いたとき、単語を選択した場合と連語を選択した場合で、辞書引きのモードを切り替えられたらいいなぁと思い、EBWin4のマニュアルで調べたのですが、コマンド引数で検索モードを切り替えることができないことが分かりました。

そこで、EBwinのサポート掲示板に「お願い」書き込んだところ、作者のhishidaさんが、もの凄い速さで対応してくださり、Ver. 4.4.4 として公開されました。hishidaさんにはこの場を借りて、厚くお礼申し上げます。(EBWin4: http://ebstudio.info/manual/EBWin4/EBWin4.html )

検索モードをコマンド引数で切り替えられるようになりましたので、さっそく、先のスクリプトを修正いたしました。このスクリプトでは英語(1バイト言語)において、単語の検索と連語の検索で検索モードを切り替えています。私は1単語だけ指定のときは前方検索連続した2単語以上を指定したときは全文検索する場合が多いので、そういう設定で作ってあります。

; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
; ● Control + Shift + E でEBWin4検索
; EBWin4 Ver. 4.4.4 以降で動作します
; http://ebstudio.info/manual/EBWin4/EBWin4.html
; ――――――――――――――――――――――――――――――――――
^+e::
    Backup := ClipboardAll
    clipboard =
    Send ^c
    ClipWait, 1
    keyword = %clipboard%
    Clipboard := Backup
    Backup =
    keyword := trim(keyword)

    if strlen(keyword) = 0
        {
            msgbox, 検索する文字列を範囲指定してから実行してください。
            return
        }

;   EBWin4 のコマンド引数
;   /M= p[refix]|s[suffix]|e[xact]|c[rossword]|k[eyword]|f[ull text]|a[uto]     
;   p:前方一致, s:後方一致, e:完全一致, c:クロス条件検索, k:条件検索, f:全文検索, a:自動検索       
    if Instr(keyword, " ")
        {
        RUN C:Program Files (x86)EBWin4EBWin4.exe /M=f /S="%keyword%"
        } else {
        RUN C:Program Files (x86)EBWin4EBWin4.exe /M=p /S="%keyword%"
        }

return
  • このスクリプトは EBWin4 の Ver. 4.4.4 以降で動作します。
  • 検索モードは、自分の好みに変更してお使いください。
  • ショートカットキーも、自分の好みに変更してお使いください。(上記スクリプトでは Ctrl + Shift + e になっています)

元の投稿を表示

[AHK] 範囲指定した文字列をWクォーテーションで括る

SNSで「範囲指定した文字列の前後にダブルクォーテーションを付けて貼り付る」ためのAHKスクリプトの質問がありました。

; Alt + Q でダブルクオテーションマークを前後に付与する
!Q::
Send, ^c
Clipboard = "%Clipboard%"
Send, ^v
Return

何のエラー対策もしていませんが、取りあえず必要な機能は実現していると思います。文字列を範囲指定して Alt + Q を押すと、範囲指定した文字列の前後にダブルクォーテーションが付きます。

やっていること:

  1. Ctrl + C を送信し、範囲指定している文字列をクリップボードに入れます。
  2. クリップボードの内容の前後にダブルクォーテーションを付けて、クリップボードに戻します。
  3. Ctrl + V を送信し、クリップボードの内容を範囲指定している文字列へ上書きします。

実用的なスクリプトにするには、「範囲指定文字列が無い時の処理」と「元々入っていたクリップボードの内容のバックアップと復元」ですかね。ダブルクォーテーションをカギ括弧や丸括弧にしても役立ちそうですね。

お試しください。