秀丸でコンコーダンスの機能を実現できまNo.04235
Majima さん 04/03/30 01:44
 
サポートフォーラム会議室の皆様、こんにちは。有意義なご意見を
おうかがいしたく、質問いたします。語学の研究をしている者にとって
テキストの機械処理というのは、新たな言語現象を解明する上で非常に
有効な方法として、最近注目されています。
私も秀丸エディタで大変お世話になっておりますが、こういうものも
マクロで作れないかなぁといつも考えているものがあります。

コンコーダンスというものですが、こういったものです。
http://leo.meikai.ac.jp/~tono/wsmith/concord.html#top

英語のコーパス研究などではよく活用されていて、いくつかの
プログラムがオンラインで入手できますが、日本語未対応のものが
ほとんどです。私の場合とりあえず専用のコンコーダンスの機能
というより、その一部がマクロで実現できればというぐらいのもの
でして、具体的にはGREPである文字列を検索した後、検索文字列を
中央に色つきで配置して、検索結果を見やすくするといった機能です。

あと、その結果を検索文字列の左右を基準にソートできると、もっと
いいですがね。そういう機能はマクロで技術的に可能なのでしょうか。

[ ]
RE:04235 秀丸でコンコーダンスの機能を実No.04236
xucijew さん 04/03/30 07:24
 
Majimaさん,こんにちは。
この会議室に初めて投稿します。

>具体的にはGREPである文字列を検索した後、検索文字列を
>中央に色つきで配置して、検索結果を見やすくするといった機能です。

そこまでは、自作の「簡易ロシア語コーパス・コンコーダンス作成マクロ」
http://www.geocities.co.jp/Technopolis/6613/russia.html
でなんとかできましたが、検索文字列の左右を基準にソートするところまではいって
いません。

ご参考まで。

[ ]
RE:04236 秀丸でコンコーダンスの機能を実No.04237
Majima さん 04/03/30 19:36
 
xucijewさん

ご回答ありがとうございます。う〜ん・・・、上手くいきませんね。
どっかで設定が間違っているようなので、もう少しいじってみます。

/////以下の設定が必須
/////
//検索するフォルダーと拡張子 例 "c:\\foo\\boo\\*.txt"
$folder = "";
//強調表示ファイル
// 例 "tmp.hilight";(hidemaru.exeのフォルダにこの空ファイルを作っておく)
$hfile = "";
/////設定終わり

この辺りの設定も慣れない人にはちょっと大変なような気もしますし。
参考にさせて頂きます。

[ ]
RE:04237 秀丸でコンコーダンスの機能を実No.04238
xucijew さん 04/03/30 22:12
 
Majimaさん

>この辺りの設定も慣れない人にはちょっと大変なような気もしますし。

確かに説明・設定方法が不親切ですね(^^;。考えて見ます。

>どっかで設定が間違っているようなので、もう少しいじってみます。

よろしければ、どういった不具合が出ているのか教えてください。



[ ]
RE:04238 秀丸でコンコーダンスの機能を実No.04239
Majima さん 04/03/31 12:38
 
xucijewさん

確認の為に質問いたしますが、必須設定というのは検索するフォルダー
と拡張子をマクロ文に書き込み指定して、空の強調ファイルを作って
同じようにそのファイルの名前もマクロ内に書き込んで指定するわけ
ですよね。それで動かしてみたところ、最初の

$raw_word = input("ロシア語活用検索",$clip);

部分のポップアップは出るんですが、そこへ適当な文字を入れて
OKを押すと、何か反応があった後、フリーズしてしまうんです。
フリーズというか、中でずっとマクロが実行されているみたいで、
一度秀丸を終了しても、すぐにマクロを使えず、現在他のマクロが
実行中ですというメッセージが出るので、結局何度もウインドウズの
立ち上げを繰り返しながらテストしています。

何度やっても同じですね。設定の仕方がおかしいのか、検索文字に
問題があるのか、検索対象ファイルが日本語だからなのか・・・・。

とにかくこういった状況です。お分かりになりましたでしょうか。
ちなみに私のマクロに記述した経路の設定は以下の通りです。

*********************************************************
//検索するフォルダーと拡張子 例 "c:\\foo\\boo\\*.txt"
$folder = "C:\\WORK\\*.txt";
//強調表示ファイル
// 例 "tmp.hilight";(hidemaru.exeのフォルダにこの空ファイルを作っておく)
$hfile = "tmp.hilight";
/////設定終わり
*********************************************************

あ、それからマクロ6行目の

/////使用方法 : 検索文字列をコピーするか、秀丸上で範囲選択して実行する

の部分の使用方法をもう少し詳しく説明してもらえないでしょうか。
もしかしたら、基本的な使用方法が間違っているかもしれないので。

[ ]
RE:04239 秀丸でコンコーダンスの機能を実No.04240
xucijew さん 04/04/01 09:21
 
Majimaさん、こんにちは。

我ながら、いい加減なマクロですね(^^;
何かかなりご面倒をおかけしたようですいません。
自分用に作ったので雑な作りになってしまいました。

さて、検証してみたところ、色々問題が出てきまして、今のところ
とりあえず「フリーズを回避する」修正だけをして
http://www.geocities.co.jp/Technopolis/6613/hmac01.html
に UP しました。

原因は、

(1) 検索文字列の頭にに前方一致させるために半角空白を追加しているので、
  grepの際に日本語ではヒットしない
  ( $reg_word = " " + $raw_word; の部分 )

(2) そのgrep検索結果 0件のウインドウにサブルーチン(CORPUS_ORDER)で
  searchdown $$1,regular;
  をするとバージョンによってはフリーズする。(直後のwhileループ
  には入っていないようです)

と分りました。修正版では、grep検索結果 0 のときはサブルーチンの手前で
マクロを終了させることとしました。半角空白の追加は、一応「ロシア語」用
なので触りませんでした。

>使用方法 : 検索文字列をコピーするか、秀丸上で範囲選択して実行する
>の部分の使用方法をもう少し詳しく説明してもらえないでしょうか。

これは、「範囲選択時、その文字列を検索文字列とし、それ以外はクリップボードの
文字列を検索文字列とする」ということです。

・・・使いやすいマクロにするには、時間がかかりそうです  (#+_+)y-~~~

[ ]
RE:04240 秀丸でコンコーダンスの機能を実No.04241
Majima さん 04/04/01 09:53
 
xucijewさん

お忙しいところご回答ありがとうございました。使ってみてまた
ご報告いたします。今からちょっと外に出るもので・・・。
お礼とご返事まで。

[ ]
RE:04240 秀丸でコンコーダンスの機能を実No.04242
xucijew さん 04/04/01 12:40
 
自己レスです。

>半角空白の追加は、一応「ロシア語」用なので触りませんでした。

やはり解りにくいので、半角空白の追加はやめて、検索文字列の入力時に必要であれ
ば加えることとしました。

また、サブルーチンを今よりは汎用性のあるものに大幅修正しました(以前作ってい
たのを忘れてまして)。


[ ]
RE:04242 秀丸でコンコーダンスの機能を実No.04243
Majima さん 04/04/03 05:37
 
xucijewさん

何度も試しております。これまでのフリーズすることは無くなり
ましたが、検索文字を何にしても検索結果が0になって、マクロが
終了します。検索文字は全角でも半角でも、また1文字でも検索文字が
無いという結果です。どこに問題があると思われますか?やっぱり
私の方の設定に関するイージーミスでしょうか。

[ ]
RE:04243 秀丸でコンコーダンスの機能を実No.04244
xucijew さん 04/04/03 08:06
 
Majima さん

私のイージーミスでした。(^^;

>検索文字を何にしても検索結果が0になって、マクロが終了します。

おそらく、

$reg_word = input("ロシア語活用検索",$clip);

のポップアップが出た後何も表示されず終了したと思いますが、「検索結果が0」の
ポップアップが出たのでしょうか?そうですとまた別の問題になってくるのですが。
ミスの箇所は、

//キャンセルか空欄の場合、終了
if(result == no || $raw_word == ""){endmacro;}

で、 $raw_word は $reg_word が正しいです。UPLOADの際、別のファイルを使ってし
まいました。修正して UP しました。

またご面倒をおかけして申し訳ないです。m(_ _)m
何とか、使えるマクロにしていきたいと思います。


[ ]
RE:04244 秀丸でコンコーダンスの機能を実No.04245
Majima さん 04/04/03 23:32
 
xucijewさん

有難うございます。一応ご指摘のミスの箇所を書き直して動かして
みました。以前のように検索結果が0になって、マクロが終了する
ことは無くなりました。一応それらしく検索結果もでて、動いている
ようです。「動いているようだ」というのは、現在使っている
コンピューターのOSが日本のウインドウズじゃないので、家に帰って
から詳しく調べるつもりです。とりあえずマクロが動いてくれている
ので、希望がみえてきました。またご報告いたします。すみません、
忙しいもので・・・。

[ ]
RE:04244 秀丸でコンコーダンスの機能を実No.04246
Majima さん 04/04/04 13:06
 
xucijewさん

自宅のコンピューターで動かしてみたところ、ちゃんと動いています。
一応このマクロ文が果たす動きは全部しているみたいです。私の求める
コンコーダンス機能のような動きになるには、まだまだ手を加える必要
がありますが、とても参考になりました。基本的にテキストエディタで
コンコーダンスの検索結果画面のように表示するのは、難しいのでしょうね。
エクセルのような表形式のプログラムで無い限り、検索結果を中央に
揃えて検索文字の左右をソートするといった動きは、技術的に相当
難しいと思うのですが、xucijewさんはどうお考えですか。とにかく
今回は何度も付き合って頂いて、本当に有難うございました。

[ ]
RE:04246 秀丸でコンコーダンスの機能を実No.04247
xucijew さん 04/04/05 11:39
 
Majima さん

>基本的にテキストエディタでコンコーダンスの検索結果画面のように
>表示するのは、難しいのでしょうね。

私は、「NHK100語で英会話」の投野由紀夫さんの

「コーパス分析ツール WordSmith の活用を目的としたページ」
http://leo.meikai.ac.jp/~tono/wsmith/index_lc.html

で紹介されているソフト WordSmith を基準に考えています。
基本的にはこのソフトを使っていれば良いと思います。ただ、秀丸編集中に
ちょっと用例を見たい時など秀丸マクロで出来ればいいなぁ、といった感じです。

ちなみに、検索文字の左右をソートするところまでは、

高速ソートマクロ dsort.mac
http://www.vector.co.jp/soft/win95/writing/se141383.html

を応用して出来そうです。しかし、WordSmithの機能、

- より広い文脈を見る
- Collocation 統計を見る
- テクスト中での出現分布を見る
- 単語の連鎖(cluster)を見る

はEXCELやACCESSを使わないとダメのような気がしています。・・・というか
楽というか時間の節約というか(^^;

今後何か良いアイデアが生まれるようなことがありましたら、ぜひ教えてください。

>今回は何度も付き合って頂いて

こちらこそ、いい勉強になりました。

それでは。

[ ]
RE:04247 秀丸でコンコーダンスの機能を実No.04248
Majima さん 04/04/05 15:37
 
xucijewさん

ありがとうございます。私のほうも全てのことを秀丸で実現できないと
思っているので、作業目的に合わせていろいろなプログラムを使おうと
考えています。秀丸でマクロを組もうと考えていなかった時期(考えて
いなかったというよりは出来なかった頃)は、それこそ検索なりソート
なり、ありとあらゆるプログラムの機能を総動員して作業をして
いましたからね。今考えると非常に非効率的な作業も沢山ありました。

秀丸のマクロを勉強するようになってからは、ある程度秀丸で処理でき
るようになり、いろいろなプログラムの間をファイルが行ったり来たり
する回数は減りましたが、それでもやっぱりプログラムにはそれが得意
とする分野があると思います。あんまり懲りすぎてしまうと、xucijew
さんのおっしゃる通りに時間の無駄になることにもなりかねません。
まぁ、一つマクロで目標が達成できること自体は、全然無駄ではありま
せんが、効率的とか楽をできるかといった部分ですよね。

これからも常に奇抜(?)なアイディアで作業効率を上げる研究をして
いきたいです。

[ ]