あいまい検索 その4No.28458
rosegardenyk さん 10/06/23 16:33
 
こんにちはrosegardenです。

環境V8.01 β9 hmjre.dll V3.21
あいまい検索設定:「半角全角を区別しない」ON
「ヒープ領域を使う」ON 他はすべてOFF

テスト方法: Ctrl+F 単語検索、正規表現、あいまい検索
検索パターン:^.{7}

結果
ショックの治療における ⇒ 「ショックの治療」7文字にヒット
ノルエピネフリンの比較 ⇒ 「ノルエピネフ」6文字にヒット
ドパミンとノルエピネフリンは ⇒ 「ドパミンと」5文字にヒット

「半角全角を区別しない」ONの内部処理がカタカナについては全角カタカナも半角カ
タカナに引き戻すとしているようです。したがって濁音、半濁音は2文字でカウント
してしまいます。

別の理由で:「半角全角を区別しない」ON ははずせません。
これは一応バグではないでしょうか?

通常の文章は全角カタカナを使っている場合が圧倒的に多いです。
「半角全角を区別しない」ON でも全角にあわせてカタカナの「ド」⇒「ド」、
「パ」⇒「パ」とみなして1字とカウントしてほしいです。
正確には全角を検索対象としているときは「ド」「パ」は1字にカウントしてほしい
です。
半角カタカナを検索している時は「ド」、「パ」1文字がいいのか2文字カウントがい
いのかよくわからないですが、そのまんま2文字カウントが
まごつかなくてよいと思います。

難しいかもしれませんが対応が必要だと思います。

参考:自作マクロの検索パターンで、文字数を指定するところで問題を発見しました。
"^.{" + str(#d) + "}(.{" + str(#k) + "})"





[ ]
RE:28458 あいまい検索 その4No.28459
秀まるお2 さん 10/06/23 17:50
 
 たしかにそういう検索は今のところうまくいかないですが、果たしてどういう
風に直したらいいのか、いまいち僕にも分からないです。

 半角文字に変換して検索するような仕組みにしたのはなぜかというと、例えば
「ガ」と「カ」を同一視させるのに、濁音の文字を分離した方が都合がいいから、
というのがあるからだと思います。

 あいまい検索の仕組み的に、検索の処理の過程で文字をいろいろ変換してしま
うので、結果として文字数が変化することは仕方がないし、「何文字にヒットせ
よ」という類の条件ではうまくマッチさせるのは不可能ではないかと思います。

 例えば「あ」と「いい」を同一視指定してるとしたら、「あ」はつまり
「いい」と同じな訳で、文字数的には1文字なのか2文字なのか確定しません。
それ対して「1文字ならヒットせよ」といった正規表現と組み合わせさせるのは、
不可能に近い気がします。

[ ]
RE:28459 あいまい検索 その4No.28460
秀まるお2 さん 10/06/23 18:47
 
 とりあえず、半角/全角の同一視のサブオプションとして、

 「比較処理の詳細: 全角文字に変換して比較する」

 みたいなのを用意する手はあるかなぁと思いました。

 そういうオプションでとりあえず回避するという作戦はどうでしょ?

[ ]
RE:28460 あいまい検索 その4No.28462
rosegardenyk さん 10/06/23 21:02
 
rosegarden です。
> とりあえず、半角/全角の同一視のサブオプションとして、
> 「比較処理の詳細: 全角文字に変換して比較する」
> みたいなのを用意する手はあるかなぁと思いました。
> そういうオプションでとりあえず回避するという作戦はどうでしょ?

「とりあえず回避する」ということでも不満はありませんが
私一人の考えで良いとか悪いとか言うのはどうかという気がするのでcolderさんとか
の意見もぜひ聞いて見たい気がします。

やはり「とりあえず回避する」ためにオプションつけて他のユーザーに分りづらくす
るのはどうかなということです。
オプションつけずとも自動判断できるのではないでしょうか。


例えば、
「半角/全角を区別しない」ON
「全角文字でひらがなとカタカナを区別しない」ON
「カスタム1」ONで次の同一視ファイル設定だとします。
いずれ どちら
も にしても

searchdown2 "どちらも",regular,fuzzy,hilight;

で次の4例全ての行頭からヒットしますがヒット部分の文字数は異なります。

いずれもかまわない ⇒ 「いずれも」の4文字

どちらにしてもかまわない ⇒ 「どちらにしても」の7文字

ドチラモカマワナイ ⇒ 「ドチラモ」の4文字」の4文字

イズレニシテモカマワナイ ⇒ 「イズレニシテモ」の7文字


前のメールで「あ」と「いい」を同一視していたらどちらの文字数が確定しないとお
っしゃってましたが、実務的にはそんなことはありません。
ユーザーが見るのは、現実にヒットした部分の文字数に決まっています。
うえの例でいえば
「いずれも」にヒットすれば4文字

「イズレニシテモ」にヒットすれば 行頭から8文字ではなく、見た目どおりの行頭か
ら7文字というようにしてほしいわけです。
半角/全角を区別しないONであっても、内部文字数カウントを「見た目どおり」全角
も1字として数える7文字として扱ってくれればよいわけです。自作マクロではヒッ
ト部分の次の「かまわない」に処理を移すわけですが、全角も1字として数える7文
字の次以降の文字列というわけです。


[ ]
RE:28458 あいまい検索 その4No.28466
アルビレオ さん 10/06/23 23:14
 
ユーザーのアルビレオです。

>「半角全角を区別しない」ONの内部処理がカタカナについては全角カタカナも半角カ
>タカナに引き戻すとしているようです。したがって濁音、半濁音は2文字でカウント
>してしまいます。
>
>別の理由で:「半角全角を区別しない」ON ははずせません。
>これは一応バグではないでしょうか?

もともと文字数の違うものを同一視している時点で文字数についてもあいまいな
ものにならざるを得ませんから、バグというより仕様・解釈の問題でしょう。
現時点で「正しくはこうだ」と明確にできないものをバグと呼ぶのはちょっと抵
抗があります。

[ ]
RE:28466 あいまい検索 その4No.28467
rosegardenyk さん 10/06/24 03:40
 
>ユーザーのアルビレオです。
>
>>「半角全角を区別しない」ONの内部処理がカタカナについては全角
>>別の理由で:「半角全角を区別しない」ON ははずせません。
>>これは一応バグではないでしょうか?
>
>もともと文字数の違うものを同一視している時点で文字数についてもあいまいな
>ものにならざるを得ませんから、バグというより仕様・解釈の問題でしょう。
>現時点で「正しくはこうだ」と明確にできないものをバグと呼ぶのはちょっと抵
>抗があります。
アルビレオさんの意見に賛成です。「これは一応バグではないでしょうか」は響きが
強すぎましたね。
別メールで書きましたようどういう形にするのがBESTか、私も苦慮しています。この
問題に対処してもらうために他のユーザーを混乱させてはいけないからです。つまり
対応用オプションをつけてもらったとして他のユーザーにとっては、このオプション
って何のためにあるのということになるからです。
アルビレオさんにも検討に参加していただいてユーザーとしての建設的な意見を述べ
てくださるととても助かります。もっともこんな微妙な問題は、仕様なんだから対処
は不要というのもひとつの立派な意見です。どんな意見でもかまいません。

基本的には「あいまい検索」というのは「本来ならぬものを何とかして」同一視した
り、無視したりしているわけで、当初の仕様は無理は承知でいろいろやってくれてい
るわけです。当初の仕様のままでも実用的価値は実に素晴らしいわけです。今年の5
月くらいからあいまい検索について、秀まるお2さんにいくつか修正対応してもらっ
ているのも全体から見ればごくわずかなところです。ささいであってもはっきりとバ
グであれは直してもらいたいし、今回のようにどちらともいいがたい時はフォーラム
なので、他のユーザの意見を聞きながら進めていきたいです。
私は、マクロは初心者なのでもっぱら翻訳に必要な自作マクロを作成する上での、実
務的な観点から意見を述べています。





[ ]
RE:28462 あいまい検索 その4No.28469
秀まるお2 さん 10/06/24 09:13
 
> オプションつけずとも自動判断できるのではないでしょうか。

 現状の「あいまい検索+正規表現」で検索する仕組み的に、まずはあいまい検
索のための文字列の変換を実行し、その変換した結果に対して正規表現パターン
でのマッチングする、ということをやっています。

 正規表現マッチングの処理の中では、変換前の文字がどうだったかは分からな
いです。

 なので、その「変換してからマッチングする」という仕組みを変えずになんと
かするとしたら、オプション追加以外には手段が無いんじゃないかと思います。

 例えば正規表現マッチングの処理の中にあいまい検索の処理も埋め込むような
形に直したらいいというアイデアもあるかと思いますが、それはちょっと難しす
ぎて、現実的には無理だと思います。

[ ]
RE:28469 あいまい検索 その4No.28472
秀まるお2 さん 10/06/24 11:32
 
 とりあえずですが、colderさんから別に報告いただいてるバグ修正もあるので、
そもそもカタカナ/ひらがなの半角/全角区別無しの動作については全角文字に
変換してから処理するようにしようと思います。

 (オプション追加とかじゃなくて)

 いろいろいじってみないと分からない所もあるので、また何か問題があったら
報告させていただきます。

[ ]
RE:28469 あいまい検索 その4No.28473
rosegardenyk さん 10/06/24 11:54
 
rosegardenです。
「オプションつけずとも自動判断できるのではないでしょうか。」が難しいというこ
とですね。了解です。

現象をもう一度書くと:
1.文字数指定の正規表現検索だと全角カナも1字として正しく処理する
「ドーピング」に対し先頭5字指定「^.{5}」で「ドーピング」となり問題なし。
2.これに全角/半角同一視ONとすると濁音、半濁音を2文字として処理するため、
「ドーピング」は8文字となり、先頭5字指定だと「ドーピ」までとなる。見た目と
違うため直ぐには理由がわからずまごつく。

秀まるお2さんが例として出されたサブオプションの表題
「比較処理の詳細: 全角文字に変換して比較する」
をもう少しわかりやすく書いていただけますか? 「比較処理」って何?

本件は明確にバグとは言い切れないが、初めて出会った時は理由が直ぐに浮かばず面
食らうという現象です。リクエストの仕方自体をさらに練り込めるかどうか検討した
いと思います。平凡な例として現行オプションの脇にその旨表示するというのも一法
です。ユーザーもマクロ作成時に自然と注意するというわけです。それだけで追加サ
ブオプションなしですむので、いちばん安上がりです。ただし一押しというわけでは
ありません。

他にもこういうやり方もあるよ見たいなアイデアが皆さんから得られたらよいなと考
えています。具体的な代替例が出されるとそれに触発されてさらによいアイデアがで
てくる可能性があります。

前にも下記のようなことがありました。
空白含む英熟語の同一視登録リクエストを検討いただいたとき、当初秀まるお2さん
のとても無理のコメントから、同一視登録方法は変えずに空白とハイフン同一視オプ
ション追加と私のほうで、リクエストの仕方自体を変えたら、ではこうやり方はどう
かと代替案を秀まるお2さんが下さって、技術的にもさほど難しくなさそうとそのコ
メントが変わり、どうせ機能追加するなら空白と任意の文字の同一視にしたらどうか
とさらによい提案までいただいたことがありました。結局はcolderさんの英塾語の空
白を全角空白で登録し、「全角/半角区別しない」ONにしたらどうかという名案で一
件落着してしまいましたが、こんなやり取りがフォーラムらしく、大げさにいうと創
造的だったなと思います。

[ ]
RE:28473 あいまい検索 その4No.28474
rosegardenyk さん 10/06/24 12:07
 
前メールに長々とコメント書いているうちに次の前向きな秀まるお2さんのコメント
が入っていました。

> とりあえずですが、colderさんから別に報告いただいてるバグ修正もあるので、
>そもそもカタカナ/ひらがなの半角/全角区別無しの動作については全角文字に
>変換してから処理するようにしようと思います。
>
> (オプション追加とかじゃなくて)
>
> いろいろいじってみないと分からない所もあるので、また何か問題があったら
>報告させていただきます。

いろいろ試して総合的に変更が適切かとうか判断してください。
大変でしょうが、よろしくお願いします。

[ ]
RE:28472 あいまい検索 その4No.28475
Iranoan さん 10/06/24 13:05
 
 秀まるおさん今日は、Iranoan です。
> そもそもカタカナ/ひらがなの半角/全角区別無しの動作については全角文字に
> 変換してから処理するようにしようと思います。
>
>  (オプション追加とかじゃなくて)
 こちらについてですが、「ト゛」等はどうなるのでしょう?

 因みに、あいまい検索については、ヒットした文字数がばらばらになるのは、
致し方ないので、今回のようなケースは、仕様さえはっきりしていれば、どち
らでも良いと思います。

[ ]
RE:28474 あいまい検索 その4No.28476
秀まるお2 さん 10/06/24 14:02
 
 rosegardenykさんのおっしゃることはごもっともです。僕の内部的なプログラ
ミングの都合をユーザー様に押しつけても仕方がないことであって、内部的に実
現出来ないから仕様ですといっても仕方がないです。

 ということで、Iranoanさんの発言の方のコメントに続くこととさせていただ
きます。

[ ]
RE:28475 あいまい検索 その4No.28477
秀まるお2 さん 10/06/24 14:10
 
 こちらにコメントさせていただきますが、今こちらでとりあえず動くようにな
った処理を説明させていただきますと…、

 まず、

   「全角/半角を区別しない」
   「濁音/半濁音を区別しない」

 の両方をONにした場合、

 半角の「ト」
 半角の「ト゛」(2文字)
 全角の「ト」
 全角の「ド」
 全角の「ト゛」(2文字)

 は、すべて同じ文字で、しかも文字数的には1文字である、という風に解釈さ
れる、という仕様としました。

 なので、例えば

 ト゛ト゛ト゛

 と書いてある文字列に対して、正規表現の「ド{3}」も「ト{3}」もヒットしま
す。

 見た目的には6文字にヒットしてる訳ですが、これはこういう仕様とさせてい
ただく以外に無いと思います。

 「ヒットする文字数が何文字」というのは現状の仕組み的に正確に処理させる
ことは不可能なので、あとやるとしたら、検索ダイアログボックスに{n}の類が
入力されて、しかも正規表現ON+あいまい検索ONだとしたら、何か赤字で警告を
出すとか、そういう対応をするしか無いかなぁと思います。

[ ]
RE:28477 あいまい検索 その4No.28478
rosegardenyk さん 10/06/24 16:44
 
まず、何で「濁音/半濁音を区別しない」をONしなければいけないのか理由がわかり
ません。

カタカナ薬品名が多くでてくる医学・薬学関係文書の処理で「濁音/半濁音を区別し
ない」ONにすることは命取りです。「ドパミン」と仮に「トハミン」という薬剤があ
ればはまったく別の薬剤名なわけです。あいまい検索で空白無視や「、」と「,」を
同一視する意味がなくなります。

実務的に「全角/半角を区別しない」ON であれば「濁音/半濁音を区別しない」OFF
でも全て1字にカウントがよいです。

   「全角/半角を区別しない」  ON
   「濁音/半濁音を区別しない」OFF

 半角の「ト」             ⇒ 1字にカウント
 半角の「ト゛」(2文字) ⇒ 1字にカウント
 全角の「ト」             ⇒ 1字にカウント
 全角の「ド」             ⇒ 1字にカウント
 全角の「ト゛」(2文字) ⇒ 1字にカウント

「濁音/半濁音を区別しない」のON/OFFを字数カウントに絡めないでほしいというこ
とです。

「全角/半角を区別しない」  ON
「濁音/半濁音を区別しない」OFF ならは゛
 ト゛ト゛ト゛

と書いてある文字列に対して、正規表現の「ド{3}」はヒットし「ト{3}」はヒットし
ない仕様が私の要望です。

見た目には6文字にヒットしてる訳ですが、これはこういう仕様とすることでかまい
ません。

詳しく検討したわけではありませんが赤字でなんらかの必要な警告をする案はよさそ
うです。 イメージはっきりしたらお知らせください。

[ ]
RE:28478 あいまい検索 その4No.28481
秀まるお2 さん 10/06/24 18:16
 
> まず、何で「濁音/半濁音を区別しない」をONしなければいけないのか理由がわかり
> ません。

 とりあえずそれがONのケースについていろいろ考えただけでした。それで一応
うまく動くようになったかなぁと、思った所でした。

 それからさらに、上記の「濁音/半濁音を区別しない」をOFFにしつつ、「半
角/全角を区別しない」だけONにしていろいろテストしたら、それはそれでうま
く動作してくれませんでした。

 濁音/半濁音を無視していいとなるといろいろ内部の処理上の都合が良かった
んですけども、無視したらだめってことになると、難しい所が多々あります。

 とにかく内部的な話をここに書いても仕方がないので、うまく期待された動作
になるようにトライしてみます。

[ ]
RE:28478 あいまい検索 その4No.28483
colder さん 10/06/24 18:43
 
colderです

>「全角/半角を区別しない」  ON
>「濁音/半濁音を区別しない」OFF ならは゛
> ト゛ト゛ト゛
>
>と書いてある文字列に対して、正規表現の「ド{3}」はヒットし「ト{3}」はヒット
>しない仕様が私の要望です。
>

「ド」と「ト゛」の違いは全角/半角の違いではないし、
「全角/半角を区別しない」  ON でこれを同一視するのは少し意味がずれるのでは
ないでしょうか。


「ド」と「ト゛」の同一視はカスタム指定の方で対応するということではダメなので
しょうか?


[ ]
RE:28483 あいまい検索 その4No.28486
秀まるお2 さん 10/06/24 21:20
 
 「半角/全角を区別しない」=ON
 「濁音/半濁音を無視する」=OFF

 のケースで、「ド」で検索して半角の「ト゛」にも全角の「ト゛」にもヒット
させるのは、それは今いろいろいじった処理で出来そうです。

 ということで、対応出来る予定ということでお願いします。

[ ]
RE:28486 あいまい検索 その4No.28487
rosegardenyk さん 10/06/24 21:55
 
> 「半角/全角を区別しない」=ON
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
> ということで、対応出来る予定ということでお願いします。
いつもいつも素早い対応ありがとうございます。今夜はWカップ オランダ戦もありま
す。早く帰って体休めてください。

[ ]
RE:28483 あいまい検索 その4No.28489
rosegardenyk さん 10/06/24 23:22
 
>「ド」と「ト゛」の違いは全角/半角の違いではないし、
>「全角/半角を区別しない」  ON でこれを同一視するのは少し意味がずれるのでは
>ないでしょうか。
>
>
>「ド」と「ト゛」の同一視はカスタム指定の方で対応するということではダメなの
>でしょうか?

colderさんの意見に賛成です。こちらの方が筋が通っていて理解しやすいです。シス
テム的にできるからといってやるべきだとはならないと思います。
私は最初「ト゛」は標準外の表記だと思い、どちらでもよいと安易に考えていました。
カスタム指定の方で対応するという方法を思い浮かべることができませんでした。下
記のとおり改めて調べたところ「ト゛」等はタイプ・ミスの類だと確信しました。


大量の医薬関係の文書を検索したところ
カタカナ+「゜」(0x814B) ゼロ件
カタカナ+「゛」(0x814A) ゼロ件

医学論文雑誌の訳文で10数年間で1件
(101゜F)華氏   :「゜」(0x814B)がありましたが度を表す「°」(0x818B)とすべ
きところをカタカナの半濁音(0x814B)したものと思われます。

日本薬局方で 5〜6件
旋光度〈2.49〉 [α]20D:+19〜+26゜「°」これも(0x818B)とすべきところを
カタカナの半濁音(0x814B)にしたものと思われます。
他の大多数の日本薬局方の旋光度の記述では度「°」(0x818B)と正しくなっています。

要するに、次の表記はタイプ・ミスと考えてもよい訳です。
カタカナ+半濁音「゜」(0x814B)
カタカナ+濁音「゛」(0x814A)
数字+半濁音「゜」(0x814B)

タイプ・ミス対策は「同一視」ファイルで設定するのが筋だと思います。便利だから
といって、「ド」と同列の特別席に座らせる必要はないのではと思いなおしました。
こういうことはすこし時間がたつとどうしたかすぐ忘れてしまいますが、考え方の筋
が通っている方が思い出しやすいとということもあります。
せっかく修正進めてくれたようですが、「全角/半角を区別しない」  ON で「ド」
と「ト゛」を同一視するのは必要はなく、「ト゛」は2字カウントでよいと思います。

Iranoanさん、コメントあればお願いします。

[ ]
RE:28489 あいまい検索 その4No.28512
rosegardenyk さん 10/06/28 00:45
 
>せっかく修正進めてくれたようですが、「全角/半角を区別しない」  ON で「ド」
>と「ト゛」を同一視するのは必要はなく、「ト゛」は2字カウントでよいと思います。
秀まるお2さん
こちら反応がありませんがお読みいただけたでしょうか。

[ ]
RE:28512 あいまい検索 その4No.28513
秀まるお2 さん 10/06/28 08:51
 
 「半角/全角を区別しない」=ON
 「濁音/半濁音を無視する」=OFF

 のケースで、全角の「ド」と全角の「ト゛」を同一視しない方がいいという話
かと思いますが、…。ではとりあえずそういう仕様にさせていただきます。

 「半角/全角を区別しない」=ON
 「濁音/半濁音を無視する」=ON

 のケースについては、今も同一視する仕様になっているので、今後も同一視す
る仕様のままとします。

[ ]
RE:28513 あいまい検索 その4No.28514
秀まるお2 さん 10/06/28 09:19
 
>  のケースで、全角の「ド」と全角の「ト゛」を同一視しない方がいいという話
> かと思いますが、…。ではとりあえずそういう仕様にさせていただきます。

 そうしようと思ったんですが、無理でした。

 また内部的な話になってしまうんですが、半角/全角を同一視する場合、内部
的に、半角文字を全部全角文字に変換してからマッチングしています。

 なので、半角の「ト゛」にはヒットするけど全角の「ト゛」にはヒットしない
というような、そういう処理は実現不可になるようです。

 ヒットする仕様でまずいことは無いと思うので、そういう仕様とさせていただ
きます。

 ちなみに手元のバージョンでどういう仕様になってるか説明させていただきま
すと、

 「半角/全角を区別しない」=ON
 「濁音/半濁音を無視する」=OFF

 のケースで、

 「ド」で検索した場合、
   ヒットするのは全角の「ド」、全角の「ト゛」、半角の「ト゛」

 全角の「ト゛」で検索した場合、
   ヒットするのは全角の「ド」、全角の「ト゛」、半角の「ト゛」

 半角の「ト゛」で検索した場合、
   ヒットするのは全角の「ド」、全角の「ト゛」、半角の「ト゛」

 全角の「ト」で検索した場合、
   ヒットするのは全角の「ト」、全角の「ト゛」の「ト」部分、
   半角の「ト゛」の「ト」部分

 半角の「ト」で検索した場合、
   ヒットするのは全角の「ト」、全角の「ト゛」の「ト」部分、
   半角の「ト゛」の「ト」部分

 となることを確認しています。

[ ]