(57)【要約】【課題】ユーザによって提供された初期探索表現および初期置換表現の対から開始するテキストの探索および置換編集動作を行うための方法、コンピュータ・プログラム、およびシステムが、初期探索表現および初期置換表現の許容される語形変化した形式を規定する各規則を初期探索および置換表現に提供して、規則に対して有効な初期探索表現および初期置換表現の派生対のすべてを識別すること。【解決手段】派生対の探索表現および置換表現は、初期探索および置換表現の語形変化した形式に対応する。その後、派生対の探索表現のテキスト内の各一致について、テキスト内で置換するための派生対をユーザに対して提案する。ユーザ・インターフェースは、テキスト・エディタの通常のグラフィカル・ユーザ・インターフェースを通じるか、またはテキスト・ベースの端末ユーザ・インターフェースを通じて行われる。探索および置換動作は、探索および置換コマンドを含むプログラムの実行を通じた受動的なものであってもよいし、または、プログラムの実行中に選択を行うようにユーザに要求することによる対話的なものであってもよい。【選択図】図２
2009521026.tif 000002
【特許請求の範囲】
【請求項１】
テキストの探索および置換編集動作を行う方法であって、
ユーザによって提供された初期探索表現および初期置換表現を備える表現の対を前記ユーザから収集するステップと、
前記初期探索表現および前記初期置換表現の許容される語形変化した形式を規定する各規則について、前記規則を読み出し、前記規則を前記初期探索表現に適用し、および、前記規則を前記置換表現に適用するステップであって、これにより、前記初期探索表現の語形変化した形式と前記初期置換表現の語形変化した形式とで形成された派生対を取得する、ステップと、
先行ステップにおいて計算されたすべての派生対に係る探索表現について、前記テキスト内で一致するものを識別するステップと、
先行ステップにおいて識別された各一致するものについて、探索表現として前記一致する探索表現を有する各派生対に係る、前記一致する探索表現と前記置換表現とを、前記ユーザに提供するステップと
を含む、方法。
【請求項２】
前記テキスト内で一致するものが識別された１つのみの派生対が前記ユーザに提供される度に、前記テキストにおいて、前記１つのみの派生対に係る置換表現で置換機能を実行するステップ
をさらに含む、請求項１に記載の方法。
【請求項３】
前記テキスト内で一致するものが識別された２つ以上の派生対が前記ユーザに提供される度に、前記ユーザに対して提供された前記２つ以上の派生対のうち１つの派生対を前記ユーザから収集するステップと、
前記テキストにおいて前記ユーザから収集された前記１つの派生対に係る置換表現で置換機能を実行するステップと
をさらに含む、請求項１または２に記載の方法。
【請求項４】
探索表現および置換表現の許容される語形変化した形式を規定する前記規則を第１の記憶手段に記憶する初期ステップをさらに含み、
前記規則を読み出す前記ステップは、前記規則を前記記憶手段から読み出すステップを含む、
請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記初期探索表現と前記初期置換表現とから派生したすべての派生対を第２の記憶手段に記憶するステップをさらに含み、
前記識別するステップは、前記派生対のすべてを前記第２の記憶手段から読み出すステップを含み、
探索表現として前記一致する探索表現を有する各派生対に係る、前記一致する探索表現と前記置換表現とを、前記ユーザに提供する前記ステップは、前記派生対を前記第２の記憶手段から読み出すステップを含む、
請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記一致するものを識別する前記ステップにおいて探索された前記テキスト内の前記一致するものすべてを第３の記憶手段に記憶するステップをさらに含み、
探索表現として前記一致する探索表現を有する各派生対に係る、前記一致する探索表現と前記置換表現とを、前記ユーザに提供する前記ステップは、前記一致する派生対を前記第３の記憶手段から読み出すステップを含む、
請求項１から５のいずれか１項に記載の方法。
【請求項７】
第３の記憶手段に記憶する前記ステップは、
一致する前記探索表現の識別子が付加され、前記テキスト内の前記一致するものの場所と、一致する文字列の範囲とを備える、前記テキスト内の前記一致するものの指標を記憶するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記ユーザから収集する前記ステップおよび前記ユーザに提供する前記ステップは、前記探索および置換編集動作が行われる前記テキストの部分を表示する領域を有するグラフィカル・ユーザ・インターフェースを通じて行われ、前記グラフィカル・ユーザ・インターフェースはさらに、前記探索表現を表示するフィールドと、前記置換表現を表示するフィールドとを有し、前記表現は共に前記ユーザによって入力されるかまたは前記ユーザに対して提供される、請求項１から７のいずれか１項に記載の方法。
【請求項９】
前記ユーザから収集する前記ステップおよび前記ユーザに提供する前記ステップは、コマンドを含むプログラムの実行によって行われる、請求項１から７のいずれか１項に記載の方法。
【請求項１０】
前記ユーザに提供する前記ステップは、前記テキスト内で前記一致するものが識別された順で行われる、請求項１から９のいずれか１項に記載の方法。
【請求項１１】
前記ユーザに提供する前記ステップは、前記派生対内の異なる前記一致する探索表現の順で行われる、請求項１から９のいずれか１項に記載の方法。
【請求項１２】
前記規則を前記初期探索表現に適用する前記ステップ、および、前記規則を前記初期置換表現に適用する前記ステップは、重複する候補対を削除するステップをさらに含む、請求項１から１１のいずれか１項に記載の方法。
【請求項１３】
コンピュータ上で実施されると、請求項１から１２のいずれか１項に記載の方法のステップを実行するプログラミング・コード命令を備えている、コンピュータ・プログラム製品。
【請求項１４】
請求項１から１２のいずれか１項に記載の方法を実行するようになっている手段を備えている、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、テキスト編集に関し、より特定的には、改良された「探索および置換（Ｆｉｎｄ  ａｎｄ  Ｒｅｐｌａｃｅ）機能」に関する。
【背景技術】
【０００２】
プログラマは、自身の要求にほぼ合う関連コードをコピーし、その一部を置換して当該新規のコードの最良の目的に合うようにすることによって、新たな機能／方法をソースコードに付加することが非常に多い。特に、ある集合体内のある要素に適したパターン（あるクラスにおけるある属性または方法、もしくはあるパッケージまたはクラス内のあるクラス）は、既存の要素のコードをコピーし、その後、既存の要素の名前を作成しようとする要素の名前で置換することよって、伝播させることができる。
【０００３】
例えば、作成しようとする概念セグメントにとって望ましいと考えられる特徴をデータを扱う以下のクラスが有していることを考慮して、プログラマは、典型的には、ＤａｔａＥｌｅｍｅｎｔ．ｊａｖａファイルの内容をＳｅｇｍｅｎｔ．ｊａｖａファイルにコピーし、その後、Ｓｅｇｍｅｎｔ．ｊａｖａファイルを編集してデータ要素に対するすべての参照をセグメントに対する参照に変換することになろう。
ｐｕｂｌｉｃ  ｃｌａｓｓ  ＤａｔａＥｌｅｍｅｎｔ｛
ｐｕｂｌｉｃ  ＤａｔａＥｌｅｍｅｎｔ（）｛
．．．．
｝
ｐｒｉｖａｔｅ  Ｓｔｒｉｎｇ  ＤＥＦＡＵＬＴ＿ＤＡＴＡ＿ＥＬＥＭＥＮＴ＿ＮＡＭＥ＝”ｄｕｍｍｙＮａｍｅ”；
ｐｒｉｖａｔｅ  Ｓｔｒｉｎｇ  ｄａｔａＥｌｅｍｅｎｔＮａｍｅ＝ＤＥＦＡＵＬＴ＿ＤＡＴＡ＿ＥＬＥＭＥＮＴ＿ＮＡＭＥ；
／＊＊  Ｒｅｔｕｒｎ  ｔｈｅ  ｄａｔａ  ｅｌｅｍｅｎｔ  ｎａｍｅ．＊／
ｐｕｂｌｉｃ  Ｓｔｒｉｎｇ  ｇｅｔＤａｔａＥｌｅｍｅｎｔＮａｍｅ（）｛
ｒｅｔｕｒｎ  ｄａｔａＥｌｅｍｅｎｔＮａｍｅ；
｝
｝
【０００４】
このような非常に小さな例に関しては、代わりに、プログラマは、左欄の項目を右欄の対応項目に置換するためにいくつかの編集をすることになろう。
ｄａｔａ  ｅｌｅｍｅｎｔ    ｓｅｇｍｅｎｔ
ＤＡＴＡ＿ＥＬＥＭＥＮＴ    ＳＥＧＭＥＮＴ
ｄａｔａＥｌｅｍｅｎｔ  ｓｅｇｍｅｎｔ
ＤａｔａＥｌｅｍｅｎｔ  Ｓｅｇｍｅｎｔ
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ソースの長さが長くなれば、プログラマは、エディタで利用可能な探索および置換機能の使用に切り換えることになろう（ウィンドウ化システムを使用しているエディタかどうかに関わらず、探索および置換コマンドは利用可能な場合が非常に多い）。そうなると、単一の概念置換（「データ要素をセグメントに論理的に置換する」）に関して、プログラマは４つの探索および置換コマンドを起動することになるという問題点がある。
【０００６】
この問題の従来の解決策には、以下のものが含まれる。
‐概念の異なる形式同士を区別するための大文字と小文字とを区別するオプション（ｍａｔｃｈ  ｃａｓｅ  ｏｐｔｉｏｎ）。これは、有用ではあるが、問題を分割するだけであり、大文字および小文字毎に最終決定をプログラマに委ねるものである。
‐大文字と小文字とを区別するオプションを使用しない場合には、何らかの置換ツール（マイクロソフト（登録商標）社のＷｏｒｄ２０００など）が、大文字と小文字との単純な区別を類推することができる。例えば、「ｄａｔａ  ｅｌｅｍｅｎｔ」を「ｓｅｇｍｅｎｔ」に置換するように求めると、「Ｄａｔａ  ｅｌｅｍｅｎｔ」を「ｓｅｇｍｅｎｔ」に置換するための申し出を生じさせて、その後、それを「Ｓｅｇｍｅｎｔ」に有効に変換することになろう。なお、同ツールに「ｄａｔａ  ｅｌｅｍｅｎｔ」を「ｓｅｇｍｅｎｔ  ｅｌｅｍｅｎｔ」に変換するように求めると、「ｄａｔａ  Ｅｌｅｍｅｎｔ」を「ｓｅｇｍｅｎｔ  Ｅｌｅｍｅｎｔ」に変換することはなく、代わりに「ｓｅｇｍｅｎｔ  ｅｌｅｍｅｎｔ」を生じさせる。
‐高度な通常表現のマッチング。ＶＩ、Ｅｍａｃ、または他の高性能な置換を使用して、熟練したプログラマは、多様な置換要求を実施することができる。しかしながら、これは、高度な置換表現を必要とするのでエラーの生じやすいやり方であり、最も困難な場合をまだ解決するものではない。
【０００７】
これらの解決策に共通している限界は、プログラマが概念の各変形を明確に特定しつつ、上述の状態を複数回使用して最終的な望ましい結果を得るということを伴うということである。ＶＩまたはＥｍａｃのみがＤＡＴＡ＿ＥＬＥＭＥＮＴのような場合に対処できるだろうが、他の場合に対する機能は欠けている。
【０００８】
上記で考察した問題を、インスタンス間の違いを決定するいくつかのパラメータに対して規則的なプログラミング・パターンを適用するという、より一般的な問題に拡張するとすると、そのようなことを行うための方法は、最終的なコードの局面に近くなりうるテンプレート（例えば、ソース・ツールの中にはテンプレートを提供して、コードの一部を生成することができるものがある）、またはより概念的な標記（ＵＭＬなど）をはじめとして数多くの方法がある。必要とされるパターンがツール内またはプログラマによって徐々に開発されたライブラリに内にある場合には全く申し分ない。プログラマが新たな方法を探って新生のテンプレートを練り上げ中の場合には、コピー／貼り付け／探索および置換の状態は、遥かに自然なものとなる。
【０００９】
本状態の探索および置換フェーズを行う他のやり方は、検討されたプログラミング言語の意味規則を認識しているリファクタリング・ツールを伴うというものである。例えば、ＤａｔａＥｌｅｍｅｎｔクラスを他のパッケージにコピーして、その後、Ｓｅｇｍｅｎｔに名前を付け替えるようにリファクタリング・ツールに要求する。これによってクラス名、その構成者名、および必要に応じてコメントにおけるクラス名に対する参照をも適切に（テキストをベースとする探索および置換ツールよりも正確に）変更することになろうが、ｄａｔａＥｌｅｍｅｎｔなどの派生形式と合致することはないだろう。さらに、意味規則レベルで動作することは、必ずしも望ましいことではなく、可能であるとも限らない。例えば、新たなクラスが既存以外の同一のパッケージに作成される場合、名前を付け替える処理の一部を行う直前にそれをコンパイルする方法がない。
【００１０】
例えば、マイクロソフト（登録商標）社のＷｏｒｄ２０００は、置換での最初の文字に対する適応性のある管理を提供する。このエディタは、探索すべき単語の最初の位置にある場合の大文字について、部分的なサポートを提供する。通常の表現に対して探索および置換を実行すると、検索された文字列に大文字がない場合に適切な置換大文字を特定することは困難である。「ｄａｔａ  ｅｌｅｍｅｎｔ」を探索して「ｓｅｇｍｅｎｔ  ｅｌｅｍｅｎｔ」に置換するために適用されたこの探索および置換は、Ｄａｔａ  ｅｌｅｍｅｎｔにはうまく機能するが、ｄａｔａ  Ｅｌｅｍｅｎｔにはうまく機能しない。
【００１１】
発明の名称「Ｍｏｒｐｈｏｌｏｇｉｃａｌ  ｓｅａｒｃｈ  ａｎｄ  ｒｅｐｌａｃｅ  ａｐｐｌｉｎｇ  ｔｏ  ｎａｔｕｒａｌ  ｌａｎｇｕａｇｅ」のマイクロソフト社の米国特許第５８７３６６０号は、同一の根の語を有する単語形式のセットを取り出すことによって単語の変化形を探索することを教示している。これは、探索および置換単語がスピーチの一部と一致することを意味する。入力された探索および置換単語の語形変化した形式を探索するためのこの解決策は、自然言語で書かれたテキストにとっては典型的である。なぜならば、語形変化した形式は、言語の文法規則を適用することによって、入力された探索および置換単語から派生可能だからである。しかしながら、この解決策では、例えばプログラミング言語であるテキストの入力された探索および置換単語の語形変化した形式を探索することはできない。なぜならば、語形変化した形式は、参照可能な既知の文法規則による入力された探索および置換単語とは関係のない、別の語彙構文上の形式だからである。
【００１２】
さらに、米国特許第５８７３６６０号のような自然言語に対する従来技術の解決策は、辞書に基づいている。辞書は、ある所定の語についての語形変化した単語形式のすべてを記録している。辞書を記憶するデータベースの大きさおよびこのデータベースを維持するためのコストは、時間の経過と共に非常に非現実的なものとなる。データベースのサイズおよびその発展の管理がなおさら非現実的なものとなるのは、単語の代わりに、プログラミング言語の場合のように、探索および置換機能を単語ばかりでなく表現にも適用させる必要がある場合である。この場合には、辞書は、可能性のある単語のくみあわせのそれぞれについての各表現について語形変化した形式を含まなければならない。
【００１３】
よって、１つのパスで実行され、プログラミング言語で記述されたテキスト、または入力された探索または置換単語または表現の語形変化した形式が既知の自然言語の意味規則または文法規則に従わない単語または表現である他の種類のテキストに適用する、探索および置換編集機能が必要である。これらの言語によって、入力された探索または置換単語または表現の語形変化した形式は、同一の概念に対する別の認定された語彙構文上の集大成となろう。
【００１４】
従って、本発明の目的は、自然言語であるとは限らない言語で記述されたテキスト上の、入力された探索および置換単語または表現あるいはこれらの入力の語形変化した形式またはその両方の探索および置換を１つのパスで実行するための方法を提供する。
【課題を解決するための手段】
【００１５】
請求項１から１４によれば、ユーザによって提供された初期探索表現および初期置換表現の対から開始するテキストの探索および置換編集動作を行うための方法、コンピュータ・プログラム、およびシステムが、初期探索表現および初期置換表現の許容される語形変化した形式を規定する各規則を初期探索および置換表現に提供して、規則に対して有効な初期探索表現および初期置換表現の派生対のすべてを識別することで、本目的は達成される。派生対の探索表現および置換表現は、初期探索および置換表現の語形変化した形式に対応する。その後、派生対の探索表現のテキスト内の各一致するものについて、テキスト内で置換するための派生対をユーザに対して提案する。ユーザ・インターフェースは、テキスト・エディタの通常のグラフィカル・ユーザ・インターフェースを通じて、またはテキスト・ベースの端末ユーザ・インターフェースを通じて行われる。探索および置換動作は、探索および置換コマンドを含むプログラムの実行を通じた受動的なものであってもよいし、または、プログラムの実行中に選択を行うようにユーザに要求することによる対話的なものであってもよい。
【００１６】
本発明の探索および置換方法は、自然言語を意識せずに、純粋な語彙構文上の変換を適用することによって形成される。単語または表現が自然言語で記述されている場合、任意の種類のテキストに対して適用するが、対応する自然言語についての文法規則を離れてテキストにおいて使用されてもよい。
【００１７】
本発明の方法は、単一の概念についての複数の構文上の形式に対して統一的な探索および置換機能を提供するものであって、これは、プログラミング環境において得に必要とされている。他の解決策は、単一の概念についての互いに異なる構文上の形式のまとまり全体において互いにリンクしない。
【００１８】
探索および置換は、複数ではなく単一の対話内で行われ、ユーザは、１つの探索および置換セッションを起動すればよい。他の解決策では、いくつかのパスを行なう必要がある。
【００１９】
本発明の好ましい実施の形態の解決策によって、単語または表現の許容される語形変化した形式を規定する規則のセットのみが記憶される。よって、入力された探索および置換単語または表現の語形変化した形式を記憶するための膨大な辞書を使用する必要がない。
【００２０】
本発明は、プログラミング・ツール以外の編集ツールにとっても有利となりうるだろう。それは実質的には探索および置換概念と同様に一般的である。実際、特にこの１５年間、プログラミングにおいては、名前の各形式が何らかの情報をプログラマに伝達し、かつその名前自体が概念情報を伝達するという、複数の形式の長い名前を極めて一貫して使用することが非常に重要視されてきた。最近では、いくつかのソフトウェア開発方法は、プログラム・ソース・コードの役割が究極の注意対象であることを強調しており、当該コードを開発するための試験的な方法に対して好意的である。これにより、プログラム・エディタが、本発明にとって第一級の対象となる。
【００２１】
プログラミングの領域外の例は、以下のようなものであろう。
ドメイン：苗字を使用する履歴、伝記
元のテキスト：
「エリントン公が生まれたのは…エリントンは特に…で知られている」
規則：
‐名前の称号→名前の称号
→名前の称号
→名前
適用：
‐探索および置換句（「エリントン公」，「皇太子」）
‐結果：
「皇太子が生まれたのは…皇太子は特に…で知られている」
【００２２】
本発明の解決策は、大きな言語依存データベースを必要とせず、より単純なアルゴリズムを使用してさらに完全な効果を生じさせるものである
【００２３】
本発明の解決策は、既存の探索および置換技術のほとんどの機能と組み合わせることによって改良可能である。例えば、一致するものをスキップする、またはそれを置換表現で置換するためにエンド・ユーザに与えられた従来の選択と完全に両立できる。探索表現において大文字または小文字を考慮するか否か、完全一致のみとするか、または単語の一部一致を容認するかというオプションとも両立でき、より一般的には、探索表現において通常の表現の使用と両立できる。さらに、コンピューティング環境によって単語がキーワードとして使用されていない場合という特定の事情においては、対応する自然言語についての文法規則に従うテキストの単語についての語形変化した形式がもしあればそれらを探索するための従来技術の任意の他の既存の解決策と組み合わせることもできる。
【００２４】
他の利点を以下に列挙する。
‐本発明の探索および置換機能は、変形を生成し、ユーザ自身が行うように要求することはない。これによって、時間が節約され、タイピングの誤りが防止される。また、これによって、探索および置換を行なう際に、ユーザが考慮しなければ特定の語形変化した形式が残ってしまうことも防止される。
‐例えばプログラミング・コード・テキストに対して適用する場合に、本発明の探索および置換は、テキストの単語のみを考慮すればよく、プログラムの論理表現は考慮しなくてよいので、（このことは、開発工程においてしばしば生じる）不完全で不正確なプログラム・テキストに対処する。最も強力な他の解決策の中には（特にリファクタリング・ツール）、プログラミングの誤りに対して許容性が低いものもある。
‐本発明の解決策は、既存の探索および置換機能アーキテクチャに統合することができ、本発明を実施するコストが低くなる一方、ユーザにとって単純明快ともなる。
‐本発明の探索および置換方法は、柔軟性のある拡張可能かつカスタマイズ可能なやり方で行われる。エンド・ユーザ組織は、企業、部署、チーム、および個人ベースでその要求に対する解決策を適応させることができる。
‐本方法の動作モードは、ある他のドメインからのプログラマまたはユーザに非常に理解しやすい。
‐上述のように、本発明の方法は、複数のプログラミング言語に適用でき、プログラミングの範囲を超えた他の正式な言語に対しても適用できる可能性を有する。
【発明を実施するための最良の形態】
【００２５】
図１は、好ましい実施の形態に係る本発明の方法のシステム環境を説明している。本発明の好ましい実施の形態は、コンピュータ上で実施するソフトウェア・プログラムである。テキスト・エディタ（１２０）が、オペレーティング・システム（１００）上にインストールされており、これに対してグラフィカル・ユーザ・インターフェース（１１０）を提供している。テキスト・エディタ（１２０）によって、エンド・ユーザは、テキスト（１２）を視覚化および修正することができる。他の機能の中では、テキスト・エディタ（１２０）は、エンド・ユーザに対して、探索および置換ダイアログ（１２２）によって具体化された探索および置換機能を提供する。本発明は、探索および置換ダイアログ（１２２）の機能を、プログラミング指向の探索および置換拡張（１２３）によって拡張するが、この入力、出力、および動作については、他の図面を参照して本明細書において詳細に後述する。この拡張は、エディタの探索および置換機能に織り込まれなければならない。これは、場合によっては、外部のＡＰＩの使用によって可能であってもよいと期待されているが、一般的には、エディタのソース・コードを修正しなければならなくなろう。後者の場合には、必要な修正は、前記エディタの探索および置換モジュールに対して主に影響を与えるが、明確に規定されたモジュールにそのコードが組織化されていない場合には例外である。本発明は、探索および置換を含む、事実上すべてのテキスト編集ソフトウェア・パッケージ内で実施することができる。例としては、統合開発環境といった好ましい実施の形態において開示されるものよりも十分なユーザ・インターフェースを有するシステム、または端末指向のテキスト・エディタといったより簡易なユーザ・インターフェースが挙げられる。探索および置換機能は、テキストに対する提案された変更をユーザが選択的に承諾または拒否するための対話手段を提供するのが好ましいが、これは必須ではない。
【００２６】
図２は、好ましい実施の形態の方法を実行する際に使用される構成要素を示す。
【００２７】
なお、ユーザ・インターフェースは、テキスト・エディタの通常のグラフィカル・ユーザ・インターフェースを通じて、またはテキスト・ベースの端末ユーザ・インターフェースを通じて行われてもよい。探索および置換動作は、探索および置換コマンドを含むプログラムの実行を通じた受動的なものであってもよいし、または、プログラムの実行長に選択をおこなうようにユーザに要求することによる対話的なものであってもよい。好ましい実施の形態において、既存のテキスト・エディタのグラフィカル・ユーザ・インターフェースを通じて、および、ユーザとのダイアログを通じた対話的なやり方で行われる。
【００２８】
ユーザ・インターフェースは、テキスト・エディタの下で、探索および置換ダイアログ（１２２）をテキスト（１２１）にインターフェースする。探索および置換ダイアログは、テキスト（１２１）に作用し、ユーザ入力を、探索および置換入力領域（２２１）および置換ダイアログ制御領域（２２２）で収集する。探索および置換入力領域（２２１）は、ほとんどのテキスト編集ソフトウェア・パッケージにおいて従来から存在し、
‐１つ以上の単語から構成されなければならない、探索表現を収集するための入力領域と‐探索表現として形成される、置換表現を収集するための入力領域と、
‐ゼロから数多くのオプション（大文字と小文字とを区別するか否か、全文書を探索するか否かなど）と
を実質的に備える。
【００２９】
置換ダイアログ制御領域は、置換表現で置換したいかどうかを探索表現の一致するものベースでユーザが判断することができる数個のグラフィカル・コントロールから従来構成されている。これは、すべての残りの一致するものを置換するためのオプションまたは他の同様の改良によって拡張されることが多い。本発明の好ましい実施の形態において、任意の所定の一致するものについての可能な置換表現すべてを探索表現に表示する複数選択インターフェースが追加される。規則記憶装置（２３０）において指定された規則と、テキスト（１２１）の詳細な内容によっては、各探索表現は、０個、１個、または数多くの一致するものを有してもよく、もしあれば、一致するものはそれぞれ、１個または数多くの置換表現を生じさせてもよい。数多くの置換表現が可能である場合はいつでも、置換ダイアログ制御領域（２２２）は、ユーザに対して、ユーザにとって好ましい置換表現を選択する（また一致するものを共にスキップする）可能性を与えなければならない。置換制御領域には、別個の探索表現が１回に１つずつ列挙され、各探索表現についての可能な置換表現のすべてが列挙される。
【００３０】
規則データベース（２３０）は、探索および置換対に対して適用されなければならない変換規則を含んでいる。変換規則に対しては、制約はほとんど適用されない（実際には、決して失敗してはならず、空列を返してはならない）。よって、プログラミング言語で歩かないかを問わず、任意の正式な言語の要求に対処することができる。この趣旨で、本発明の様々な実施の形態が互いに異なるプログラミング言語、またはより高次の正式な言語（例えば、パターン・マッチング・エンジン）さえも使用してもよい。規則の一例は、入力列のすべてのアルファベット文字を大文字で始めて、残りの他の文字を変更しないようなＪａｖａ（登録商標）方法である。これは、本発明の好ましい実施の形態の方法特有および本質的な部分である。探索および置換対データベース（２４０）は、規則（２３０）を探索および置換ダイアログ（１２２）に入力された探索および置換対に対して適用することによって取得された探索および置換対を重複なしで記憶する。
【００３１】
変形生成エンジン（２５０）は、探索および置換ダイアログ（１２２）に入力された初期探索および置換対の列に適用して、語形変化した形式を取得する。初期探索および置換対の語形変化した形式は、探索および置換対データベース（２４０）に記憶される。変形生成エンジン（２５０）は、規則データベース（２３０）のすべての可能な規則を初期探索および置換対に実質的に適用して、その後、重複分を削除する。重複の削除は、すべての可能な変形の生成後に行う、生成中にちょうど間に合うように行うことができる。変形生成エンジン（２５０）技術は、様々な性質のものでありうる。本発明の好ましい実施の形態においては、Ｊａｖａ方法として記述された規則（２３０）を活用することが可能な、Ｊａｖａクラスまたはクラスのクラスタであろう。
【００３２】
テキスト（１２１）内の一致するものの指標は、探索および置換対（２４０）をポイントする探索表現を記憶する。テキスト内の指標の一例は、テキスト（１２１）内の一致するものの位置と、一致する文字列のテキスト内の範囲とを記憶することができ、それに対して、一致する探索表現の識別子が付加される。テキスト・エディタ（１２０）によっては、探索および置換動作中に一致するものを正式に記憶することを既に確立および活用してもよい。本発明は、一致するものそれぞれについて一致する探索表現を少なくとも示すことによって従来のものを補足する、より十分な一致データベース（２６０）を必要とする（本発明が関与しない場合には、探索表現は一意である）。
【００３３】
従来の検索エンジン（２７０）は、テキスト（１２１）内における探索および置換対（２４０）の探索表現について一致するものを識別して、一致データベース（２６０）の入力を生じさせることができる。本発明は、検索エンジン（２７０）をほとんどの場合に修正することなく活用することが可能であろうことが期待されているが、各パスが所定の探索表現について一致するものを収集する、複数の探索パスが必要となる場合がある。
【００３４】
図３は、本発明の好ましい実施の形態において実施されるような探索および置換動作のフローチャートである。探索および置換動作が開始されると（３００）、ユーザは、探索および置換ダイアログ（１２２）の探索および置換領域（２２１）を通じて探索および置換対を入力（３１０）する。規則データベースに記憶された変換規則は、探索および置換対に適用されて（３２０）、当該対についての語形変化した形式を探索し、探索および置換対データベース（２４０）に記憶させる（本ステップについてのさらなる詳細は、図４に提供されている）。検索エンジン（２７０）は、テキスト（１２１）を検索して（３３０）、探索および置換対データベース（２４０）の探索表現の一致するものを探索する。探索された一致するものは、一致データベース（２６０）に記憶される。一致するものがすべて探索されると、一致データベース（２６０）で取り出された一致するものそれぞれ（テスト３４１にはいと回答）は、テキスト（１２１）の対応部分において探索および置換ダイアログによって強調表示される。置換制御領域（２２２）には、一致するものについてのすべての可能な置換表現が供給され（３４３）、これらは、探索表現がステップ３４０において探索された一致するもののうちの１つと同一である、探索および置換対データベース（２４０）内で探索される探索および置換対の置換部分である。置換制御領域（２２２）によって、置換表現または置換なしというユーザの選択が収集される（３４４）。ユーザが置換なしを選択する場合（テスト３４５にいいえと回答）、新たな一致するものが読み出され（３４０）、一致データベースで一致するものがすべて取り出される（テスト２４１にいいえと回答）まで（終了３９０）、新たなループ（３４２〜３４６）が行われる。ユーザが置換を選択する場合（テスト３４５にはいと回答）、強調表示されたテキストは、ステップ３４４においてユーザによって選択された置換表現に置換され（３４６）、その後、新たに一致するものが一致データベースで取り出される。
【００３５】
なお、本発明の他の実施の形態がある。図３のフローチャートにおいて与えられている例において、一致するものすべてがまず収集され（３００〜３３０）、その後、一致するものすべてが記憶されると、所定の順序でユーザに対して表示される（３４０〜３９０）。他のオプションの１つとして、一旦計算された結果を表示するというものもありうるだろう。
【００３６】
一致するものを表示するための順序も可変である。好ましい選択の１つは、各異なる探索表現について、同じ探索表現で始まる一致対のすべてを連続して表示するというものであってもよい。他の選択としては、探索表現の一致するものがテキスト内で現れる順序で一致対を表示するというものであってもよい。探索および置換動作が最も簡単になる３つ目の可能性としては、可能な置換の語形変化した形式のすべてのうちの第１のユーザ選択が、テキスト内の以前の一致するものに対して行った以前のユーザ選択に対応する置換の語形変化した形式であると提案することである。
【００３７】
図４は、図３の変換規則（３２０）を適用するためのステップの可能な実施形態の詳細を示す。ステップ（３２０）は、規則データベースに記憶された変換規則を探索および置換対に適用して、当該対についての語形変化した形式を探索するためのものである。このステップは、ステップ３１０の実行後に開始して、入力は、表現の対からなり、第１の要素は探索表現であり、第２の要素は置換要素である。これらは、ユーザのインターフェースが受動的である場合、またはグラフィカル・ユーザ・インターフェースの探索および置換ダイアログ（１２２）を通じて、図３の入力された探索および置換対（３１０）ステップ中に、エンド・ユーザからプログラム内で実行されるべきコマンドとして提供される。好ましい実施の形態のオプションは、グラフィカル・ユーザ・インターフェースを使用することであって、好ましくは、ユーザとのダイアログを有する通常のエディタのグラフィカル・ユーザ・インターフェースを使用することである。ダイアログ・ボックスは、探索および置換フィールドと、他の編集オプションとを備える。画面の一部は、編修中のテキストの表示専用となっている。テキスト上では、ユーザによって行われる動作すべてが順次強調表示される。変換規則は、規則データベース（２３０）から取り出される（４１０）。ある規則が探索されると（テスト４１１にはいと回答）、ステップ４１０で取り出された現在の変換規則は、最初に受信された探索表現（４００）に適用され（４１２）、最初に受信された置換表現（４００）に適用される（４１３）。結果生じた探索および置換対は、初期探索表現について語形変化した形式と、初期置換表現について語形変化した形式とを備えてもよいように計算される。語形変化した形式を備えて「もよい」である理由は、言語の規則の中で、あるものは「変化なし」でありうるからである。「変化なし」を初期探索表現および初期置換表現（ｈｅｌｌｏ，ｂｙｅ）に適用すると、結果生じる対（ｈｅｌｌｏ，ｂｙｅ）を与える。この場合、結果生じる対は、語形変化した形式ではなく、エディタの基本の探索および置換機能と同様の初期表現を備える。
【００３８】
なお、連続して２つの規則を初期探索表現（４１２）および初期置換表現に適用する際に、結果生じる対は、第１のおよび第２の規則を探索表現および置換表現に独立して適用する際に取得されるカルテシアン積の対のすべてから形成されるのではない。逆に、以下の例でわかるように、派生対は、一方の規則に基づいて、他方の規則とは独立して計算される。明確にするために、一例として、一方がユーザによって提供された初期対（「ｈｅｌｌｏ」，「ｂｙｅ」）である場合に、規則「変化なし」を適用すると、１つの派生対（「ｈｅｌｌｏ」，「ｂｙｅ」）が取得され、規則「すべての文字を大文字にする」を適用すると、１つの派生対（「ＨＥＬＬＯ」，「ＢＹＥ」）が取得される。２つの規則を混合した場合に初期対からカルテシアン積で取得される（「ｈｅｌｌｏ」，「ＢＹＥ」）と（「ＨＥＬＬＯ」，「ＢＹＥ」）という対は、好ましい実施の形態の本方法に従った派生対であるとはみなされない。
【００３９】
結果生じる探索および置換対は、探索および置換対データベース（２４０）に記憶される（４１４）。新たな変換規則が、規則データベースで取り出される（４１０）。更なる規則が探索されない場合には（テスト４１１にいいえと回答）、重複探索および置換対が探索および置換データベース（２４０）で取り出される（４２０）。ある対が他の対と重複したものといえるのは、その探索表現が同一の長さを有し、かつ文字ベースで比較した際に第１の対の探索表現と同一である場合に限り、これは、置換表現に関しても同様である。重複が見つかった場合には（テスト４２１にはいと回答）、重複対は探索および置換対データベースから削除される（４２２）。ステップ３２０は、これ以上重複が見つからない場合に（テスト４２１にいいえと回答）終了する（４３０）。このステップの終了時点では、探索および置換対データベース（２４０）は、ステップ３１０においてユーザが入力した元の探索および置換対と、規則データベース（２３０）において特定された変換規則とで生成される、できる限り多くの固有の探索および置換対を備える。フローチャート（４３０）の終了は、ステップ３３０の実行へ進むことを意味する。
【００４０】
同じ効果に対する異なる戦略を他の実施の形態が実施してもよい。これらには、既存の対を探索および置換対データベース、または重複削除前の探索置換対データベースのような種類のものに付加しないという、ステップ４１０に対する選択的な挿入が含まれるが、これに限定されるわけではない。
【００４１】
図５は、グラフィカル・ユーザ・インターフェースを使用する本発明の好ましい実施の形態を示すものである。画像は、本発明の実施の形態から得た実際の画像取り込みではないが、画像操作ツールを使用して構成されている。この画像上には、右部分に、ユーザとコンピュータとの間のダイアログが、ユーザによって入力された所定の探索および置換要求（ｆｉｎｄ  ｈｅｌｌｏ，ｒｅｐｌａｃｅ  ｈｅｌｌｏ  ｗｏｒｌｄ）についてコンピュータからユーザへ提供された置換の提案と共に表示されている。画像の左部分には、編集中のテキストが表示され、ユーザによって入力された所定の探索および置換要求（ｆｉｎｄ  ｈｅｌｌｏ，ｒｅｐｌａｃｅ  ｈｅｌｌｏ  ｗｏｒｌｄ）についてコンピュータからユーザへ提供された他の置換の提案が示されている。本例において、テキストは、Ｊａｖａソース・コードであり、エディタは、Ｊａｖａソース・コード・エディタである。
【００４２】
探索および置換ダイアログが、画像の右部分に示されている。これは、ユーザが探索表現を入力する入力領域（５０１）を備える。これは、図２の探索および置換領域（２２１）の一部と一致するものであり、他の部分が５０２として実施されている。また、テキスト（１２０）において同じく強調表示された現在の一致するもの、すなわち５０４を繰り返すことができるので、図３の探索および置換ダイアログを供給するステップ（３４３）における役割を果たしてもよい。
【００４３】
ユーザが置換表現を入力するために、現在の一致するものについての可能な派生のすべてを示すためのドロップ・ダウン・リストと共に、第２の入力領域が使用される。これは、探索および置換入力領域（２２１）の一部と一致するものであり、置換制御領域（２２２）の中核の機能を実施するものである。
【００４４】
図３および図４のフローチャートに記載されているように、ユーザが探索および置換表現を入力すると、コンピュータは、各規則を探索および置換表現に適用して、規則に従って、探索表現または置換表現あるいはその両方の可能な派生形式を探索する。探索および置換の計算された派生形式に対応する対応対が記憶される。その後、コンピュータは、記憶された対の探索部分のテキスト内で一致するものを探し、記憶された対の置換部分に従って、提案された置換部分と一致するものについて対を構築する。重複する探索および置換対は削除される。その後、コンピュータは、記憶された対の探索部分のテキスト内で一致するものを探し、一致するものを記憶する。その後、一致するものについてそれぞれ順に、一致する対の一致する探索表現および置換表現が、ダイアログの同一の探索および置換入力領域（５０１，５０２）を通じてユーザに提案される。
【００４５】
図５の画像の右部分に、ユーザは探索「ｈｅｌｌｏ」および置換「ｈｅｌｌｏ  ｗｏｒｌｄ」を入力しており、コンピュータは、２つの一致対を提案している。
‐規則「変化なし」に対応する（ｈｅｌｌｏ，ｈｅｌｌｏ  ｗｏｒｌｄ）
‐規則「２番目およびそれ以降の単語を大文字で始めて、白スペースを削除する」に対応する（ｈｅｌｌｏ，ｈｅｌｌｏＷｏｒｌｄ）
【００４６】
ユーザは、置換領域（５０２）において、第１または第２の規則に従って一致するものに対する置換か、変化させずにそのままとするかを選択する機会を有する。画像において、「ｈｅｌｌｏＷｏｒｌｄ」が強調表示されており、これは、第２の規則に従った一致するものに対する置換がユーザによって選ばれたことを意味する。
【００４７】
図５の画像の左部分は、編集中のＪａｖａコードを示す。顧客によって入力された入力領域の同一の探索（ｈｅｌｌｏ）および置換（ｈｅｌｌｏ  ｗｏｒｌｄ）値に対応して、コンピュータは、規則「全単語を大文字で始めて、白スペースを削除する」に対応して、一致対（Ｈｅｌｌｏ，ＨｅｌｌｏＷｏｒｌｄ）（５０３）を提案している。
【００４８】
テキストにおいて、一致するもの（５０４）が灰色となっており、初期探索単語または表現との一致をユーザに対して示している。
【００４９】
画像の右部分に戻ると、ダイアログは、探索および置換ダイアログの他の従来のオプションを示している。「完全一致」チェック・ボックスをクリックすることによって、ユーザは、コンピュータが一致するもの５０４を提案することを除外してもよい。探索および置換の実施のこの機能は、本発明の好ましい実施の形態に特に固有なものではないが、既存の探索および置換技術との両立性の一例を与えるものである。
【００５０】
本発明の好ましい実施の形態において使用されるデータベース（規則２３０、探索および置換対２４０、一致するもの２６０）は、要素が比較的少なく、これらの要素は寿命が短い（典型的には、所定の探索および置換セッションが経過すると使用されないことになろう）。従って、本発明の実施の形態は、動作環境に対する他の制約および望ましい機能以外の要件（性能、メモリのフットプリントなど）によっては、メモリ内の一過性リストから、記録、そして完全に発達したデータベースの範囲のデータベースについての様々な実施を使用することができよう。
【００５１】
なお、「表現（ｅｘｐｒｅｓｓｉｏｎ）」および「語形変化した形式（ｉｎｆｌｅｃｔｅｄ  ｆｏｒｍ）」の意味は、一般化できる。なぜならば、少なくとも１つの単語は１つの単語のみに対応していもよいと考えられるからである。同様に、規則によって許容される初期探索表現および初期置換表現の語形変化した形式は、規則が「変更なし」である場合は、同一の初期探索表現および初期置換表現でありうる。
【図面の簡単な説明】
【００５２】
【図１】好ましい実施の形態に係る本発明の方法のシステム環境である。
【図２】本発明の好ましい実施の形態とその隣接する事情とを構成する構成要素を示す。
【図３】本発明の好ましい実施の形態において実施されるような探索および置換動作のフローチャートである。
【図４】図３の変換規則（３２０）を適用するためのステップの可能な実施形態の詳細である。
【図５】グラフィカル・ユーザ・インターフェースを使用する本発明の好ましい実施の形態の図である。
【図１】
2009521026.tif 000003
【図２】
2009521026.tif 000004
【図３】
2009521026.tif 000005
【図４】
2009521026.tif 000006
【図５】
2009521026.tif 000007
【手続補正書】
【提出日】平成21年2月17日(2009.2.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
テキストの探索および置換編集動作を行う方法であって、
ユーザによって提供された初期探索表現および初期置換表現を備える表現の対を前記ユーザから収集するステップと、
前記初期探索表現および前記初期置換表現の許容される語形変化した形式を規定する各規則について、前記規則を読み出し、前記規則を前記初期探索表現に適用し、および、前記規則を前記置換表現に適用するステップであって、これにより、前記初期探索表現の語形変化した形式と前記初期置換表現の語形変化した形式とで形成された派生対を取得する、ステップと、
先行ステップにおいて計算されたすべての派生対に係る探索表現について、前記テキスト内で一致するものを識別するステップと、
先行ステップにおいて識別された各一致するものについて、探索表現として前記一致する探索表現を有する各派生対に係る、前記一致する探索表現と前記置換表現とを、前記ユーザに提供するステップと
を含む、方法。
【請求項２】
前記テキスト内で一致するものが識別された１つのみの派生対が前記ユーザに提供される度に、前記テキストにおいて、前記１つのみの派生対に係る置換表現で置換機能を実行するステップ
をさらに含む、請求項１に記載の方法。
【請求項３】
前記テキスト内で一致するものが識別された２つ以上の派生対が前記ユーザに提供される度に、前記ユーザに対して提供された前記２つ以上の派生対のうち１つの派生対を前記ユーザから収集するステップと、
前記テキストにおいて前記ユーザから収集された前記１つの派生対に係る置換表現で置換機能を実行するステップと
をさらに含む、請求項１または２に記載の方法。
【請求項４】
探索表現および置換表現の許容される語形変化した形式を規定する前記規則を第１の記憶手段に記憶する初期ステップをさらに含み、
前記規則を読み出す前記ステップは、前記規則を前記記憶手段から読み出すステップを含む、
請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記初期探索表現と前記初期置換表現とから派生したすべての派生対を第２の記憶手段に記憶するステップをさらに含み、
前記識別するステップは、前記派生対のすべてを前記第２の記憶手段から読み出すステップを含み、
探索表現として前記一致する探索表現を有する各派生対に係る、前記一致する探索表現と前記置換表現とを、前記ユーザに提供する前記ステップは、前記派生対を前記第２の記憶手段から読み出すステップを含む、
請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記一致するものを識別する前記ステップにおいて探索された前記テキスト内の前記一致するものすべてを第３の記憶手段に記憶するステップをさらに含み、
探索表現として前記一致する探索表現を有する各派生対に係る、前記一致する探索表現と前記置換表現とを、前記ユーザに提供する前記ステップは、前記一致する派生対を前記第３の記憶手段から読み出すステップを含む、
請求項１から５のいずれか１項に記載の方法。
【請求項７】
第３の記憶手段に記憶する前記ステップは、一致する前記探索表現の識別子が付加され、前記テキスト内の前記一致するものの場所と、一致する文字列の範囲とを備える、前記テキスト内の前記一致するものの指標を記憶するステップをさらに含む、
請求項６に記載の方法。
【請求項８】
前記ユーザから収集する前記ステップおよび前記ユーザに提供する前記ステップは、前記探索および置換編集動作が行われる前記テキストの部分を表示する領域を有するグラフィカル・ユーザ・インターフェースを通じて行われ、前記グラフィカル・ユーザ・インターフェースはさらに、前記探索表現を表示するフィールドと前記置換表現を表示するフィールドとを有し、前記表現は共に前記ユーザによって入力されるかまたは前記ユーザに対して提供される、
請求項１から７のいずれか１項に記載の方法。
【請求項９】
前記ユーザから収集する前記ステップおよび前記ユーザに提供する前記ステップは、コマンドを含むプログラムの実行によって行われる、
請求項１から７のいずれか１項に記載の方法。
【請求項１０】
前記ユーザに提供する前記ステップは、前記テキスト内で前記一致するものが識別された順で行われる、
請求項１から９のいずれか１項に記載の方法。
【請求項１１】
前記ユーザに提供する前記ステップは、前記派生対内の異なる前記一致する探索表現の順で行われる、
請求項１から９のいずれか１項に記載の方法。
【請求項１２】
前記規則を前記初期探索表現に適用する前記ステップ、および、前記規則を前記初期置換表現に適用する前記ステップは、重複する候補対を削除するステップをさらに含む、
請求項１から１１のいずれか１項に記載の方法。
【請求項１３】
テキストの探索および置換編集動作を行うための、コンピュータに備えられたコンピュータ・プログラムであって、当該コンピュータに、
ユーザによって提供された初期探索表現および初期置換表現を備える表現の対を前記ユーザから収集するステップと、
前記初期探索表現および前記初期置換表現の許容される語形変化した形式を規定する各規則について、前記規則を読み出し、前記規則を前記初期探索表現に適用し、および、前記規則を前記置換表現に適用するステップであって、これにより、前記初期探索表現の語形変化した形式と前記初期置換表現の語形変化した形式とで形成された派生対を取得する、ステップと、
先行ステップにおいて計算されたすべての派生対に係る探索表現について、前記テキスト内で一致するものを識別するステップと、
先行ステップにおいて識別された各一致するものについて、探索表現として前記一致する探索表現を有する各派生対に係る、前記一致する探索表現と前記置換表現とを、前記ユーザに提供するステップと
を実行させるための、コンピュータ・プログラム。
【請求項１４】
テキストの探索および置換編集動作を行うシステムであって、
ユーザによって提供された初期探索表現および初期置換表現を備える表現の対を前記ユーザから収集する手段と、
前記初期探索表現および前記初期置換表現の許容される語形変化した形式を規定する各規則について、前記規則を読み出し、前記規則を前記初期探索表現に適用し、および、前記規則を前記置換表現に適用する手段であって、これにより、前記初期探索表現の語形変化した形式と前記初期置換表現の語形変化した形式とで形成された派生対を取得する、手段と、
前記手段によって計算されたすべての派生対に係る探索表現について、前記テキスト内で一致するものを識別する手段と、
前記識別する手段によって識別された各一致するものについて、探索表現として前記一致する探索表現を有する各派生対に係る、前記一致する探索表現と前記置換表現とを、前記ユーザに提供する手段と
を備える、システム。
【国際調査報告】
2009521026.tif 000008
2009521026.tif 000009
2009521026.tif 000010