JP2005025265A - 文字列の入力のためのプログラム、および、文字列抽出のためのプログラム - Google Patents

文字列の入力のためのプログラム、および、文字列抽出のためのプログラム Download PDF

Info

Publication number
JP2005025265A
JP2005025265A JP2003186980A JP2003186980A JP2005025265A JP 2005025265 A JP2005025265 A JP 2005025265A JP 2003186980 A JP2003186980 A JP 2003186980A JP 2003186980 A JP2003186980 A JP 2003186980A JP 2005025265 A JP2005025265 A JP 2005025265A
Authority
JP
Japan
Prior art keywords
character string
document
element name
program
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003186980A
Other languages
English (en)
Other versions
JP4293348B2 (ja
Inventor
Naoki Katsuragawa
直己 桂川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to JP2003186980A priority Critical patent/JP4293348B2/ja
Publication of JP2005025265A publication Critical patent/JP2005025265A/ja
Application granted granted Critical
Publication of JP4293348B2 publication Critical patent/JP4293348B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Machine Translation (AREA)
  • Document Processing Apparatus (AREA)

Abstract

【課題】特許明細書などの符号付文書において、要素名に対応する符号を素早く入力できるプログラムを提供する。
【解決手段】ワープロ等の文書編集中に適宜の操作が行われた場合に、少なくとも以下の(1)〜(5)の手順を行う。(1)文書の編集位置に入力されている文字列から要素名(選択図では、「車輪」)を抽出する。(2)抽出された要素名(「車輪」)を、文書から検索する。(3)検索された位置を含む文字列を文書から取り出して解析し、前記(1)で抽出された要素名(「車輪」)に対応する符号(「6」,「7」)を取得する。(4)符号が複数得られた場合は、その符号を、並べて選択可能に画面に表示する(選択図は、表示された状態)。(5)ユーザに選択された符号を、文書の編集位置に自動入力する。
【選択図】 図11

Description

【0001】
【発明の属する技術分野】
本発明は、文書を入力する際の入力の利便性を向上するプログラムに関する。
【0002】
【従来の技術】
特許出願(特に機械系の特許出願)の願書に添付する明細書において、〔発明の実施の形態〕の欄で発明の構成を説明する際には、「この機体フレーム2は、」等というように、要素名(部品名,部材名,装置名)の直後に参照符号(以下「符号」という)を記載することが殆どである。一方、特許出願の願書に添付する図面においては、そこに描かれた部材(ここでは、機体フレーム)に、対応する符号2を引出し線とともに付すことになっている。
【0003】
この符号は、複雑な発明についての明細書等では100種類以上に達することもあり、発明者や弁理士、特許事務所の所員等の明細書の書き手としては、要素名と符号との対応関係を頭の中で正確に構築しきれない場合がある。
【0004】
この結果、「第一歯車15と第二歯車15とは、・・・」といったように、別々の部品に同一の符号をつける誤りを犯したりする。また、「この車両はハンドルコラム16を備え、当該ハンドルコラム17上にステアリングハンドル18を備えている。」といったように、同一の部品に異なる符号を付ける誤りを犯したりする。
【0005】
以上のような誤りを未然に防ぐために、明細書の書き手の中には、「要素名(部品名)−符号対応表」なるものを作って対応する者がいる。これは、明細書を書き進めて新しい符号を使うことになれば随時、別紙に、『1…乗用車両、2…機体フレーム、3…エンジン、・・・』といったように、使用した符号と要素名とを一対一で対応付けて書き込むようにするというものである。明細書を書く際に上記対応表を適宜参照すれば、上述のような誤りは未然に防ぐことができるし、上記誤りを犯したとしてもミスを発見できる確率を高めることができる。
【0006】
上記「要素名(部品名)−符号対応表」の作り方は、明細書の書き手によって様々である。
例えば、適宜の用紙に手書きで書き込む方法もある。あるいは、近時はパソコン上で動作するワードプロセッサアプリケーションに複数の文書を同時に開くことが可能なものが増えてきていることから、明細書としての文書と別に対応表用文書を開いて、対応表を文書として作成する等の方法を採用する者もいる。
【0007】
特許文献1は、符号を付加した多数の単語を使用する文書から、その単語を含む文字列を、これに付加した符号とともに抽出する装置を開示する。
この文献1に開示される装置は、当該装置の抽出結果をチェックすることで、上述のような誤りを事後的に簡便かつ自動的に発見できる点で優れている。
【0008】
特許文献2は、文書中の特定語句に対し自動的に符号を付ける文書処理方法や文書処理装置を開示する。
この文献2に開示される技術は、能率よく、かつミスなく文書を作成できる点で優れている。
【0009】
【特許文献1】
特開平9−259148号公報
【特許文献2】
特開平10−232867号公報
【0010】
【発明が解決しようとする課題】
しかし、上記特許文献1の構成は、あくまでも明細書がひととおり完成してから上記抽出作業を行わせて事後的チェックを行うことを主眼に開発されたものであり、明細書の作成途中で何度も全ての符号について検索・抽出を行わせるのは、パソコンのCPUの負荷が大きく抽出作業に時間も掛かり、また抽出結果のチェックに明細書の書き手の時間がとられるデメリットがあり、現実的ではない。
【0011】
言い換えれば、上記特許文献1の構成は、明細書を作成している途中で簡便に符号付けミスを発見できるような目的には、必ずしも適合的ではなかった。
【0012】
また、上記特許文献2の構成は、最初に符号抜きの状態の明細書を作成しておいてから一度に符号を付けるというものであり、どの要素名にどの符号を対応して付けるかについては、明細書の書き手の自由度が小さかった。
従って、例えば、明細書の第一実施形態の部分では100番台の符号を付し、第二実施形態の部分では200番台の符号を付す、というようなことは、この文献2の構成では難しかったのである。
【0013】
また、出願原稿の書き方として、図面に最初に符号を決定して付けてしまい、それから明細書を書き進めるようなスタイルをとることもあるが、上記文献2の構成では、図面に付したとおりに明細書に自動的に符号を付するのはほぼ不可能であった。加えて、「二つの装置のうち一方の装置1と他方の装置2」というように、「装置」という同一の要素名に違う符号を意図的に割り当てることは上記構成では不可能であって、明細書の書き方の自由度がそれだけ阻害されていると言わざるを得なかった。
【0014】
更には、この文献2の構成では、一旦符号を付した原稿に加除訂正を行い、新たに符号を振り直すのが困難であった。例えば実施形態追加型の国内優先権を主張するような場合、元の出願の原稿を流用してそれに新たな実施形態を書き加えて出願原稿とすることがあるが、新たに書き加えた部分について元の出願の符号と重複しないように符号を付すことは、困難かつ煩雑であった。
【0015】
加えて上記文献2の構成では、符号を付すべき名称に“@”や“¥”等の特別な識別記号を追加した状態の明細書を作成する必要があり、これは明細書原稿の作成作業を煩雑にするものであって、誤字脱字の増大原因にもなっていた。
【0016】
【課題を解決するための手段】
本発明の解決しようとする課題は以上の如くであり、次にこの課題を解決するための手段を説明する。
【0017】
即ち、請求項1においては、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の(a)〜(d)の手順を行う((a)文書の編集位置に入力されている文字列から要素名を抽出する。(b)(a)で抽出された要素名を、文書から検索する。(c)(b)で検索された位置を含む文字列を文書から取り出して解析し、(a)で抽出された要素名に対応する符号を取得する。(d)(c)で得られた符号に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。)ものである。
【0018】
なお、本明細書において「要素名」とは、文書において符号を伴って使われるべき名称をいう。
【0019】
請求項2においては、前記(b)において要素名が文書から複数検索されたときには、それぞれの検索位置において、前記(a)で抽出された要素名に対応する符号を取得するようにし、取得された符号同士で不一致がある場合には、互いに不一致である符号を並べて画面に表示してユーザに選択させ、選択された符号に基づき前記(d)の処理を行うものである。
【0020】
請求項3においては、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の(a)〜(d)の手順を行う((a)文書の編集位置に入力されている文字列から要素名の一部を抽出する。(b)(a)で抽出された要素名の一部を、文書から検索する。(c)(b)で検索された位置を含む文字列を文書から取り出して解析し、(a)で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得する。(d)(c)で得られた要素名と符号に基づき、文書の編集位置に完全な要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。)ものである。
【0021】
請求項4においては、前記(b)において要素名の一部が文書から複数検索されたときには、それぞれの検索位置において、前記(a)で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得するようにし、取得された要素名と符号の組同士で不一致がある場合には、互いに不一致である要素名と符号を並べて画面に表示してユーザに選択させ、選択された要素名と符号に基づき前記(d)の処理を行うものである。
【0022】
請求項5においては、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の(a)〜(d)の手順を行う((a)文書の編集位置に入力されている文字列から符号を抽出する。(b)(a)で抽出された符号を、文書から検索する。(c)(b)で検索された位置より前側の文字列を文書から取り出して解析し、(a)で抽出された符号に対応する要素名を取得する。(d)(c)で得られた要素名に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。)ものである。
【0023】
請求項6においては、前記(b)において符号が文書から複数検索されたときには、それぞれの検索位置において、前記(a)で抽出された符号に対応する要素名を取得するようにし、取得された要素名同士で不一致がある場合には、互いに不一致である要素名を並べて画面に表示してユーザに選択させ、選択された要素名に基づき前記(d)の処理を行うものである。
【0024】
請求項7においては、文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を取得し、取得された当該組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更するものである。
【0025】
請求項8においては、文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を複数取得し、取得された当該組を並べて選択可能に画面に表示し、ユーザによって選択された組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更するものである。
【0026】
請求項9においては、予め指定された語として、「この」「該」「前記」「上記」のうち少なくとも何れか一つを含むものである。
【0027】
請求項10においては、前記トリガ操作は、キーボードのキーを押す操作であるものである。
【0028】
請求項11においては、前記トリガ操作で押されるキーは、キーボードのホームポジションに指を置いたときに人差し指が位置する段のキーの何れかを少なくとも含むものである。
【0029】
請求項12においては、文書に入力されている文字列を変更する処理が終わった後、文書の編集位置は、要素名と符号の組の直後に自動的に移動されているものである。
【0030】
請求項13においては、前記選択は、キーボードのキー入力によって行うことが可能とされているものである。
【0031】
請求項14においては、少なくとも前記選択の際に、前記編集位置における要素名、要素名の一部、符号、あるいは予め指定された語の部分を、通常と異なる視覚的態様で表示するものである。
【0032】
請求項15においては、画面に並べて選択可能に表示される文字列は、その検索位置が前記編集位置に近いものが上に来るように、並べて表示されるものである。
【0033】
請求項16においては、与えられた文字列から要素名または要素名の一部に相当する文字列を抽出するプログラムであって、与えられた文字列の末尾側から先頭側に向かって、一文字にも二文字以上にもマッチ可能な第一のパターンにマッチするか否かを判定してゆき、初めてマッチした位置を要素名と要素名でない部分との境界であるとして文字列を抽出するものである。
【0034】
請求項17においては、前記第一のパターンが正規表現で表されているものである。
【0035】
請求項18においては、前記第一のパターンは、「常時」にはマッチし、「時」にはマッチしないパターンであるものである。
【0036】
請求項19においては、与えられた文字列のうち、第二のパターンにマッチする部分は、前記第一のパターンにマッチするか否かの判定を行わないものである。
【0037】
請求項20においては、前記第二のパターンが正規表現で表されているものである。
【0038】
請求項21においては、前記第一のパターンは「の」に少なくともマッチするパターンであり、前記第二のパターンは「第1の」に少なくともマッチするパターンであるものである。
【0039】
【発明の実施の形態】
次に、発明の実施の形態を図面を参照して説明する。
【0040】
本実施形態のプログラムは、例えば図1に示すようなパーソナルコンピュータで実行される。このパーソナルコンピュータ1は、パソコン本体2と、ディスプレイ3と、キーボード4と、マウス5と、プリンタ6と、を含んで構成される。
【0041】
図2のブロック図に示すように、パソコン本体2は、CPU21、メインメモリ22、ハードディスクドライブ23、フレキシブルディスクドライブ24等を備えている。ハードディスクドライブ23の記憶領域には、ワードプロセッサアプリケーション(以下、「ワープロ」)のプログラムや本実施形態の第1〜第4のプログラム等が記憶されており、これらのプログラムは必要に応じて前記メインメモリ22に読み込まれて、当該プログラムに書いてある手順がCPU21によって実行される。
【0042】
ワープロのプログラムは、ハードディスクドライブ23やフレキシブルディスクドライブ24等にファイルとして記憶されている文書データを編集対象文書として読み込み、その内容をディスプレイ3の画面に表示する。ワープロのユーザは、ディスプレイ3に表示されている文書の内容を見ながら、新しい文字列を当該文書に追加したり、文書の一部の文字列を削除したり、文書をプリンタ6で印刷したり、修正後の文書をハードディスクドライブ23に再記憶させたりすることができる。
【0043】
ディスプレイ3の表示画面の一例が、図3に示される。ワープロのプログラムは通常、文書の内容とともに、文書の編集位置を示すカーソル(キャレットともいう)cを、ディスプレイ3に併せて表示する。このカーソルの形態は、アンダースコア(下線)であったり、矩形であったり様々であるが、本実施形態では、カーソルcは、適当な時間間隔をおいて点滅する縦棒状の図形である。
【0044】
カーソルcの位置は、ユーザがキーボード4のカーソル移動キー(↑↓←→)を押したり、あるいは、マウス5を操作してディスプレイ3に表示された文書の適当の位置にマウスカーソル(図示せず)を合わせてクリックすることにより、変更することができる。
【0045】
そして、ユーザがキーボード4の適当な文字キーを入力すると、押された文字キーに対応する文字が、カーソルcが表示されている位置に挿入される形で入力される。また、キーボード4の削除キーを押すと、カーソルcの位置の文字が消去される。このようにして、文書の内容を編集することができる。
【0046】
本実施形態の第1〜第4のプログラムは、以上のような機能を有するワープロのプログラムにおいて、その機能を拡張する追加プログラムモジュールとして提供される。このようなプログラムモジュールは、アドイン或いはプラグインと呼ばれることがある。
【0047】
しかしながらこれに限るものではなく、ワープロのプログラムの不可分な一部としての形態で提供されても良いし、文書の内容を保存したファイル(文書ファイル)にマクロプログラムとして埋め込まれたり、文書の雛形のファイル(テンプレートファイル)にマクロプログラムとして埋め込まれたりする形態で提供されても良い。
【0048】
本実施形態の第1〜第4のプログラムは、例えばフレキシブルディスクやCD−ROM等の適宜の記録媒体に記録され、あるいはインターネットを介してサーバーコンピュータからダウンロードされて、図1に示すパソコン本体2にインストールされて使用される。このインストール作業によって、本実施形態のプログラムが、パソコン本体2のハードディスクドライブ23にコピーされ記憶される。
【0049】
プログラム言語は、例えばベーシックやC言語等、任意の言語で記述することができる。
【0050】
〔◆第1のプログラム;要素名(の一部)→要素名+符号〕
次に、本実施形態の第1のプログラムを説明する。
ワープロによる文書編集中に、上記図3の状態からユーザが、キーボード4から「この機体フレーム」という文字を打ち込んだとする。この場合は図4に示すように、文書に「この機体フレーム」の文字が追加され、カーソルcは「ム」のすぐ後ろに移動する。
【0051】
この状態でユーザは、特定の要素名(部材名、部品名)としての上記「機体フレーム」に対応する符号を入力したい場合に、キーボード4の特定のキーを押す(トリガ操作)。このトリガ操作は本実施形態では、[Ctrl]キーを押しながら[J]キーを押す操作(以下、[Ctrl]+[J]と表記)としているが、これに限るものでもない。
【0052】
ワープロのプログラム側では、上記[Ctrl]+[J]のトリガ操作がなされた場合には、前記拡張プログラムモジュールの第1のプログラムを実行する旨、予め設定されている。従って、このようなトリガ操作が行われた場合、ワープロのプログラムは拡張プログラムモジュールの内容をハードディスクドライブ23からメインメモリ22に読み込み、プログラムを実行する。
【0053】
次に、第1のプログラムのメインフローを、図5のフローチャートを参照しながら説明する。
【0054】
トリガ操作が行われて本プログラムが実行されると、先ずステップS1で、文書の編集位置(カーソルcの位置)から適当な長さの文字列が取り出され、これが要素名抽出サブルーチンに渡される。この結果、要素名(又は要素名の一部)が抽出され、当該抽出結果が文字列変数p1に記憶される(S1)。
【0055】
上述の要素名抽出サブルーチンは、要素名(又はその一部)を含む文字列を引数として受け取り、これから要素名(又はその一部)のみの文字列を抜き出して、戻り値として返すサブルーチンである。この要素名抽出サブルーチンの詳細は後述する。
【0056】
次に、変数p1の内容が空文字列か否かを判定する(S2)。空文字列であれば、編集位置に要素名も要素名の一部も入力されていなかった場合であるので、何も入力せず、終了する。
【0057】
ステップS2の判定で変数p1が空文字列でなかった場合は、文字列変数wを初期化する(S3)。この変数wは、文書から抽出された中で、条件に合う要素名と符号の組を重複なく記憶させておくためのものである。
【0058】
次に、上記ステップS1で得られた変数p1の内容(即ち、抽出された要素名)を、文書から検索する(S4)。変数p1が見つかると、その検索位置を含む範囲の文字列を文書から取り出して、文字列変数yにコピーする(S5)。この変数yの内容を後のステップS6〜S11で解析して、ステップS1で得られた要素名に対応する符号を得ることになる。
【0059】
次に、文字列変数yの中から符号を検索する(S6)。本実施形態では、符号の検索のために、正規表現(Regular Expression)のパターンを用いている。例えば、図6に示す正規表現のパターンを用いることができる。
【0060】
この図6のパターンは、数字、アルファベット、ギリシャ文字の符号(ダッシュが付加される場合も含む)にマッチし、例えば、「1」や、「a2」や、「α’」等にマッチする。
【0061】
正規表現のパターンによる検索を行わせるには、例えば、図6の正規表現パターンを非決定性オートマトンのデータ構造へ翻訳し、この非決定性オートマトンを文書内容のテキストに対して動作させることで可能である。本実施形態のプログラムは、ワープロのプログラムが前記正規表現を使った検索・置換機能を備えていることを前提に、その検索機能を呼び出すことで、ステップS6の検索を実現させている。勿論、この第1のプログラムが記述されている拡張プログラムモジュール自体に正規表現の検索・置換機能を独自に持たせたり、正規表現の機能を実現する拡張プログラムモジュールをワープロのプログラムに組み込むようにすれば、正規表現をサポートしないワープロでも上記判定を行わせることが可能である。
【0062】
符号が検索されると、検索された符号を文字列変数p3に記憶する(S7)。また、検索されたその符号の位置より前側の文字列を文字列変数yから取り出し、この取り出した文字列を前記要素名抽出サブルーチンに渡して要素名を抽出し、それを文字列変数p2に記憶する(S8)。
【0063】
次に、変数p2が変数p1と全く一致しているか、少なくとも変数p2の先頭側に変数p1が一致しているか、が判定される(S9)。一致していない場合はステップS6に戻り、次の符号の検索を行う。
【0064】
一致している場合は、前記ステップS7で記憶された符号の内容が、前記ステップS1で抽出された要素名(要素名の一部)に対応したものであることになる。
従って、この場合は、次に変数wの内容を調べ、変数p2の内容と変数p3の内容の組が既に変数wに存在していないか、を判定する(S10)。存在していない場合には、変数wに、変数p2の内容と変数p3の内容の組を追加して記憶し(S11)、ステップS6に戻って次の符号の検索を行う。存在していた場合は、何もせずステップS6に戻り、次の符号の検索を行う。
【0065】
ステップS6において文字列変数yから検索される全ての符号について、ステップS7〜S11の一連の処理が行われる。変数yの内容から全ての符号が検索され、ステップS6において符号がもう見つからなくなると、ステップS4に戻って、再び文書から変数p1を検索する。
【0066】
前記ステップS5〜S11の一連の処理は、文書の内容から変数p1が検索される毎に行われる。全ての変数p1の内容が検索され、ステップS4において文書からp1の内容がもう見つからなくなると、以下に説明するステップS12以降の処理を行う。
【0067】
ステップS12では、今までの処理において変数wに記憶された要素名と符号の組の数が判定される。
【0068】
0組であれば、文書中から適合する要素名と符号の組を見つけられなかったことになるので、何もせず終了する。
1組であれば、その変数wに記憶されている要素名と符号の組が編集位置に入力されている状態となるように、文書に入力されている文字列をプログラム側で自動的に変更する(S13)。
2組以上であれば、その変数wに記憶されている要素名と符号の組を、並べて画面に表示し、ユーザの選択待ちの状態になる(S14)。要素名と符号の組がユーザによって選択されると、その選択された要素名と符号の組が編集位置に入力されている状態となるように、文書に入力されている文字列をプログラム側で自動的に変更する(S15)。
【0069】
以上がメインルーチンであり、次に、要素名抽出サブルーチンについて説明する。
【0070】
このサブルーチンは、引数として文字列を受け取って、その末尾側から抽出した要素名(又はその一部)の文字列を戻り値として返すサブルーチンである。要素名を抽出できなかった場合は、空文字列を戻り値として返す。
【0071】
要素名抽出サブルーチンのフローは図7に示され、このサブルーチンは、呼び出されると先ず、引数として渡された文字列を文字列変数qにコピーして記憶させる(S101)。
【0072】
次に、この文字列変数qについて、正規表現による所定のパターン(第一のパターン)にマッチするかどうかを判定する(S102)。この所定のパターンとは、要素名(部品名)を通常は構成しない文字あるいは文字列を列挙したものであって、例えば図8のように表される。このパターンは、「の」「は」「い」「る」「ら」「や」「つ」「み」等の平仮名や、「、」「。」「=」等の記号、「該」「略」「各」「上記」等の接頭語、「結局」「若干」「常時」「勿論」等の副詞、「平成」「特許文献」「実施例」等の要素名を構成しないことが予め判っている名詞、に少なくともマッチする。このパターンは上述のとおり、一文字(「の」、「。」)にも、二文字以上(「結局」、「実施例」)にも、マッチ可能である。
【0073】
文字列変数qが上記正規表現のパターンとマッチするかを調べるには、例えば、当該正規表現を非決定性オートマトンのデータ構造へ翻訳し、この非決定性オートマトンを文字列変数qの内容に対して動作させることで可能である。
【0074】
前記パターンの末尾にはドル記号($)が付いているが、これは、正規表現において、[文字列の末尾にマッチする]という意味の特殊文字(メタ文字)である。即ち、文字列変数qの末尾に前記「の」「は」「。」「上記」「結局」等が現れるときに、前記パターンがマッチすることになる。また、上記パターンの「¥n」「¥r」は改行文字を意味する。
【0075】
上記サブルーチンでは、上記パターンにマッチするまで、変数qの末尾側を一文字ずつ削除しながらループし(S102〜S103)、上記処理を反復する。即ち、このステップS102〜S103の処理で、引数として与えられた文字列の末尾側から先頭側に向かって、前記第一のパターンにマッチするか否かを判定してゆくことになる。
【0076】
上記パターンにマッチした場合は、上記ループを抜けるとともに、マッチしたときの変数qの文字数分だけ、当初に引数として渡された文字列の先頭側を削除し、残った文字列(即ち、マッチした位置から末尾側の文字列)を、前記サブルーチンは戻り値として返す(S104)。即ち、第一のパターンに初めてマッチした位置が、要素名と要素名でない部分との境界であるとして、当該境界より末尾側の文字列を戻り値として返すのである。この戻り値が抽出結果になる。
【0077】
次に、図4の例でプログラムが実行された場合、上記第1のプログラムが実際にどのように動作するのか、より詳細に説明する。
【0078】
図4の状態で[Ctrl]+[J]のトリガ操作がされた場合、本プログラムは図5のフローのステップS1で、文書の編集位置に入力されている文字列を取り出す。具体的には、文書におけるカーソルcの現在位置の前側(文書先頭側)から適当な長さの文字列を取り出し、適当な文字列変数(ここでは、文字列変数x)に記憶する。図4の状態から[Ctrl]+[J]が押された場合、カーソルcの位置の前側8文字、「この機体フレーム」という文字列が取り出され、この内容が文字列変数xに記憶される。
【0079】
文書からどれだけの長さの文字列を取り出すかは、抽出できる要素名の最大文字数に影響する。本実施形態では説明を簡素化するために8文字としているが、「アクチュエータユニットアッセンブリ」(17文字)のような長い要素名が使われる場合があることを考慮して、もっと長い文字数を取り出して変数xに記憶させるようにしてもよい。実用上は、30文字もあれば十分である。
【0080】
次に、取り出されて変数xに記憶された文字列「この機体フレーム」から、符号を付けるべき名称(要素名)を抽出することになる。これは、前記要素名抽出サブルーチンに文字列変数xの内容(「この機体フレーム」)を引数として渡し、当該サブルーチンを実行することで実現される。
【0081】
サブルーチンでは図7のフローのステップS101で、引数として渡された「この機体フレーム」が、文字列変数qにコピーされる。次にステップS102で、この変数qが上述の正規表現のパターン(第一のパターン、図8)にマッチするか否かが判定される。今回はマッチしないので、文字列変数qの内容は、その末尾側が1文字削除される結果、「この機体フレー」になる(S103)。
【0082】
ステップS102〜S103のループが繰り返され、文字列変数qの内容が「この機体フレー」→「この機体フレ」→「この機体フ」→「この機体」→「この機」→「この」と変化しながら、それぞれ第一のパターンにマッチするか判定される。これは、引数として与えられた「この機体フレーム」の末尾側から先頭側に向かって、第一のパターンにマッチするか否かを判定していくことと同等である。
【0083】
そして、文字列変数qの内容が「この」となったときに、その内容に「の」が末尾に現れる形となって、上記第一のパターンに初めてマッチする。ここで、初めてマッチしたときにおける文字列変数qの長さ(「この」=2文字)は、実質的に、第一のパターンにマッチした位置を意味することになる。そして、この位置、即ち、「の」と「機」の間の位置が、要素名と要素名でない部分との境界であることが判る。
【0084】
マッチしたことが判定されれば、ループを抜けるとともに、文字列変数qの長さ分だけ、渡された文字列「この機体フレーム」の先頭側を削除する。今回は、変数qの内容は「この」=2文字であるから、2文字分だけ、「この機体フレーム」の先頭側が削除される。結局、前述した境界の位置より末尾側の文字列が残ることになる。こうして残った末尾側の「機体フレーム」が、要素名(又はその一部)であるとして、戻り値として返される(S104)。
【0085】
以上のように、本実施形態のプログラムは、「この機体フレーム」という文字列変数xの内容を前記サブルーチンに引数として渡して当該サブルーチンを実行することで、「機体フレーム」を戻り値として得る。この結果、文書の編集位置から「機体フレーム」という要素名を抽出することができ、この抽出結果であるところの「機体フレーム」が文字列変数p1に記憶される。以上がステップS1の処理である。
【0086】
図5に戻って説明する。ステップS2では変数p1の内容が空文字列であるか否かが判定されるが、今回は変数p1の内容は「機体フレーム」であって空文字列でないので、そのままステップS3に進む。
【0087】
なお、変数p1の内容が空文字列となるのは、例えば、「この」と入力したのみでトリガ動作を行った場合である。即ち、「この」を上記要素名抽出サブルーチンに渡しても、当該文字列からは要素名もその一部も抽出することができないので、前記サブルーチンは空文字列を戻り値として返す。この場合は、要素名もその一部も抽出できなかったのであるから、何も入力されず終了することになる。
【0088】
ステップS3では、文字列変数wが、適宜の区切り文字(本実施形態では、“@”)で初期化される(即ち、w ←「@」)。区切り文字は“@”に限らずどのような文字でも良く、2文字以上の文字の組合せであっても良いが、要素名としても符号としても通常使われないような文字(文字の組合せ)とすることが必要である。
【0089】
次にステップS4で、編集対象文書から、上記抽出された要素名「機体フレーム」を検索する。検索範囲は、現在の編集対象文書の文書データから、カーソルcの位置にある「機体フレーム」を除いた範囲である。
【0090】
なお、文書の一部のみを検索範囲に設定することも可能である。例えば、カーソルcより先頭側の文書データからのみ検索し、カーソルcより末尾側の文書データは検索しないといったようにである。また、文書データそのものから検索を行うのではなく、文書データのコピーを適宜の文字列変数に記憶させ、この文字列変数の内容から検索を行っても差し支えない。
【0091】
上記例では「機体フレーム」が1行目と2行目の2箇所に記述されているので(図4参照)、ステップS4の処理では最初に、1行目の「機体フレーム」が先ず検索される。
【0092】
次に本プログラムは、検索された「機体フレーム」の位置(図4の第1行目の「機体フレーム」の位置)より、前側と後側の文字を含めて適当な長さの文字列を取り出し、適宜の文字列変数(ここでは、文字列変数y)に記憶する(S5)。前側・後側の文字を取り出す長さは、適宜定めれば良い。上記例では、例えば、検索された位置の「機体フレーム」に、その前後各9字ずつを含めて、「この乗用車両1は、機体フレーム2にエンジン3を支」というように文書から取り出され、この内容が文字列変数yに記憶される。以下のステップS6〜S11で示すように、この文字列変数yの内容を解析することで、「機体フレーム」に対応する符号を得ることになる。
【0093】
ステップS6では、上記文字列変数yから符号を検索する。上記変数yの内容は「この乗用車両1は、機体フレーム2にエンジン3を支」であるので、符号は最初に「1」が検索される。検索された場合、当該符号の内容を変数p3に記憶させるとともに(S7)、文字列変数yで当該符号が検索された位置より前側から文字列を取り出し、これを文字列変数zに記憶する。
【0094】
具体的には、文字列変数zの内容は、「この乗用車両」になる。この文字列変数zを前記要素名抽出サブルーチンに引数として渡して当該サブルーチンを実行すると、「乗用車両」が戻り値として得られる。この戻り値は文字列変数p2に記憶される(S8)。
【0095】
次に、得られた文字列変数p2の内容(第二文字列)と、前記文字列変数p1の内容と、が比較される(S9)。p2の内容は「乗用車両」であり、p1の内容は「機体フレーム」であり、両者は一致していない。即ち、p3の内容「1」は、「機体フレーム」に対応する符号ではなかったことになる。従って、ステップS6に戻る。
【0096】
ステップS6で、変数yの内容(「この乗用車両1は、機体フレーム2にエンジン3を支」)から次の符号を検索すると、次の符号は「2」であって、これがステップS7において変数p3に記憶される。また、符号「2」の前側から取り出される文字列(文字列変数zの内容)は、「この乗用車両は、機体フレーム」になる。この文字列変数zの内容を前記要素名抽出サブルーチンに引数として当該サブルーチンを実行すると、「機体フレーム」が戻り値として得られる。これが変数p2に記憶される。
【0097】
ステップS9で変数p2と変数p1とが比較されるが、変数p2の内容は「機体フレーム」であり、これは、変数p1の内容と完全に一致している(p2=p1)。これは、p3の内容「2」が、「機体フレーム」に対応する符号ということになる。従って、ステップS10で、変数wの内容が調べられる。変数wの内容は「@」であり、「機体フレーム2」(変数p2と変数p3の組)が記憶されていない。従って、変数wの末尾側に、「機体フレーム2」と、前記区切り文字「@」が追加される。変数wの内容は、ステップS11の処理の結果、「@機体フレーム2@」になる。そうして、ステップS6に戻る。
【0098】
ステップS6にて変数yの内容(「この乗用車両1は、機体フレーム2にエンジン3を支」)から次の符号を検索すると、次の符号は「3」であって、これが変数p3に記憶される(S7)。また、文字列変数zの内容は「この乗用車両は、機体フレーム2にエンジン」であって、これから要素名「エンジン」が抽出されて変数p2に記憶される(S8)。しかし、これは「機体フレーム」と一致しないので(S9)、p3の内容「3」は「機体フレーム」に対応する符号ではないことになるから、ステップS6に戻る。
【0099】
変数yの内容から3箇所の符号全てが検索されたので、ステップS6において、もう符号は検索できない。従って、ステップS4に戻る。
【0100】
ステップS4において、「機体フレーム」は、次に、文書の2行目から検索される。変数yの内容は、「持するとともに、該機体フレーム2に前車軸4および後」となる(S5)。
【0101】
ステップS6に進み、変数yの内容から符号を検索すると、先ず「2」が検索され、これが変数p3に記憶される(S7)。また、文字列変数zの内容は「持するとともに、該機体フレーム」であって、これから要素名「機体フレーム」が抽出されて変数p2に記憶される(S8)。変数p1と変数p2はいずれも「機体フレーム」で一致しているので(S9)、p3の内容「2」は「機体フレーム」に対応する符号であることになり、ステップS10に進む。変数wの内容は「@機体フレーム2@」であり、変数p2と変数p3の組が変数wに既に追加され存在している。従って、変数wの内容には変更を加えず、ステップS6に戻る。
【0102】
ステップS6で変数yの内容から次の符号を検索すると、次の符号は「4」であって、これが変数p3に記憶される(S7)。また、文字列変数zの内容は「持するとともに、該機体フレーム2に前車軸」であって、これから要素名「前車軸」が抽出されて変数p2に記憶される(S8)。しかし、これは「機体フレーム」と一致しないので(S9)、p3に記憶されている符号「4」は「機体フレーム」に対応する符号でないことになり、ステップS6に戻る。
【0103】
ステップS6ではもう符号が検索できずステップS4に戻り、また、ステップS4でも「機体フレーム」は既に2箇所検索したので、もうこれ以上は見つからない。従って、ステップS12に進む。
【0104】
ステップS12では、変数wの記憶内容が調べられるが、当該内容は「@機体フレーム2@」である。即ち、要素名と符号の組が、1つ記憶されている。従って、この要素名と符号が、カーソルcの位置に入力された状態となるように、プログラム側で自動入力する(S13)。
【0105】
今回は「機体フレーム」は文書から1行目と2行目の2箇所検索され、その2箇所の検索位置の何れについても、「機体フレーム」に対応する符号として「2」が取得されている。即ち、それぞれの検索位置において取得された符号が何れも「2」であり、不一致がない。本プログラムでは、1行目の「機体フレーム」の検索位置で符号「2」が取得されたときには変数wに記憶されるが、更に2行目の「機体フレーム」の検索位置で符号「2」が取得されたときは、改めて同じ内容を変数wに重複記憶させないようにする(ステップS10の判断)。従って、変数wの内容は「@機体フレーム2@」と一組だけ記憶される形となり、ステップS14〜S15のようにユーザの選択操作を待たず、「機体フレーム2」が編集位置に入力された状態となるようにプログラム側で自動入力することになる。
【0106】
ステップS13での自動入力の態様としては、図9(a)のように符号の部分「2」だけを挿入する形で入力しても良いし、図9(b)のように、抽出された文字列(変数s1の内容であるところの「機体フレーム」)を編集位置から削除し、改めて要素名と符号「機体フレーム2」を入力しても良い。
【0107】
以上により、ユーザは、要素名「機体フレーム」を打ち込んで[Ctrl]+[J]のトリガ操作を行うのみで、当該要素名に対応する符号「2」を自動的に入力させることができる。即ち、従来は、「機体フレーム」という要素名に符号「2」が対応することを頭で記憶しておき、或いは文書の前の部分で逐一確認して、当該符号「2」をキーボード4から打ち込んでいたが、そういう手間は本実施形態では省けることになる。この結果、キータッチ回数は減り、文書の入力所要時間は減り、特許明細書の書き手の頭脳負担は著しく緩和される。
【0108】
なお、S14〜S15の処理が行われるのは、例えば図10の状態から[Ctrl]+[J]のトリガ操作を入力した場合である。図10の文書内容は図3の文書内容と殆ど同じであるが、符号「6」と符号「7」の要素名として、何れも「車輪」が用いられている点で、図3と異なる。
【0109】
図10のように「この車輪」とキーボード4から入力してトリガ操作([Ctrl]+[J])を行った場合、カーソルcの位置から「車輪」が要素名として抽出され(S1)、この「車輪」は文書から5行目・6行目・10行目の計3箇所検索される(S4)。フローの詳細な流れは説明しないが、5行目の「車輪」の検索位置からは符号「6」が、6行目の「車輪」の検索位置からは符号「7」が、10行目の「車輪」の検索位置からは符号「7」が、それぞれ取得される(S7)。
【0110】
5行目の「車輪」の検索位置から符号「6」が取得されたときは、文字列変数wの内容に「車輪6」が追加され(S11)、その結果、「@車輪6@」になる。次に6行目の「車輪」の検索位置から符号「7」が取得されたときは、「車輪7」は「車輪6」とは一致せず、文字列変数wの内容に「車輪7」が存在していないことになる(S10)。従って、文字列変数wの内容に「車輪7」が追加され(S11)、「@車輪6@車輪7@」になる。さらに、10行目の「車輪」の検索位置で符号「7」が取得されたときは、ステップS10の判定の結果、文字列変数wの内容(「@車輪6@車輪7@」)に既に「車輪7」が存在しているので、文字列wの内容に変更は加えられない。
【0111】
このように、「車輪」の検索位置が複数存在し、その検索位置のそれぞれで取得された符号が「6」と「7」で互いに不一致があるので、文字列変数wの内容は、「@車輪6@車輪7@」と、要素名と符号の組が2組記憶されることになる。この結果、検索終了後のステップS12の判定の結果、ステップS14〜S15の処理に移る。
【0112】
ステップS14の処理では、上記2組の文字列「車輪6」「車輪7」を、入力候補として、図11のように画面に表示する。表示する位置は、画面のカーソルcの位置の近傍とすると、ユーザの視線の移動距離が小さくて済むので望ましい。
【0113】
図11では「車輪6」「車輪7」というように、取得された符号を要素名とともに表示している。しかしながらこの表示態様に限定されず、「6」「7」のように、符号のみを表示しても良い。画面に表示する形式は、本実施形態では所謂ポップアップメニュー形式であるが、これに限定せず、例えばダイアログを表示させるようにしても良い。表示する位置も、カーソルcの位置の近傍に限らず、例えば、ワードプロセッサアプリケーションで文書を表示する領域の隅に表示するようにしても良い。
【0114】
このとき、前記p1の記憶内容である「車輪」の部分を、視覚的に他と異なる態様で表示することが望ましい。「車両」に対応する符号が入力候補として表示されていることを、ユーザが素早く判別できるからである。
本実施形態では「車輪」の部分を図11のように白黒反転状に表示しているが、これに限らず、書体(フォント)を変えたり、太字にしたり下線を付したり、赤や青等の色を付したりして良い。要は、通常とは異なる視覚的態様で表示できれば十分である。
【0115】
図11に示すように、本実施形態で表示される入力候補には、各組ごとに、「(J)」「(K)」等のアクセスキーの表示が付されている。また、「J」「K」の部分には、下線が付されている。これは、上記の候補が表示された状態において、キーボード4から[J]キーを入力すれば「車輪6」を、[K]キーを入力すれば「車輪7」を、それぞれ選択できることを示している。
【0116】
ユーザは図11の状態から、[J][K]の何れかのキーを押して選択する。例えば[K]キーを入力することで、文書の編集位置に「車輪7」が入力されている状態となるように、文書に入力されている文字列を変更する(S15)。例えば、予め入力されている「車輪」に続けて、残りの「7」をプログラム側で自動入力させるようにすれば良い。
【0117】
なお、上記第1のプログラムは、「機体フレーム」というように完全な要素名を入力しないでも、符号名を入力することができる。即ち、「機」「機体」「機体フ」のように要素名の先頭側一部のみを入力して[Ctrl]+[J]のトリガ操作を行った場合でも、「機体フレーム2」と、要素名の残りと符号を自動的に入力することができる。
【0118】
以下、これを説明する。例えば、上記図3の状態からユーザが、キーボード4から「この機体フ」という文字を打ち込んだとする。この場合は図12に示すように、ディスプレイ3上に「この機体フ」の文字が追加され、カーソルcは「フ」のすぐ後ろに移動する。なお、「機体フ」は、要素名「機体フレーム」との関係では、要素名の先頭側一部の文字列である。
【0119】
この状態で[Ctrl]+[J]のトリガが行われた場合、図5のフローにおけるステップS1で、「この機体フ」を要素名抽出サブルーチン(図7にフローを示す前述したサブルーチンである)に引数として渡し、これから抽出された要素名の一部として「機体フ」(戻り値)を得て、変数p1に記憶する。
【0120】
後は前述した場合と同様に、編集対象文書から変数p1(要素名の一部であるところの「機体フ」)を検索して(S4)、得られた検索位置を含む文書範囲から文字列を取り出して変数yにコピーする(S5)。この結果、変数yは「この乗用車両1は、機体フレーム2にエンジン」となる。後述のステップS6〜S11で、この変数yを解析して、「機体フ」を一部に含む完全な要素名と、この要素名に対応する符号を取得することになる。
【0121】
ステップS6で変数yの内容(「この乗用車両1は、機体フレーム2にエンジン」)から符号を検索すると、符号「1」が検索されて変数p3に記憶され(S7)、このときの要素名は「乗用車両」と抽出されて変数p2に記憶されるが(S8)、ステップS9の判定の結果、「乗用車両」は「機体フ」と一致していないので、ステップS6に戻る。
【0122】
ステップS6で変数yの内容(「この乗用車両1は、機体フレーム2にエンジン」)から次の符号を検索すると、符号「2」が検索されて変数p3に記憶され(S7)、このときの要素名は「機体フレーム」と抽出されて変数p2に記憶される(S8)。ステップS9において、変数p2の内容「機体フレーム」の先頭側に、変数p1の内容「機体フ」が一致することが検出される。また、変数wの内容は「@」である(S10)。従って、変数wに変数p2の内容と変数p3の内容の組が追加され、「@機体フレーム2@」となる(S11)。
【0123】
以上のような検索処理の反復が全て終了した後は、ステップS12で変数wの内容が調べられるが、変数wの内容は「@機体フレーム2@」であり、要素名と符号が1組だけ記憶されているので、その内容が編集位置に入力される(S13)。入力の態様としては、図13(a)のように、残りの部分(即ち、「レーム2」)を挿入する形で入力しても良いし、図13(b)のように、「機体フ」の部分を編集位置から削除して、改めて「機体フレーム2」を入力しても良い。
【0124】
以上の機能により、ユーザ側としては、「機体フ」のように要素名の先頭側一部のみを入力して[Ctrl]+[J]のトリガ操作を行うだけで、要素名の残りと符号(「レーム2」)を自動的に入力することができる。従って、符号の入力の手間・時間のほか、要素名の入力の手間・時間の一部さえも省くことができる。また、要素名の全体をハッキリ正確に記憶していなくても、要素名の先頭側の1文字〜数文字だけを正確に記憶しておけば、それを入力して前記トリガ操作を行うだけで正確な要素名と符号を入力できるので、明細書の書き手の頭脳負担はより一層低減される。
【0125】
次に、図3の状態から「この操向」と入力してトリガ操作([Ctrl]+[J])を行った場合、即ち、図14の状態でトリガ操作を行った場合の、前記第1のプログラムの動作について説明する。
【0126】
この場合、ステップS1で、「この操向」を要素名抽出サブルーチンに引数として渡して実行すると、戻り値「操向」が得られる。当該戻り値「操向」(要素名の一部)が、変数p1に記憶される。
【0127】
後は前述した場合と同様に、編集対象文書から変数p1(「操向」)を検索して(S4)、得られた検索位置を含む範囲から文字列を取り出して変数yにコピーする(S5)。「操向」は最初に文書の6行目から検索され、変数yの内容は、「前車軸4の両端には操向輪7を固定している」となる。
【0128】
ステップS6で変数yの内容(「前車軸4の両端には操向輪7を固定している」)から符号を検索すると、符号「4」が検索されて変数p3に記憶され(S7)、このときの要素名は「前車軸」と抽出されて変数p2に記憶されるが(S8)、ステップS9の判定の結果、「前車軸」は「操向」と一致していないので、ステップS6に戻る。
【0129】
ステップS6で改めて変数yの内容(「前車軸4の両端には操向輪7を固定している」)から次の符号を検索すると、符号「7」が検索されて変数p3に記憶され(S7)、このときの要素名は「操向輪」と抽出されて変数p2に記憶される(S8)。ステップS9において、変数p2の内容「操向輪」の先頭側に、変数p1の内容「操向」が一致することが検出される。また、変数wの内容は「@」である(S10)。従って、変数wには変数p2の内容と変数p3の内容の組が追加され、「@操向輪7@」となる(S11)。
【0130】
符号の検索は全て終わったのでステップS6からステップS4に戻り、次の「操向」は10行目から検索される。変数yの内容は、「運転座席には、前記操向輪7の向きを変更さ」となる(S5)。ステップS6では変数yの内容から符号「7」が先ず検索されて変数p3に記憶され(S7)、このときの要素名は「操向輪」と抽出されて変数p2に記憶される(S8)。また、ステップS9において、変数p2の内容「操向輪」の先頭側に、変数p1の内容「操向」が一致することが検出される。しかしステップS10において、変数wの内容は「@操向輪7@」であり、変数p2の内容と変数p3の内容の組は既に記憶されているので、何もせずステップS6に戻る。
【0131】
符号は変数yの内容中に前記「7」の1箇所のみしか現れなかったので、ステップS6からステップS4に戻り、次の「操向」は11行目から検索される。変数yの内容は、「を変更させるための操向ハンドル8が備えら」となる(S5)。ステップS6では符号「8」が検索されて変数p3に記憶され(S7)、このときの要素名は「操向ハンドル」と抽出されて変数p2に記憶される(S8)。また、ステップS9において、変数p2の内容「操向ハンドル」の先頭側に、変数p1の内容「操向」が一致することが検出される。更には、ステップS10において、変数wの内容は「@操向輪7@」であり、変数p2の内容と変数p3の内容の組(「操向ハンドル8」)は未だ記憶されていない。従って、変数wには変数p2の内容と変数p3の内容の組が追加され、「@操向輪7@操向ハンドル8@」となる(S11)。
【0132】
以上で全ての「操向」の検索位置についての処理が終わり、ステップS12に進む。ステップS12では変数wの内容が調べられるが、ここで記憶されているのは、「操向輪7」と「操向ハンドル8」の2組である。即ち、取得された要素名と符号の組が、「操向輪7」と「操向ハンドル8」であり、互いに不一致である。
【0133】
この場合はステップS14の処理に移り、上記2組の文字列を、入力候補として、図15のように画面に表示する。
【0134】
このとき、前記p1の記憶内容である「操向」の部分を、視覚的に他と異なる態様で表示することが望ましい。「操向」に先頭側で一致する要素名が入力候補として表示されていることを、ユーザが素早く判別できるからである。
本実施形態では「操向」の部分を図15のように白黒反転状に表示しているが、これに限らず、書体を変えたり、下線を付したり、赤や青等の色を付したりして良い。要は、通常とは異なる視覚的態様で表示できれば十分である。
【0135】
図15に示すように、本実施形態で表示される入力候補には、各組ごとに、「(J)」「(K)」等のアクセスキーの表示が付されている。また、「J」「K」の部分には、下線が付されている。これは、上記の候補が表示された状態において、キーボード4から[J]キーを入力すれば「操向輪7」を、[K]キーを入力すれば「操向ハンドル8」を、それぞれ選択できることを示している。
【0136】
ユーザは図15の状態から、[J][K]の何れかのキーを押して選択する。例えば[J]キーを入力することで、文書の編集位置に「操向輪7」が入力されている状態となるように、文書に入力されている文字列を変更する(S15)。例えば、予め入力されている「操向」に続けて、残りの「輪7」をプログラム側で自動入力させるようにすれば良い。
【0137】
以上に示すように、要素名の先頭側一部のみ(「操向」)を入力して[Ctrl]+[J]のトリガ操作を行うだけで、要素名の残りと符号を自動的に入力することができる。また、要素名の一部に対応する要素名と符号の組が文書中から複数見つかった場合には(「操向輪7」と「操向ハンドル8」)、それを自動入力の選択肢として画面に並べて表示してユーザに選択させるようにしているので、ユーザ側としては、簡単な操作で、的確な要素名と符号を素早く入力することが可能になる。
【0138】
また、本実施形態では、キーボード4のキーを押すだけで入力候補の選択が可能であるので、ユーザにとって選択の作業が容易である。
【0139】
図14に示すように、上記例においては、編集位置(カーソルcの位置)は14行目であり、「操向輪7」は6行目と10行目に、「操向ハンドル8」は11行目に現れる。この結果、図15に示すように、入力候補では、検索された位置が文書先頭に近い「操向輪7」が上側に表示され、それより文書末尾側で検索された「操向ハンドル8」は下側に表示されることになる。
【0140】
しかしながら、これに限らず、文書編集位置(カーソルcの位置)に近い位置で検索されたものが上に来るように、入力候補の表示順が設定されても良い。つまり、カーソルcの位置に近い位置で検索された「操向ハンドル8」を上側に、より遠い位置で検索された「操向輪7」を下側に、それぞれ表示しても良い。これは例えば、「操向」の検索時に検索された位置を記憶しておき、入力候補の表示時に検索位置をキーに並べ替え処理を行ったり、あるいは、図5に示すフローチャートのステップS5で、文字列変数p1の内容をカーソルcの位置から文書先頭側に向かって検索するようにしたりすることで実現される。この場合、ユーザが直近に入力した要素名と符号の組ほど上側に表示されることになるので、ユーザの入力候補の選択作業が容易に且つ素早く行えるという利点がある。
【0141】
なお、前述の要素名抽出サブルーチンで用いられる図8のパターンは、一文字にも二文字以上にもマッチ可能であるので、要素名の柔軟かつ的確な抽出が可能とされている。
【0142】
具体例を挙げると、前記図8のパターン(第一のパターン)は、二文字の「常時」にはマッチするが、一文字の「時」にはマッチしないようになっている。このメリットを、「本実施形態の腕時計1の内部において、ピニオン2は常時ラック3に噛み合っている。」という文から要素名を取り出す場合の例を引いて説明する。
【0143】
前記第一のパターンが仮に「時」にマッチするとすると、上記の文から取り出した「ピニオン2は常時ラック」という文字列からは要素名を「ラック」と適切に抽出できるが、「本実施形態の腕時計」という文字列からは、「時」にマッチしてしまうので、要素名は「腕時計」と抽出できず、「計」と不適切に抽出されてしまう。
【0144】
この点、本実施形態では、上記の文から「ピニオン2は常時ラック」という文字列を取り出して要素名抽出サブルーチンに渡した場合、「常時」がマッチするので、要素名を「ラック」と適切に抽出することができる。一方、「本実施形態の腕時計」という文字列を取り出して要素名抽出サブルーチンに渡した場合、「時」はマッチしないので、要素名を「腕時計」と適切に抽出することができる。
【0145】
このように、本実施形態の要素名抽出サブルーチンは、一文字にも二文字以上にもマッチ可能なパターンを用いてパターンマッチングを行うので、要素名の抽出を柔軟に行わせるようにパターンを設定できる。
【0146】
更に、前記第一のパターンは図8のように正規表現を用いて表現されているので、複雑なマッチング条件を容易かつ適切に設定できるメリットがある。例えば図8に示すパターンのマッチング条件を仮に正規表現を使わずにプログラムで実現しようとすると、膨大かつ複雑なプログラムコードとなってしまうが、本実施形態ではそのようなことをせずに済むのである。
【0147】
〔要素名抽出サブルーチンの別例〕
次に、要素名抽出サブルーチンの別例について、図16を参照しながら説明する。
このサブルーチンも図5の要素名抽出サブルーチンと同様、引数として文字列を受け取って、その末尾側から抽出した要素名(又はその一部)の文字列を戻り値として返すものである。
【0148】
別例のフローは図16に示され、このサブルーチンは、呼び出されると先ず、引数として渡された文字列を文字列変数qにコピーして記憶させる(S111)。
【0149】
次に、この文字列変数qの内容について、正規表現による所定のパターン(第二のパターン)に一致する部分が、“{”“}”で囲まれるように置換する(S112)。
この第二パターンは、例えば、「第1」「第1の」にマッチするほか、「Oリング」「やすり」「つまみ」「ばね」「すくい面」「ねじ」にマッチし、例えば図17のように表される。
【0150】
次に、ステップS113〜116の部分で、ループ処理が行われる。このループでは先ず、前記文字列変数qについて、その末尾が“}”であるか否かを判定する(S113)。末尾が“}”である場合は、次に現れる“{”まで、変数qの末尾側を削除し(S114)、再びステップS113に戻る。即ち、“{”“}”で囲まれている部分(第二のパターンにマッチした部分)については、前記第一のパターンにマッチするか否かの判定処理(S115)を行わないのである。
【0151】
文字列変数qの末尾が“}”でなかった場合、変数qが所定のパターンにマッチするかどうかを判定する(S115)。このパターンは、図7のサブルーチンのステップS102で使われるパターン(図8に示す第一のパターン)と、全く同一のパターンが用いられる。
【0152】
ステップS115で前記パターンにマッチしなかった場合は、変数qの末尾側を1文字削除し(S116)、再びステップS113に戻る。
【0153】
ステップS115で上記パターンにマッチした場合は、上記ループを抜けるとともに、ステップS117で、変数qの内容から、“{”“}”を削除する。
【0154】
そして、削除された後の変数qの文字数分だけ、当初に引数として渡された文字列の先頭側を削除し、残った文字列を戻り値として返す(S118)。
以上が変形例の要素名抽出サブルーチンの処理である。
【0155】
この変形例のサブルーチンの具体的な動作について、例を挙げて説明する。ここでは、引数として「第2のつまみは、この第1のつまみ」という内容が渡され、当該サブルーチンが実行されたとする。
【0156】
ステップS111において、文字列変数qには、上記渡された内容「第2のつまみは、この第1のつまみ」がそのままコピーされる。そしてステップS112の置換の結果、文字列変数qの内容は、「{第2の}{つまみ}は、この{第1の}{つまみ}」となる。
【0157】
次いでステップS113の判定で変数qの末尾が“}”となっているのが検出されるので、ステップS114で、“{”が現れるまで、変数qの末尾側が削除される。ここでは、「{つまみ}」の部分が削除され、文字列変数qの内容は、「{第2の}{つまみ}は、この{第1の}」となる。
【0158】
再びステップS113の判定に戻るが、ここでも変数qの末尾が“}”となっているのが検出されるので、ステップS114で、“{”が現れるまで、変数qの末尾側が削除される。ここでは、「{第1の}」の部分が削除され、文字列変数qの内容は、「{第2の}{つまみ}は、この」となる。
【0159】
更にステップS113の判定に戻るが、変数qの末尾は“}”以外である。従ってステップS115で、上記正規表現のパターン(第一のパターン)にマッチするか否か、判定が行われる。変数qの末尾には「の」が現れているので、第一のパターンにマッチする。この結果、ループを抜け、ステップS117の処理に移る。
【0160】
ステップS117で、文字列変数qの内容から“{”“}”の文字を削除する。この結果、文字列変数qの内容は「第2のつまみは、この」となる。
【0161】
次いでステップS118で文字列変数qの文字数が調べられるが、変数qの内容は「第2のつまみは、この」であって10文字である。従って、当該サブルーチンに引数として渡された内容「第2のつまみは、この第1のつまみ」から先頭側10文字を削除し、残った「第1のつまみ」という文字列を、戻り値として返す。
【0162】
なお、図7に示した要素名抽出サブルーチンでは、「第2のつまみは、この第1のつまみ」という文字列を渡して実行したとしても、文字列変数qの末尾が「み」となって前記第一のパターンにマッチしてしまうので、空文字列を返してしまう。また、例えば「この第1の装置」という文字列を図7の要素名抽出サブルーチンに渡して実行した場合、「の」が前記第一のパターンにマッチしてしまう結果、「装置」という要素名が返るのみで、「第1の装置」というように的確に抽出できない。
【0163】
この点、別例に係る要素名抽出サブルーチン(図16)であれば、上記文字列から、「第1のつまみ」と適切な要素名を抽出することができる。即ち、ひらがなの要素名(「つまみ」「すくい」「ねじ」)や、「第○の」を伴う要素名等を、的確かつ柔軟に抽出することができるのである。
【0164】
更に、前記第二のパターンは第一のパターンと同様、図17のように正規表現を用いて表現されているので、複雑なマッチング条件を容易かつ適切に設定できるメリットがある。
【0165】
図16のサブルーチンでは、ステップS112で、第二のパターンに一致する部分が“{”“}”の文字で囲まれるように置換している。しかし、明細書中に“{”“}”の文字を使用する場合もあり、この場合は、他の文字(あるいは文字の組合せ)を使用すると良い。例えば、“{”“}”の代わりに“&¥#”“^_@”を使うことが考えられる。
【0166】
〔◆第2のプログラム;符号→要素名+符号〕
次に、符号を入力してトリガ操作をしたときに要素名を自動入力する機能について説明する。この機能は、そのフローを図18に示す第2のプログラムによって実現される。
【0167】
図18に沿って説明する。トリガ操作が行われて第2のプログラムが実行されると、まずステップS201で、文書の編集位置(カーソルcの位置)から適当な長さの文字列が取り出され、これが符号抽出サブルーチンに渡される。この結果、符号が抽出され、当該抽出結果が変数p1に記憶される(S201)。
【0168】
上述の符号抽出サブルーチンは、符号を含む文字列を引数として受け取り、これから符号のみを抜き出して、戻り値として返すサブルーチンである。この符号抽出サブルーチンの詳細は後述する。
【0169】
次に、得られた変数p1が空文字列か否かを判定する(S202)。p1が空文字列であれば、編集位置に符号が入力されていなかった場合であるので、何も入力せず、終了する。
【0170】
ステップS202の判定で変数p1が空文字列でなかった場合は、変数wを初期化する(S203)。この変数wは、文書から抽出された、条件に合う要素名と符号の組を記憶させておくためのものである。
【0171】
次に、上記ステップS201で得られた変数p1の内容を、文書から検索する(S204)。変数p1が見つかると、その検索された位置より前側の適宜長さの文字列を取り出して、前述した要素名抽出サブルーチンに引数として渡して、当該サブルーチンを実行する。こうして得られた抽出結果を、変数p2に記憶する(S205)。
【0172】
次に変数p2の内容が空文字列か否かが判定される(S206)。空文字列である場合は、ステップS204に戻り、次のp1の検索を行う。
【0173】
空文字列でない場合は、変数p2の内容が変数wに含まれているか否かが判定される(S207)。含まれていない場合は、p2の内容を変数wに追加して記憶する(S208)。含まれている場合は、ステップS204に戻り、次のp1の検索を行う。
【0174】
前記ステップS204〜S208の一連の処理は、文書の内容から変数p1が検索される毎に行われる。全てのp1が検索され、ステップS204において文書からp1の内容がもう見つからなくなると、以下に説明するステップS209以降の処理を行う。
【0175】
ステップS209では、今までの処理において変数wに記憶された要素名の数が判定される。
【0176】
0組であれば、文書から適合する要素名を見つけられなかったことになるので、何もせず終了する。
1組であれば、編集位置の符号をいったんプログラム側で自動的に削除した上で、変数wに記憶されている要素名を、符号(p1の内容)とともに、編集位置に自動的に入力する(S210)。この結果、変数wに記憶されている要素名と符号の組が文書の編集位置に入力されている状態となる。
2組以上であれば、その変数wに記憶されている要素名を並べて画面に表示し、ユーザの選択待ちの状態になる(S211)。要素名がユーザによって選択されると、編集位置の符号をいったん削除した上で、その選択された要素名を、符号(p1の内容)とともに、編集位置に入力する(S212)。この結果、ユーザが選択した要素名が、文書の編集位置に入力されている状態となる。
以上がメインルーチンである。
【0177】
次に、符号抽出サブルーチンについて説明する。このサブルーチンは、引数として文字列を受け取って、その末尾側から抽出した符号の文字列を戻り値として返す。符号を抽出できなかったときは、空文字列を戻り値として返す。
【0178】
符号抽出サブルーチンのフローは図示しないが、例えば、引数として渡された文字列に対し正規表現のパターンマッチングを行い、マッチした場合は、文字列のうちマッチした部分を取り出して戻り値として返し、マッチしない場合は空文字列を戻り値として返すようにすれば良い。パターンとしては、例えば、符号を検索するために用いた図6に示すパターンに、文字列の末尾にマッチする意のメタ文字たるドル記号($)を付加した、図19に示すものを用いれば良い。
【0179】
次に、図21の例で前記第2のプログラムが実行された場合、当該第2のプログラムが実際にどのように動作するのか、より詳細に説明する。図21は、図3の状態から「この3」とキーボード4から打ち込んだ状態である。
【0180】
ワープロのプログラム側では、[Ctrl]+[J]のトリガ操作がされた場合は、拡張プログラムモジュールの前記第2のプログラムを実行するよう、予め設定してある。
【0181】
この図21の状態から[Ctrl]+[J]のトリガ操作がされた場合、本プログラムは図18のフローのステップS201で、今あるカーソルcの位置の前側(文書先頭側)から適当な長さの文字列を取り出し、適当な文字列変数(ここでは、文字列変数x)に記憶する。図21の状態から[Ctrl]+[J]が押された場合、カーソルcの位置の前側3文字、「この3」という文字列が取り出され、この内容が文字列変数xに記憶される。
【0182】
どれだけの長さの文字列を取り出すかは、抽出できる符号の最大文字数に影響する。本実施形態では説明を簡素化するために3文字としているが、「1013b’」(6文字)のような長い符号が使われる場合があることを考慮して、もっと長い文字数を取り出すようにしてもよい。実用上は、10文字もあれば十分である。
【0183】
次に、取り出された文字列「この3」から、符号を抽出することになる。これは、前記符号抽出サブルーチンに文字列変数xの内容(「この3」)を引数として渡し、当該サブルーチンを実行することで実現される。
【0184】
サブルーチンでは、引数「この3」に図19のパターンを用いたマッチングを行う。すると、「3」がマッチするので、この「3」を戻り値として返す。こうして得られた符号「3」が、文字列変数p1に記憶される。
【0185】
図18に戻って説明する。ステップS202ではp1の内容が空文字列であるか否かが判定されるが、今回は変数p1の内容が「3」であって空文字列ではないので、そのままステップS203に進む。
【0186】
なお、変数p1の内容が空文字列となるのは、例えば、「この」と入力したのみでトリガ操作を行った場合である。即ち、「この」を上記符号抽出サブルーチンに渡しても、当該文字列には図19のパターンがマッチしないので、前記サブルーチンは空文字列を戻り値として返す。この場合は、符号を抽出できなかったのであるから、何も入力されず終了することになる。
【0187】
ステップS203では、文字列変数wが、適宜の区切り文字(本実施形態では、“@”)で初期化される(即ち、w ←「@」)。区切り文字は“@”に限らずどのような文字でも良く、2文字以上の組み合わせであっても良いが、要素名として通常使われないような文字(文字の組み合わせ)とすることが必要である。
【0188】
次にステップS204で、編集対象文書から、上記抽出された符号「3」を検索する。検索範囲は、現在の編集対象文書の文書データから、カーソルcの位置にある「3」を除いた範囲である。
【0189】
なお、編集対象文書の一部のみを検索範囲に設定することも可能である。例えば、カーソルcより先頭側の文書データからのみ検索し、カーソルcより末尾側の文書データは検索しないといったようにである。また、文書データそのものから検索を行うのではなく、文書データのコピーを適宜の文字列変数に記憶させ、この文字列変数の内容から検索を行っても差し支えない。
【0190】
このステップS204の検索では、図20に示す正規表現を用いている。これは、単に「3」という文字を検索するだけでは、明細書に「3」を含む符号(「3a」や「13」や「303」等)を使っていた場合にそれも検索されてしまい、不都合だからである。図20に示す正規表現パターンは、[「3」の前側にも後側にも符号を構成しない文字がある]という条件を付加しており、これにより、「3a」や「13」や「303」の符号は検索せず、符号「3」のみを検索できるようになっている。
【0191】
ただし、上記のような正規表現パターンを使わず、単に「3」という文字を検索しても構わない。この場合は、「3」が見つかったときは、検索位置の「3」の前後の文字を調べるようにし、「3」の直前や直後に符号を構成する文字(「1」や「a」や「0」等)がある場合には、ステップS205以降の処理を行わずステップS204にとどまり、次の「3」の文字を検索するように処理すればよい。
【0192】
上記例では「3」が2行目と7行目に記述されているので(図21参照)、ステップS204の処理では最初に、2行目の「3」が先ず検索される。
【0193】
次に、検索された「3」の位置(図21の2行目の「3」の位置)より、前側の適当な長さの文字列を取り出して、適宜の文字列変数(ここでは、文字列変数y)に記憶する(S205)。また、この文字列変数yの内容を前記要素名抽出サブルーチンに引数として渡し、戻り値を変数p2に記憶する。
【0194】
前記ステップS205で文字を取り出す長さは、適宜定めれば良い。例えば、前側15文字を取り出すようにすれば、文字列変数yの内容は、「は、機体フレーム2上にエンジン」となる。この内容を要素名抽出サブルーチンに渡すことで、「エンジン」が戻り値として得られ、これが変数p2に記憶される。
【0195】
次にステップS206で、p2の内容が空文字列であるか否かが判定されるが、今回はp2の内容は「エンジン」であって空文字列でないので、次のステップS207の処理を行う。
【0196】
ステップS207では、変数wの内容が調べられる。変数wの内容は「@」であり、「エンジン」(変数p2)が記憶されていない。従って、ステップS208で、変数wの末尾側に、変数p2の内容(即ち「エンジン」)と、前記区切り文字「@」が追加される。変数wの内容は、ステップS208の処理の結果、「@エンジン@」になる。そうして、ステップS204に戻る。
【0197】
ステップS204にて、次の「3」が7行目から検索され、ステップS205にて、その前の15文字「7を固定している。前記エンジン」が文字列変数yにコピーされる。この変数yの内容が前記要素名抽出サブルーチンに引数として渡されて当該サブルーチンが実行され、戻り値「エンジン」が変数p2に記憶される(S205)。
【0198】
p2の内容は「エンジン」であって空文字列でないので、ステップS206からステップS207に進む。変数wの内容は「@エンジン@」であり、p2の内容「エンジン」が含まれているので、ステップS204に戻る。
【0199】
ステップS204では、もう「3」は検索しても見つからないので、ステップS209に進む。
【0200】
ステップS209では、変数wの記憶内容が調べられるが、当該内容は「@エンジン@」である。即ち、要素名が、1つ記憶されている。従って、この要素名と符号が編集位置に入力されている状態となるように、文書に入力されている文字列をプログラム側で自動的に変更する(S210)。
【0201】
入力の態様としては、図22のように、いったん符号「3」を削除し、改めて要素名と符号「エンジン3」を入力すると良い。ただし、符号「3」の直前にカーソルcを自動的に移動し、要素名「エンジン」をカーソルcの位置に挿入する形で入力した後、カーソルcを再び符号「3」の後ろに移動させるような入力態様としても良い。
【0202】
以上の機能により、ユーザ側としては、「3」のように符号のみを入力して[Ctrl]+[J]のトリガ操作を行うだけで、要素名(「エンジン」)を自動的に入力することができる。従って、要素名の入力の手間・時間を省くことができる。また、要素名をハッキリ正確に記憶していなくても、符号を記憶しておけば、それを入力して前記トリガ操作を行うだけで正確な要素名を入力できるので、明細書の書き手の頭脳負担は効果的に低減される。
【0203】
例えば、国内優先権の元の出願の明細書に図3に示したような内容が記述されており、この記述に対応する図(符号付き)も完成していたとする。そして、これを元に国内優先権主張出願をする際に、記述を追加したい場合があったとする。この場合、図の符号を見ながら、「座席上のオペレータが8を操作することで、7が左右に旋回し、1の走行向きが変更される。」と、図3に示した文書の内容に続けてキーボード4から入力するようにし、それぞれの符号「8」「7」「1」の入力直後でトリガ操作([Ctrl]+[J])を行うようにする。こうすれば、符号「8」「7」「1」が元の出願で何と称されていたかを気にすることなく、正しい文章、即ち、「座席上のオペレータが操向ハンドル8を操作することで、操向輪7が左右に旋回し、乗用車両1の走行向きが変更される。」を入力することができる。従って、国内優先権の元の出願における符号と要素名の対応を逐一調べなくて済むのである。これは、過去に自分で書いた明細書原稿に記述を追加したい場合や、他人が書いた明細書原稿に続けて記述を追加したい場合も同様である。
【0204】
なお、図23の例でトリガ操作([Ctrl]+[J])がなされた場合の前記第2のプログラムの動作についても、簡単に説明する。この図23の例は、図21の例と殆ど同じであるが、7行目の符号「3」の要素名を「エンジ」と誤記している点のみ、図21の例と異なる。
【0205】
図18を参照して、説明する。トリガ操作がされると、ステップS201で、カーソル位置の符号は「3」と抽出され、これが変数p1に記憶される。p1は空文字列でないので、変数wが「@」に初期化される(S202→S203)。
【0206】
次に、ステップS203で文書から「3」を検索すると、2行目に「3」が見つかる。検索された位置より前側の文字列(「は、機体フレーム2上にエンジン」)を文書から取り出して要素名抽出サブルーチンに渡すことにより、「エンジン」を要素名として得て、変数p2に記憶する(S205)。p2は空文字列でもなく、変数wに存在しないので、変数wの内容は「@エンジン@」になる(S206→S207→S208)。
【0207】
ステップS204に戻り文書から再び「3」を検索すると、7行目に「3」が見つかる。検索された位置より前側から文字列「輪7を固定している。前記エンジ」を取り出して要素名抽出サブルーチンに渡すことにより、要素名「エンジ」が得られ、これを変数p2に記憶する(S205)。
【0208】
p2の内容は空文字列ではなく、変数wは「@エンジン@」であり、p2の内容は存在していない。従って、変数wにp2の内容が追加され、その内容は「@エンジン@エンジ@」になる(S206→S207→S208)。
【0209】
ステップS204に戻るが、文書中からは「3」はもう見つからないので、ステップS209の処理に移る。変数wに記憶された要素名の数は、「エンジン」「エンジ」の計2つであるので、ステップS211の処理で、各要素名を画面に並べて表示する。例えば、図24のようにである。こうして表示することにより、ユーザは、文書中のどこかで「エンジ3」と誤記をしたことを知ることができる。ここでは「エンジン3」が正しい筈であるので、ユーザはキーボード4から[K]のキーを入力する。こうして、ステップS212で、「エンジン3」がカーソルcの位置に入力された状態になる。
【0210】
なお、図24に示すように、各要素名を画面に並べて表示したときは、カーソルcの位置にある符号の「3」を強調表示させておくことが望ましい。符号「3」を文書から検索して抽出された要素名が今表示されているということを、ユーザが素早く判別でき、選択操作を行い易いからである。
【0211】
以上に示したように上記機能は要素名の誤記の発見に有用であるが、それのみならず、1つの符号に異なる要素名を意図的に割り当てている場合にも、上記機能は有効である。例えば、図3の例では、符号「1」に対応する要素名として、1行目では「乗用車両」を用いており、8行目では「車両」と簡略表記を用いている。この場合に「1」と入力してトリガ操作([Ctrl]+[J])を行えば、「乗用車両1」と「車両1」が画面上に並べて表示され、いずれかを選択して自動入力させることができる。即ち、トリガ操作→選択操作を行うだけで、素早い入力が可能になるのである。
【0212】
〔◆第3のプログラム;指示語→指示語+要素名+符号〕
次に図25のフロー図を参照して、「この」「前記」等の指示語の直後でトリガ操作をしたときに、直近で使われた要素名と符号の組合せを自動入力できる、第3のプログラムを説明する。
【0213】
図25のフロー図に沿って説明すると、トリガ操作([Ctrl]+[J])がされたときは、整数変数yを0に初期化した上で(S301)、編集位置(カーソルcの位置)に入力されているのが、予め指定された語であるか否かを判定する(S302)。本実施形態では、指示語「この」と指示語「前記」を、予め設定してある。
【0214】
指示語「この」がカーソルcの位置に入力されているときは、整数変数xに1を書き込む(S303)。また、指示語「前記」がカーソルcの位置に入力されているときには、整数変数xに5を書き込む(S304)。「この」も「前記」も検出できなかったときは、後述のステップS315の処理に移る。
【0215】
続いて、検出された指示語の文字列を、文字列変数p1に記憶する(S305)。p1の内容は、カーソルcの位置に指示語「この」が検出されたときは「この」に、指示語「前記」が検出されたときは「前記」になる。
【0216】
次に、変数wを初期化する(S306)。この変数wは、文書から抽出された、条件に合う要素名と符号の組を記憶させておくためのものである。
【0217】
その後、文書から符号を検索する(S307)。このときの検索範囲はカーソルcの位置から文書先頭側とし、カーソルcの位置から文書末尾側は検索範囲としない。「この」や「前記」等の指示語は、入力された位置より文書先頭側の内容を指し示すのが通常だからである。また、ステップS307の検索における検索方向は、カーソルcの位置から文書先頭側に向かう方向とする。
【0218】
ステップS307における符号検索処理は、前述の第1のプログラムのステップS6の処理で用いた正規表現によるパターン(図6)を、そのまま用いて行えばよい。
【0219】
符号が検索されると、検索された符号を変数p3に記憶する(S308)。また、検索されたその符号の位置より前側の文字列を文書から取り出し、この取り出した文字列を前記要素名抽出サブルーチンに渡して要素名を抽出し、それを変数p2に記憶する(S309)。
【0220】
次に、変数p2の内容が空文字列か否かが判定される。空文字列である場合は、ステップS307に戻り、次の符号の検索を行う。
【0221】
空文字列でない場合は、変数wの内容を調べ、変数p2の内容と変数p3の内容の組が既に変数wに存在していないか、を判定する(S311)。存在していた場合は、ステップS307に戻り、次の符号の検索を行う。
【0222】
変数p2の内容と変数p3の内容の組が変数wに存在していない場合には、変数wに、変数p2の内容と変数p3の内容の組を、追加して記憶するとともに(S312)、yを1加算する(S313)。次に、yの内容がxと等しいか否かが判定され(S314)、等しかった場合は、後述のステップS315の処理に移る。yがxより小さい場合は、ステップS307に戻り、次の符号の検索を行う。
【0223】
前記ステップS307〜S314の一連の処理は、互いに重複しないx個の変数p2と変数p3の組が文書から見つかるか(y=xとなったか)、あるいは、文書から符号がもう見つからなくなるまで、行われる。ステップS307において文書から符号がもう見つからなくなると、以下に説明するステップS315以降の処理を行う。
【0224】
ステップS315では、今までの処理において変数wに記憶された要素名と符号の組の数が判定される。実質的には、この組の数はyの値に等しくなるので、yの値を調べれば良いことになる。
【0225】
0組(y=0)であれば、文書中から適合する要素名と符号の組を見つけられなかったことになるので、何もせず終了する。
1組(y=1)であれば、その変数wに記憶されている要素名と符号の組を、「この」あるいは「前記」の後に続けて、編集位置(カーソルcの位置)に入力する(S316)。
2組以上(y≧2)であれば、その変数wに記憶されている要素名と符号の組を、並べて画面に表示し、ユーザの選択待ちの状態になる(S317)。要素名と符号の組がユーザによって選択されると、その選択された要素名と符号が、「この」あるいは「前記」の後に続けて、カーソル位置に入力される(S318)。
【0226】
次に、図26の例で前記第3のプログラムが実行された場合、上記プログラムが実際にどのように動作するのか、より詳細に説明する。図26は、図3の状態から「この」とキーボード4から打ち込んだ状態である。
【0227】
ワープロのプログラムにおいては、トリガ操作([Ctrl]+[J])がされたときに、上記第3のプログラムが呼び出されて実行されるように、予め設定してある。
【0228】
図26の状態から[Ctrl]+[J]のトリガ操作がされた場合、本プログラムはステップS301でyを0に初期化したのち、カーソル位置cの文字列を調べる(S302)。図26の状態では「この」が入力されているので、ステップS303に移り、xの内容に1が書き込まれる。その後、ステップS305で、カーソルcの位置の指示語「この」が、文字列変数p1に記憶される。
【0229】
次にステップS306で、文字列変数wが、適宜の区切り文字(本実施形態では、“@”)で初期化される(即ち、w ←「@」)。区切り文字は“@”に限らずどのような文字でも良く、2文字以上の組合せであっても良いが、要素名としても符号としても通常使われないような文字(文字の組合せ)とすることが必要である。
【0230】
次に、文書から、符号を検索する(S307)。文書の検索範囲はカーソルcの位置よりも文書先頭側の範囲であるが、図26の例ではカーソルcが文書の最末尾にあるので、結局、検索範囲は文書全体になる。また、検索方向は、カーソルcから文書先頭側へ向かう方向である。
【0231】
ステップS307の処理の結果、符号は先ず、11行目の「8」が検索される。従って、ステップS308で、「8」を文字列変数p3に記憶するとともに、ステップS309で、検索された「8」の位置の前側から適宜の長さの文字列を取り出して文字列変数zに記憶する。取り出す長さを例えば15文字とすると、zの内容は、「を変更させるための操向ハンドル」となる。この内容を前述の要素名抽出サブルーチンに引数として渡して当該サブルーチンを実行することで、要素名「操向ハンドル」が得られる。この得られた要素名(「操向ハンドル」)を、文字列変数p2に記憶する。以上がステップS309の処理であり、ステップS308〜S309の処理によって、要素名と符号の組が取得される。
【0232】
ステップS310でp2の内容が調べられるが、p2は「操向ハンドル」であって空文字列でないので、ステップS310に進む。このステップS310では、変数wの内容が調べられる。変数wの内容は「@」であり、「操向ハンドル8」(変数p2と変数p3の組)が記憶されていない。従って、ステップS312の処理で、変数wの末尾側に、「操向ハンドル8」と、前記区切り文字「@」が追加される。変数wの内容は、ステップS312の処理の結果、「@操向ハンドル8@」になる。
【0233】
次に、ステップS313で、変数yを1加算する。yの内容はステップS301で0に初期化されていたので、ステップS313の処理の結果、y=1となる。
【0234】
更にステップS314で、変数yと変数xとが比較される。ステップS303でxの内容は1とされているので、変数yと変数xの内容は等しい(y=x)。従って、次のステップS315の処理に移る。
【0235】
ステップS315では、変数wの記憶内容が調べられるが、当該内容は「@操向ハンドル8@」である。即ち、要素名と符号の組が、1つ記憶されている。従って、この要素名と符号が、カーソルcの位置に入力される(S316)。
【0236】
以上により、ユーザは「この」と入力して[Ctrl]+[J]のトリガ操作を行えば、直近で使用された要素名と符号の組(具体的には、「操向ハンドル8」)を、自動入力することができる。ここで一般に、特許明細書を書き進めるときは、直近に使用した要素名と符号の組を繰り返し使用することが多く、その際には、再び使用される要素名の直前に「この」等の接頭語が付されることが多い。本プログラムを使用することにより、このような記述の入力の効率を向上させることができる。
【0237】
なお、図27のように「前記」と入力して[Ctrl]+[J]のトリガ操作を行った場合は、図25のフローのS302の判定において「前記」が検出される結果、ステップS304でxの内容に5が書き込まれる。従って、変数p2と変数p3の組が5つ記憶されるまで(要素名と符号の組が5つ取得されるまで。端的に言えば、y=5になるまで)、ステップS307〜S314のループ処理が行われる。この間、符号は、11行目「8」→10行目「7」→10行目「1」→9行目「1」→8行目「5」→7行目「3」と次々と検索される。
【0238】
上記ループの結果、最終的には、文字列変数wの記憶内容は、「@操向ハンドル8@操向輪7@車両1@後車軸5@エンジン3@」となる。従って、ステップS315の処理においては、組の数が5つ(即ち2組以上)であるので、ステップS317の処理に移って、各組を画面に例えば図28のように並べて表示し、選択待ちの状態になる。この状態で、ユーザが[J]や[K]や[L]などの対応するキーをキーボード4から入力することで、選択された要素名を入力することになる(S318)。例えばユーザが図28の状態で[U]キーを押せば、指示語「前記」の後に「エンジン3」が自動入力されることになる。
【0239】
以上により、ユーザは「前記」と入力して[Ctrl]+[J]のトリガ操作を行えば、直近で使用された要素名と符号の組(具体的には、図28で表示されているもの)から、選択して自動入力することができる。ここで一般に、特許明細書を書き進めるときは、直近に使用した要素名と符号の組を繰り返し使用することが多く、その際には、再び使用される要素名の直前に「前記」等の接頭語が付されることが多い。例えば、図11の文書では、1行目で使用している「機体フレーム2」が、2行目で、「前記」を伴って再び使用されている。本プログラムを使用することにより、このような記述の部分の入力効率を向上させることができる。
【0240】
なお、複数の要素名と符号を選択可能に画面に表示するときは、図28に示すように、変数p1の記憶内容であるところの「前記」を視覚的に他と異なる態様(例えば、白黒反転状)で表示することが望ましい。「前記」という語を認識して直近の要素名と符号の組が表示されていることを、ユーザが素早く判別できるからである。
【0241】
なお、前記第3のプログラムで予め指定された語は「この」「前記」のみであるが、これに限定されず、例えば、「当該」「該」「本」「上記」「前記の」「前述の」「前述した」「それぞれの」「各」「その」等の語を予め指定することも勿論可能である。
【0242】
本プログラムではステップS302〜S304の処理で、カーソル位置で検出された語の内容によって、xの値を変えている。具体的には、「この」であればx=1、「前記」であればx=5としている。これは、「この」という指示語が、文書中で相当に近い部分を特に指し示す言葉であることを考慮したものである。しかしながらこの構成に限定されるものでもない。例えば、「この」であればx=3に設定し、「前記」であればx=10に設定する構成であっても良い。また、「この」「前記」の何れであってもx=5に設定するようにしても良い。
【0243】
〔◆第4のプログラム;統合版〕
次に、第4のプログラムを説明する。このプログラムは今まで説明した第1〜第3のプログラムを統合したものに相当する。
【0244】
この第4のプログラムを図29のフローに沿って説明する。[Ctrl]+[J]のトリガ操作がされると、ステップS401で、カーソルcの位置の文字列が調べられる。そして、カーソルcの位置の文字列が予め指定された語(「この」「前記」等の指示語)であった場合、前述の第3のプログラムを実行する(S402)。また、カーソルcの位置の文字列が符号であった場合、前述の第2のプログラムを実行する(S403)。更に、カーソルcの文字列が指示語でも符号でもなかった場合、前述の第1のプログラムを実行する(S404)。
【0245】
この構成により、図3の状態で「この」と入力して[Ctrl]+[J]の操作をした場合は、第3のプログラムによって、「この」の後に「操向ハンドル8」が自動的に続けて入力される。また、図3の状態で「5」と入力して[Ctrl]+[J]の操作をした場合は、第2のプログラムによって、「5」の部分に「後車軸5」が置き換わるように自動的に入力される。更には、図3の状態で「駆動」と入力して[Ctrl]+[J]を押すと、第1のプログラムによって、「駆動」の後に「輪6」が自動的に続けて入力される。
【0246】
このように、共通のトリガ操作([Ctrl]+[J])によって、指示語に起因する自動入力や、符号に起因する自動入力や、要素名(の一部)に起因する自動入力を、的確に行わせることができる。ユーザはトリガ操作を一つだけ覚えれば良いので、操作性に優れるメリットがある。
【0247】
ただし、勿論、第4のプログラムのような形態を採らずに、[Ctrl]+[J]の操作がされたら第1のプログラムを実行し、[Ctrl]+[K]の操作がされたら第2のプログラムを実行し、・・・というように、複数のプログラムに互いに異なるトリガ操作を割り当てるようにしても構わない。
【0248】
〔細部〕
以下、前記第1〜第4のプログラムにおいて共通の細部について言及する。
【0249】
前記変数wは文字列変数とし、これに要素名と符号の組等を区切り文字を用いて区切りながら記憶しているが、これに限らず、文字列を格納可能な配列変数に要素名と符号の各組を記憶させるようにしても構わない。
【0250】
上記トリガ操作は、キーボード4のキーを押す操作に限定されない。例えば、画面上の所定の位置をマウスでクリックする操作や、ペン型デバイスでディスプレイ3の画面の所定の位置をタップする操作や、パソコン本体2に接続されるマイクに向かって所定の言葉を喋ること等が考えられる。ただし、本実施形態のようにキーボード4のキーを押す操作とすると、特許明細書の内容をキーボード4で入力する途中にトリガ操作を容易に素早く行い易い利点がある。
【0251】
特に本実施形態においては、トリガ操作は、キーボード4で[Ctrl]を押しながら[J]キーを押す操作とされている。なお、本実施形態のキーボード4は一般的な所謂QWERTY配列のキーボード(106キーボード)であり、[J]キーは、ユーザが指をホームポジションにおいたときに、右人差し指に位置するキーである。従って、[Ctrl]+[J]をトリガ操作とすることで、少なくとも右手の指はホームポジションに自然に位置することとなるので、前記プログラムによる自動入力が完了した後に、次の文字を素早く続けて入力することが容易である。
【0252】
ただし勿論、キーボード4の他のキーを押す操作をトリガ操作としても構わない。キーボード4上のホームポジションに指を置いたときに人差し指が位置する段のキーを少なくとも押す操作をトリガ操作に設定すれば、トリガ操作時に指が自然にホームポジションに位置する効果が期待できる。このようなトリガ操作の例としては、[Ctrl]+[F]や、[Alt]+[D]や、[Ctrl]+[Alt]+[L]等である。
【0253】
また、キーボード4上のホームポジションに指を置いたときに人差し指が位置する段のキーを押す操作に限られず、例えば、ファンクションキーを押す操作でも、トリガ操作としては十分である。
【0254】
また、本実施形態においては、図15のように入力候補が表示されたときにそれを選択する操作も、キーボード4のキーを押す操作である(アクセスキーが[J]キーや[K]キーに設定されている)。従って、選択操作を容易に素早く行い易い利点がある。ただし、これも、キーボード4のキーを押す操作に限定されない。
【0255】
本実施形態の第1〜第4のプログラムにおいて、図13・図15・図17に示すように、要素名と符号の組を入力させた後は、当該組の直後に前記カーソルc(図では縦棒として表されている)が位置するように、カーソルcを自動的に移動させることが望ましい。ユーザはこれによって、[Ctrl]+[J]の操作後にカーソルcの位置を移動させる操作が不要になり、文章をスムーズに継続して入力することができる。
【0256】
前述の第1〜第4のプログラムは、機械の分野の特許や実用新案の出願明細書を書く場合に限らず、広く符号付きの文書一般(例えば、機械の組立方法のマニュアル等)にこれを適用できる。
【0257】
【発明の効果】
本発明は、以上のように構成したので、以下に示すような効果を奏する。
【0258】
即ち、請求項1に示すように、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の(a)〜(d)の手順を行う((a)文書の編集位置に入力されている文字列から要素名を抽出する。(b)(a)で抽出された要素名を、文書から検索する。(c)(b)で検索された位置を含む文字列を文書から取り出して解析し、(a)で抽出された要素名に対応する符号を取得する。(d)(c)で得られた符号に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。)ので、ユーザは、要素名を入力してトリガ操作を行えば、その要素名に対応した符号をプログラム側で自動的に入力させることができる。従って、入力の手間が低減され、文書を素早く入力できる。また、要素名と符号の対応を逐一記憶あるいは記録しておく必要がないから、書き手たるユーザの頭脳負担が軽減される。また、符号の表記の誤りを回避することができる。
【0259】
請求項2に示すように、前記(b)において要素名が文書から複数検索されたときには、それぞれの検索位置において、前記(a)で抽出された要素名に対応する符号を取得するようにし、取得された符号同士で不一致がある場合には、互いに不一致である符号を並べて画面に表示してユーザに選択させ、選択された符号に基づき前記(d)の処理を行うので、
入力された要素名に対応する符号が複数種類ある場合にそれが選択可能に表示されるので、ユーザは選択操作により、的確な符号を自動的に入力させることができる。
【0260】
請求項3に示すように、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の(a)〜(d)の手順を行う((a)文書の編集位置に入力されている文字列から要素名の一部を抽出する。(b)(a)で抽出された要素名の一部を、文書から検索する。(c)(b)で検索された位置を含む文字列を文書から取り出して解析し、(a)で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得する。(d)(c)で得られた要素名と符号に基づき、文書の編集位置に完全な要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。)ので、
ユーザは、要素名の一部を入力してトリガ操作を行えば、その一部を含む要素名と、それに対応した符号を、プログラム側で自動的に入力させることができる。従って、入力の手間が低減され、文書を素早く入力できる。また、要素名と符号の対応を逐一記憶あるいは記録しておく必要がないし、要素名も完全に覚えておかずにその一部だけ覚えていれば良いから、書き手たるユーザの頭脳負担が軽減される。また、要素名や符号の表記の誤りを回避することができる。
【0261】
請求項4に示すように、前記(b)において要素名の一部が文書から複数検索されたときには、それぞれの検索位置において、前記(a)で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得するようにし、取得された要素名と符号の組同士で不一致がある場合には、互いに不一致である要素名と符号を並べて画面に表示してユーザに選択させ、選択された要素名と符号に基づき前記(d)の処理を行うので、
入力された要素名の一部に対応する要素名と符号が複数種類ある場合にそれが選択可能に表示されるので、ユーザは選択操作により、的確な要素名と符号を自動的に入力させることができる。
【0262】
請求項5に示すように、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の(a)〜(d)の手順を行う((a)文書の編集位置に入力されている文字列から符号を抽出する。(b)(a)で抽出された符号を、文書から検索する。(c)(b)で検索された位置より前側の文字列を文書から取り出して解析し、(a)で抽出された符号に対応する要素名を取得する。(d)(c)で得られた要素名に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。)ので、
ユーザは、符号を入力してトリガ操作を行えば、その符号に対応した要素名をプログラム側で自動的に入力させることができる。従って、入力の手間が低減され、文書を素早く入力できる。また、要素名と符号の対応を逐一記憶あるいは記録しておく必要がないから、書き手たるユーザの頭脳負担が軽減される。また、要素名の表記の誤りを回避することができる。
【0263】
請求項6に示すように、前記(b)において符号が文書から複数検索されたときには、それぞれの検索位置において、前記(a)で抽出された符号に対応する要素名を取得するようにし、取得された要素名同士で不一致がある場合には、互いに不一致である要素名を並べて画面に表示してユーザに選択させ、選択された要素名に基づき前記(d)の処理を行うので、
入力された符号に対応する要素名が複数種類ある場合にそれが選択可能に表示されるので、ユーザは選択操作により、的確な要素名を自動的に入力させることができる。
【0264】
請求項7に示すように、文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を取得し、取得された当該組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更するので、
予め指定された語を入力してトリガ操作を行えば、直近の要素名と符号の組を自動入力させることができるので、入力の手間を省くことができる。
【0265】
請求項8に示すように、文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を複数取得し、取得された当該組を並べて選択可能に画面に表示し、ユーザによって選択された組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更するので、
予め指定された語を入力してトリガ操作を行えば、直近の要素名と符号の組を自動入力させることができるので、入力の手間を省くことができる。また、ユーザとしては、自分が希望する要素名と符号を選択するだけで、的確な要素名と符号を自動的に入力させることができる。
【0266】
請求項9に示すように、予め指定された語として、「この」「該」「前記」「上記」のうち少なくとも何れか一つを含むので、
このような指示語に続けて要素名と符号を入力する機会が多い文書で、指示語を入力してトリガ操作を行うことで、文書の入力効率を効果的に向上させることができる。
【0267】
請求項10に示すように、前記トリガ操作は、キーボードのキーを押す操作であるので、
キーボードで文書を入力中にキーボードのキーを操作(トリガ操作)することで上述のような自動入力が行えるので、キーボードからユーザが指を離す必要がなく、入力効率を効果的に向上できる。
【0268】
請求項11に示すように、前記トリガ操作で押されるキーは、キーボードのホームポジションに指を置いたときに人差し指が位置する段のキーの何れかを少なくとも含むので、
トリガ操作を行うときに、自然に指がホームポジションに置かれることになる。従って、トリガ操作に続けて、文書をスムーズに入力することができる。
【0269】
請求項12に示すように、文書に入力されている文字列を変更する処理が終わった後、文書の編集位置は、要素名と符号の組の直後に自動的に移動されているので、
トリガ操作を行った後、文書の編集位置を移動させる操作が不要であるので、要素名と符号の組の直後に文章を素早く続けて入力することができる。
【0270】
請求項13に示すように、前記選択は、キーボードのキー入力によって行うことが可能とされているので、
選択操作がキーボードで行えるので、キーボードからの入力操作を中断することがなく、スムーズに入力作業を行える。
【0271】
請求項14に示すように、少なくとも前記選択の際に、前記編集位置における要素名、要素名の一部、符号、あるいは予め指定された語の部分を、通常と異なる視覚的態様で表示するので、
選択の際に、注目すべき文字列が画面に強調される形で表示され、ユーザが選択を的確に且つ素早く行いやすい。
【0272】
請求項15に示すように、画面に並べて選択可能に表示される文字列は、その検索位置が前記編集位置に近いものが上に来るように、並べて表示されるので、
編集位置に近いもの(最近に入力した文字列であることが多い)が上に来るように並べて表示される。符号付きの文書(例えば、特許明細書など)では、最近に使用した要素名と符号ほど再び使用する頻度が高いという傾向がある。ユーザは並べて表示されたものを上から眺めれば、入力したい要素名と符号を素早く簡単に見つけることが多くなるので、入力効率を一層高めることができる。
【0273】
請求項16に示すように、与えられた文字列から要素名または要素名の一部に相当する文字列を抽出するプログラムであって、与えられた文字列の末尾側から先頭側に向かって、一文字にも二文字以上にもマッチ可能な第一のパターンにマッチするか否かを判定してゆき、初めてマッチした位置を要素名と要素名でない部分との境界であるとして文字列を抽出するので、
要素名の抽出を柔軟に行わせるようにパターンを設定できる。この結果、要素名の的確な抽出が可能である。
【0274】
請求項17に示すように、前記第一のパターンが正規表現で表されているので、
複雑なマッチング条件を、正規表現を用いることで、容易かつ適切に設定できる。
【0275】
請求項18に示すように、前記第一のパターンは、「常時」にはマッチし、「時」にはマッチしないパターンであるので、
「常時」は除外するように要素名を抽出できる一方で、「腕時計」の「時」は除外しないように要素名を抽出できる。
【0276】
請求項19に示すように、与えられた文字列のうち、第二のパターンにマッチする部分は、前記第一のパターンにマッチするか否かの判定を行わないので、
ひらがなの要素名(「つまみ」「すくい」「ねじ」)や、「第○の」を伴う要素名等を、第二のパターンに設定しておくことで、要素名を、一層的確に且つ柔軟に抽出することができる。
【0277】
請求項20に示すように、前記第二のパターンが正規表現で表されているので、
複雑なマッチング条件を、正規表現を用いることで、容易かつ適切に設定できる。
【0278】
請求項21に示すように、前記第一のパターンは「の」に少なくともマッチするパターンであり、前記第二のパターンは「第1の」に少なくともマッチするパターンであるので、
「第1の装置」等の要素名を、的確に抽出することができる。
【図面の簡単な説明】
【図1】本発明のプログラムが使用される一般的なパーソナルコンピュータシステムを示した図。
【図2】パソコン本体のブロック図。
【図3】ディスプレイの表示画面の例を示した図。
【図4】図3の状態から「この機体フレーム」とキーボードから打ち込んだ様子を示す図。
【図5】第1のプログラムのフロー図。
【図6】符号検索のための正規表現パターンの一例を示す図。
【図7】要素名抽出サブルーチンのフロー図。
【図8】要素名抽出サブルーチンで用いられる第一のパターンの一例を示す図。
【図9】図4の状態からトリガ操作に基づいて自動的に文字列が入力される態様の一例を示す図。
【図10】図3で入力されている文書と若干異なる文書が入力され、更に、「この車輪」とキーボードから打ち込んだ様子を示した図。
【図11】図10の状態からトリガ操作に基づいて要素名と符号が選択可能に画面に表示された様子を示す図。
【図12】図3の状態から「この機体フ」とキーボードから打ち込んだ様子を示す図。
【図13】図12の状態からトリガ操作に基づいて自動的に文字列が入力される態様の一例を示す図。
【図14】図3の状態から「この操向」とキーボードから打ち込んだ様子を示す図。
【図15】図14の状態からトリガ操作に基づいて要素名と符号が選択可能に画面に表示され、ユーザの選択によって自動的に文字が入力される、一連の流れを示す図。
【図16】要素名抽出サブルーチンの別例を示すフロー図。
【図17】図16のサブルーチンで用いられる第二のパターンの一例を示す図。
【図18】第2のプログラムのフロー図。
【図19】符号抽出サブルーチンで用いられる正規表現パターンの一例を示す図。
【図20】符号抽出サブルーチンで用いられる符号検索のための正規表現パターンの一例を示す図。
【図21】図3の状態から「この3」とキーボードから打ち込んだ様子を示す図。
【図22】図21の状態からトリガ操作に基づいて自動的に文字列が入力される態様の一例を示す図。
【図23】図21と同様に、「この3」とキーボードから打ち込んだ様子を示す図。ただし、図21とは、文書の7行目に「エンジ3」と誤記がある点で異なる。
【図24】図23の状態からトリガ操作に基づいて要素名と符号が選択可能に画面に表示された状態を示す図。
【図25】第3のプログラムのフロー図。
【図26】図3の状態から「この」とキーボードから打ち込んだ様子を示す図。
【図27】図3の状態から「前記」とキーボードから打ち込んだ様子を示す図。
【図28】図28の状態からトリガ操作に基づいて要素名と符号が選択可能に画面に表示された状態を示す図。
【図29】第4のプログラムのフロー図。
【符号の説明】
1 パーソナルコンピュータ
c カーソルの位置

Claims (21)

  1. 文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の(a)〜(d)の手順を行うことを特徴とする、文字列の入力のためのプログラム。
    (a) 文書の編集位置に入力されている文字列から要素名を抽出する。
    (b) (a)で抽出された要素名を、文書から検索する。
    (c) (b)で検索された位置を含む文字列を文書から取り出して解析し、(a)で抽出された要素名に対応する符号を取得する。
    (d) (c)で得られた符号に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。
  2. 請求項1のプログラムにおいて、
    前記(b)において要素名が文書から複数検索されたときには、それぞれの検索位置において、前記(a)で抽出された要素名に対応する符号を取得するようにし、
    取得された符号同士で不一致がある場合には、互いに不一致である符号を並べて画面に表示してユーザに選択させ、選択された符号に基づき前記(d)の処理を行うことを特徴とする、文字列の入力のためのプログラム。
  3. 文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の(a)〜(d)の手順を行うことを特徴とする、文字列の入力のためのプログラム。
    (a) 文書の編集位置に入力されている文字列から要素名の一部を抽出する。
    (b) (a)で抽出された要素名の一部を、文書から検索する。
    (c) (b)で検索された位置を含む文字列を文書から取り出して解析し、(a)で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得する。
    (d) (c)で得られた要素名と符号に基づき、文書の編集位置に完全な要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。
  4. 請求項3のプログラムにおいて、
    前記(b)において要素名の一部が文書から複数検索されたときには、それぞれの検索位置において、前記(a)で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得するようにし、
    取得された要素名と符号の組同士で不一致がある場合には、互いに不一致である要素名と符号を並べて画面に表示してユーザに選択させ、選択された要素名と符号に基づき前記(d)の処理を行うことを特徴とする、文字列の入力のためのプログラム。
  5. 文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の(a)〜(d)の手順を行うことを特徴とする、文字列の入力のためのプログラム。
    (a) 文書の編集位置に入力されている文字列から符号を抽出する。
    (b) (a)で抽出された符号を、文書から検索する。
    (c) (b)で検索された位置より前側の文字列を文書から取り出して解析し、(a)で抽出された符号に対応する要素名を取得する。
    (d) (c)で得られた要素名に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。
  6. 請求項5のプログラムにおいて、
    前記(b)において符号が文書から複数検索されたときには、それぞれの検索位置において、前記(a)で抽出された符号に対応する要素名を取得するようにし、
    取得された要素名同士で不一致がある場合には、互いに不一致である要素名を並べて画面に表示してユーザに選択させ、選択された要素名に基づき前記(d)の処理を行うことを特徴とする、文字列の入力のためのプログラム。
  7. 文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を取得し、取得された当該組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更することを特徴とする、文字列の入力のためのプログラム。
  8. 文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を複数取得し、取得された当該組を並べて選択可能に画面に表示し、ユーザによって選択された組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更することを特徴とする、文字列の入力のためのプログラム。
  9. 請求項7または請求項8に記載のプログラムにおいて、
    予め指定された語として、「この」「該」「前記」「上記」のうち少なくとも何れか一つを含むことを特徴とする、
    文字列の入力のためのプログラム。
  10. 請求項1から請求項9までの何れか一項に記載のプログラムであって、
    前記トリガ操作は、キーボードのキーを押す操作であることを特徴とする、
    文字列入力のためのプログラム。
  11. 請求項10に記載のプログラムであって、前記トリガ操作で押されるキーは、キーボードのホームポジションに指を置いたときに人差し指が位置する段のキーの何れかを少なくとも含むことを特徴とする、
    文字列入力のためのプログラム。
  12. 請求項1から請求項9までの何れか一項に記載のプログラムであって、
    文書に入力されている文字列を変更する処理が終わった後、文書の編集位置は、要素名と符号の組の直後に自動的に移動されていることを特徴とする、
    文字列入力のためのプログラム。
  13. 請求項2、請求項4、請求項6、または請求項8に記載のプログラムであって、前記選択は、キーボードのキー入力によって行うことが可能とされていることを特徴とする、文字列入力のためのプログラム。
  14. 請求項2、請求項4、請求項6、または請求項8に記載のプログラムであって、少なくとも前記選択の際に、前記編集位置における要素名、要素名の一部、符号、あるいは予め指定された語の部分を、通常と異なる視覚的態様で表示することを特徴とする、文字列入力のためのプログラム。
  15. 請求項2、請求項4、請求項6、または請求項8に記載のプログラムであって、
    画面に並べて選択可能に表示される文字列は、その検索位置が前記編集位置に近いものが上に来るように、並べて表示されることを特徴とする、文字列入力のためのプログラム。
  16. 与えられた文字列から要素名または要素名の一部に相当する文字列を抽出するプログラムであって、与えられた文字列の末尾側から先頭側に向かって、一文字にも二文字以上にもマッチ可能な第一のパターンにマッチするか否かを判定してゆき、初めてマッチした位置を要素名と要素名でない部分との境界であるとして文字列を抽出することを特徴とする、
    文字列抽出のためのプログラム。
  17. 請求項16に記載の文字列抽出のためのプログラムであって、
    前記第一のパターンが正規表現で表されていることを特徴とする、
    文字列抽出のためのプログラム。
  18. 請求項16又は請求項17に記載の文字列抽出のためのプログラムであって、
    前記第一のパターンは、「常時」にはマッチし、「時」にはマッチしないパターンであることを特徴とする、
    文字列抽出のためのプログラム。
  19. 請求項16から請求項18までの何れか一項に記載の文字列抽出のためのプログラムであって、
    与えられた文字列のうち、第二のパターンにマッチする部分は、前記第一のパターンにマッチするか否かの判定を行わないことを特徴とする、
    文字列抽出のためのプログラム。
  20. 請求項19に記載の文字列抽出のためのプログラムであって、
    前記第二のパターンが正規表現で表されていることを特徴とする、
    文字列抽出のためのプログラム。
  21. 請求項19又は請求項20に記載の文字列抽出のためのプログラムであって、
    前記第一のパターンは「の」に少なくともマッチするパターンであり、
    前記第二のパターンは「第1の」に少なくともマッチするパターンであることを特徴とする、
    文字列抽出のためのプログラム。
JP2003186980A 2003-06-30 2003-06-30 文字列の入力のためのプログラム、および、文字列抽出のためのプログラム Expired - Fee Related JP4293348B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003186980A JP4293348B2 (ja) 2003-06-30 2003-06-30 文字列の入力のためのプログラム、および、文字列抽出のためのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003186980A JP4293348B2 (ja) 2003-06-30 2003-06-30 文字列の入力のためのプログラム、および、文字列抽出のためのプログラム

Publications (2)

Publication Number Publication Date
JP2005025265A true JP2005025265A (ja) 2005-01-27
JP4293348B2 JP4293348B2 (ja) 2009-07-08

Family

ID=34185967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003186980A Expired - Fee Related JP4293348B2 (ja) 2003-06-30 2003-06-30 文字列の入力のためのプログラム、および、文字列抽出のためのプログラム

Country Status (1)

Country Link
JP (1) JP4293348B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012063819A (ja) * 2010-09-14 2012-03-29 Kazuya Izumi 符号付与プログラム
JP2013092916A (ja) * 2011-10-26 2013-05-16 Ib Research Kk 知的財産管理装置
JP2017211993A (ja) * 2016-05-27 2017-11-30 雲拓科技有限公司 請求の範囲の中の請求の範囲構成要素名詞所属構成要素対応符号を対応検出する方法
CN109255116A (zh) * 2017-07-06 2019-01-22 云拓科技有限公司 将权利要求书中的权利要求元件名词所属元件名词对应标号予以对应的对应方法
JP2019153204A (ja) * 2018-03-06 2019-09-12 富士通株式会社 文書管理プログラム、文書管理装置および文書管理方法
CN111142683A (zh) * 2018-11-06 2020-05-12 Ib研究株式会社 输入辅助程序、输入辅助方法以及输入辅助装置
JP2021536062A (ja) * 2018-08-29 2021-12-23 アイパクトリ インコーポレイテッドIPACTORY Inc. 特許文書作成装置、方法、コンピュータプログラム、コンピュータで読み取り可能な記録媒体、サーバー、およびシステム
JP7158576B1 (ja) * 2021-04-13 2022-10-21 杉村 憲司 明細書作成方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07110808A (ja) * 1993-10-13 1995-04-25 Canon Inc 自然言語インターフェイス装置
JPH0944492A (ja) * 1995-08-01 1997-02-14 Toshiba Corp 文字列予測方法、及びその装置
JPH10232867A (ja) * 1996-12-18 1998-09-02 Kenzo Matsumoto 文書処理方法および文書処理装置ならびに文書処理プログラムを記録した記録媒体
JP2000090083A (ja) * 1998-09-11 2000-03-31 Hyper Tec:Kk 文書処理装置および明細書処理装置
JP2002175294A (ja) * 2000-12-06 2002-06-21 Onda Techno:Kk 文書作成方法、記憶媒体及び文書作成装置
JP2002342312A (ja) * 2001-05-15 2002-11-29 Onda Techno:Kk 文書を作成するプログラム、記憶媒体、文書作成装置及び文書作成システム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07110808A (ja) * 1993-10-13 1995-04-25 Canon Inc 自然言語インターフェイス装置
JPH0944492A (ja) * 1995-08-01 1997-02-14 Toshiba Corp 文字列予測方法、及びその装置
JPH10232867A (ja) * 1996-12-18 1998-09-02 Kenzo Matsumoto 文書処理方法および文書処理装置ならびに文書処理プログラムを記録した記録媒体
JP2000090083A (ja) * 1998-09-11 2000-03-31 Hyper Tec:Kk 文書処理装置および明細書処理装置
JP2002175294A (ja) * 2000-12-06 2002-06-21 Onda Techno:Kk 文書作成方法、記憶媒体及び文書作成装置
JP2002342312A (ja) * 2001-05-15 2002-11-29 Onda Techno:Kk 文書を作成するプログラム、記憶媒体、文書作成装置及び文書作成システム

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012063819A (ja) * 2010-09-14 2012-03-29 Kazuya Izumi 符号付与プログラム
JP2013092916A (ja) * 2011-10-26 2013-05-16 Ib Research Kk 知的財産管理装置
JP2017211993A (ja) * 2016-05-27 2017-11-30 雲拓科技有限公司 請求の範囲の中の請求の範囲構成要素名詞所属構成要素対応符号を対応検出する方法
CN109255116A (zh) * 2017-07-06 2019-01-22 云拓科技有限公司 将权利要求书中的权利要求元件名词所属元件名词对应标号予以对应的对应方法
JP2019153204A (ja) * 2018-03-06 2019-09-12 富士通株式会社 文書管理プログラム、文書管理装置および文書管理方法
JP7092992B2 (ja) 2018-03-06 2022-06-29 富士通株式会社 文書管理プログラム、文書管理装置および文書管理方法
JP2022088486A (ja) * 2018-08-29 2022-06-14 アイパクトリ インコーポレイテッド 特許文書作成装置、方法、コンピュータプログラム、コンピュータで読み取り可能な記録媒体、サーバー、およびシステム
JP2021536062A (ja) * 2018-08-29 2021-12-23 アイパクトリ インコーポレイテッドIPACTORY Inc. 特許文書作成装置、方法、コンピュータプログラム、コンピュータで読み取り可能な記録媒体、サーバー、およびシステム
JP2022088485A (ja) * 2018-08-29 2022-06-14 アイパクトリ インコーポレイテッド 特許文書作成装置、方法、コンピュータプログラム、コンピュータで読み取り可能な記録媒体、サーバー、およびシステム
JP7248879B2 (ja) 2018-08-29 2023-03-30 アイパクトリ インコーポレイテッド 特許文書作成装置、方法、コンピュータプログラム、コンピュータで読み取り可能な記録媒体、サーバー、およびシステム
JP7291970B2 (ja) 2018-08-29 2023-06-16 アイパクトリ インコーポレイテッド 特許文書作成装置、方法、コンピュータプログラム、コンピュータで読み取り可能な記録媒体、サーバー、およびシステム
JP2020077113A (ja) * 2018-11-06 2020-05-21 アイビーリサーチ株式会社 入力支援プログラム、入力支援方法および入力支援装置
CN111142683A (zh) * 2018-11-06 2020-05-12 Ib研究株式会社 输入辅助程序、输入辅助方法以及输入辅助装置
JP7158576B1 (ja) * 2021-04-13 2022-10-21 杉村 憲司 明細書作成方法

Also Published As

Publication number Publication date
JP4293348B2 (ja) 2009-07-08

Similar Documents

Publication Publication Date Title
EP0686286B1 (en) Text input transliteration system
KR101122692B1 (ko) 텍스트 표시 장치 및 텍스트 표시 프로그램을 기록한 기록 매체
EP0241646A2 (en) Document processing apparatus
WO2010010918A1 (ja) 情報処理装置および情報処理方法
KR101318712B1 (ko) 사전 정보 표시 장치
JP4293348B2 (ja) 文字列の入力のためのプログラム、および、文字列抽出のためのプログラム
JP2009059140A (ja) 電子辞書、電子辞書の検索方法及び電子辞書の検索プログラム
JP3122417B2 (ja) 情報表示方法及び情報処理装置
Saharia et al. LuitPad: a fully unicode compatible Assamese writing software
US4863296A (en) Information processing apparatus
JP4535186B2 (ja) 辞書機能を備えた電子装置およびプログラム
JP5511161B2 (ja) 情報処理装置および情報処理方法
JPH10320399A (ja) 言語識別装置,言語識別方法および言語識別のプログラムを記録した記録媒体
JP4050745B2 (ja) 文章入力システム
JP3814000B2 (ja) 文字列変換装置および文字列変換方法
JP4922030B2 (ja) 文字列検索装置、方法及びプログラム
JP5278377B2 (ja) 電子装置およびプログラム
JP3036005B2 (ja) かな漢字変換装置
JPH1078956A (ja) 情報処理装置
JP2509554B2 (ja) 文字処理方法
JPH08297659A (ja) 文字列変換処理方式
JP2874815B2 (ja) 日本語文字読取装置
JP2000348024A (ja) 文字入力装置
JPS63286965A (ja) 文書作成装置
JPH0721176A (ja) 文字訂正方法および文字訂正装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060628

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20060628

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080415

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080616

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20080616

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080819

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081020

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20081204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090108

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090309

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090401

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090401

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120417

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150417

Year of fee payment: 6

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees