JP2010186486A - 文字列検索装置及び文字列検索方法 - Google Patents
文字列検索装置及び文字列検索方法 Download PDFInfo
- Publication number
- JP2010186486A JP2010186486A JP2010095987A JP2010095987A JP2010186486A JP 2010186486 A JP2010186486 A JP 2010186486A JP 2010095987 A JP2010095987 A JP 2010095987A JP 2010095987 A JP2010095987 A JP 2010095987A JP 2010186486 A JP2010186486 A JP 2010186486A
- Authority
- JP
- Japan
- Prior art keywords
- search
- character string
- expression
- expressed
- numeric
- 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.)
- Withdrawn
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】文字列の表現形式にとらわれず、一つの検索式を使用して複数種の数字表現された文字列を高精度に検索することである。
【解決手段】数字表現された文字を検索することを指定するための特定文字を含む数字表現された文字を検索するための検索式を入力する検索式入力手段と、検索対象のテキストの中から数字表現された文字列を検出する数字表現検出手段と、検索式入力手段により入力された検索式に基づいて、数字表現検出手段により検出された数字表現された文字列を含む検索式と一致する文字列を検索対象のテキストの中から検索し、検索結果として出力する検索手段とを具備することを特徴とする。
【選択図】 図1
【解決手段】数字表現された文字を検索することを指定するための特定文字を含む数字表現された文字を検索するための検索式を入力する検索式入力手段と、検索対象のテキストの中から数字表現された文字列を検出する数字表現検出手段と、検索式入力手段により入力された検索式に基づいて、数字表現検出手段により検出された数字表現された文字列を含む検索式と一致する文字列を検索対象のテキストの中から検索し、検索結果として出力する検索手段とを具備することを特徴とする。
【選択図】 図1
Description
本発明は、対象文書から所定の文字列を検索する文字列検索装置及び文字列検索方法に関する。
従来、文字列検索方式として、実際の文字検索を行う前に正規表現指定の検索文字列の正規表現を解析して実際の文字列検索時には、正規表現を考慮して文字列検索を行えるようにすることにより、正規表現指定の検索文字列の文字列検索時における実際の文字比較を明示指定の検索文字列の文字検索と同様に1対1の明示的比較に徹して行うことのできる正規表現を考慮したものがある(例えば、特許文献1参照)。
また、特定なパターンの文字列の検索には、検索式を立てて検索する方法がある。例えば、検索式[a−z]{n,m}は、「a」から「z」までのアルファベットがn回以上m回以下出現する文字列を検索できる。数字の場合も同様に、検索式[0−9]{n,m}は、「0」から「9」までの数字がn回以上m回以下出現する数字を検索できる。「百、千」などの漢数字を検索する場合も特別な検索式はなく、[一二三…万億]{n,m}のように検索式を記述し、「一」から「億」まで列挙した文字がn回以上m回以下出現する文字列を検索するようにする。
しかし、従来のものでは、特定なパターンの検索には、複雑な検索式を記述しなければならない。上述の[a−z]{n,m}のほか、例えば「*」、「?」などのワイルドカード文字や「/」、「^」、「$」などの記号の組み合わせを用いて複雑な検索式を構成する。
このような検索方法を使って様々な数字表現を検索するためには、ユーザが検索式に関する詳しい知識を有する必要があり、簡単に検索を行うことができない。また、数字表現の場合は、その表現は多様であり、文書によって用いられる文字種(アラビア数字、漢数字、ローマ数字等)は異なるし、また、一つの文書に複数の文字種による数字表現が混在することもある。従来の検索方法では、文字種の混在については、アラビア数字の半角文字と全角文字を共通検索式で検索できるにすぎず、漢数字やローマ数字、またアルファベットによるスペルアウトした数字表現(例えばtwenty-four)を共通検索式で検索をすることはできなかった。
さらに、漢数字やアルファベットのスペルアウトした数字表現など、従来の正規表現による検索方法では、数字として適切性の判断を含めた検索結果を得ることはできなかった。漢数字の例では、[一二三……万億]{n,m}のような検索式を用いると、「九州」の「九」や「億万長者」の「億万」まで検索されるという問題があった。
また、少数や分数など、数字文字以外を伴う数字表現までを想定すると、整数の検索と共通で、かつ数字として適切であるものを検索できる検索式を指定することはできなかった。
本発明の目的は、表現形式にとらわれず、一つの検索式を使用して複数種の数字表現された文字列を高精度に検索できる文字列検索装置及び文字列検索方法を提供することである。
本発明は、テキストの中から数字表現された文字列を含む文字列を検索するための文字列検索装置であって、数字表現された文字を検索することを指定するための特定文字を含む数字表現された文字を検索するための検索式を入力する検索式入力手段と、検索対象のテキストの中から数字表現された文字列を検出する数字表現検出手段と、検索式入力手段により入力された検索式に基づいて、数字表現検出手段により検出された数字表現された文字列を含む検索式と一致する文字列を検索対象のテキストの中から検索し、検索結果として出力する検索手段とを具備することを特徴とする。
本発明によれば、文字列の表現形式にとらわれず、一つの検索式を使用して複数種の数字表現された文字列を高精度に検索できる。
以下、本発明の実施の形態を説明する。図1は本発明の実施の形態に係わる文字列検索を実現するための文字列検索システムの構成図である。図2は、図1に示した文字列検索システムの動作を説明するためのフローチャートである。
図1において、パーソナルコンピュータ10に実装されたメモリ11に文字列検索を実現するための検索ソフトウェア12が記憶されている。通常、検索ソフトウェア12は磁気ディスク装置22に記憶されており、実行する際に磁気ディスク装置22から読み出されメモリ11に記憶される。検索ソフトウェア12は、制御部13、入出力部14、自然言語解析部15、検索部16から構成されている。
制御部13は検索ソフトウェア12の全体の処理を制御する。入出力部14は、制御部13の制御に基づいて、検索対象の文字列、テキストまたは文書(以下、統一してテキスト呼ぶ)の指定、検索式を入力する機能を実現する。一般に文字列を検索する場合には、表示装置19に表示されているテキストを対象とする場合、テキストが記録されている電子ファイルを対象とする場合とが考えられる。前者の場合には、明示的な検索対象のテキストの指定は省略する。後者の場合には、電子ファイルのファイル名とそれが記憶されているパス(位置〉の指定をする。ここで、パス(位置)指定は、例えば磁気ディスク装置22においてファイルが記憶されているフォルダの位置を指定することである。この検索対象のテキストの指定及び検索式の指定は、表示装置19に表示されたグラフィカル・ユーザー・インタフェースに基づく入力の催促に対応してパーソナルコンピュータ10の操作者がキーボード20、マウス21を使用して入力することにより達成される。自然言語解析部15は、磁気ディスク装置22に記憶されている形態素解析辞書23を参照して、検索対象のテキストの形態素解析を行う機能を持つ。検索部16は、自然言語解析部15により形態素解析された検索対象のテキストにおいて、従来技術で実現されているキーワード検索、自然言語検索を行うとともに、本発明の数字表現された文字列の検索を行う。メモリ11には、ワーキング領域として使用するためのワーキングメモリ17と、フラグ情報を記憶するための領域であるフラグ設定部18が設けられている。検索ソフトウェア12は、その実行時に、処理中のデータをワーキングメモリ17に一時的に記憶する。また、検索ソフトウェア12は、その実行時に、処理の状態をフラグ情報としてフラグ設定部18に記憶する。表示装置19は、検索ソフトウェア12の処理状況などを表示するためのものである。キーボード20とマウス21は、検索ソフトウェア12に対して各種情報を入力するためのものである。磁気ディスク装置22は、形態素解析辞書23と数字表現照合規則24とを記憶している。
図2は本発明の実施の形態に係わる文字列検索システムの動作を説明するためのフローチャートである。この実施の形態での検索対象は数字表現された文字(文字列)である。図2において、検索ソフトウェア12が実行され検索処理が開始されると、ユーザ指定のオプション情報をともなう検索式(検索文字列)を取得する(S1)。本実施の形態では、検索対象のテキストは表示装置19に現時点で表示されているテキストであるものとし、その指定は省略する。もし、検索対象のテキストの指定が必要な場合には、このステップS1にて指定する。
その後、取得した検索式に基づいて検索対象が数字表現された文字列であるかどうかをチェックする(S2)。本実施の形態では、数字表現された文字列を検索することを示す特定文字(ワイルドカード文字)「#」を用いている。よって、ステップS2では、まず検索式として指定された検索文字列に「#」が存在するかどうかを判断することになる。他に数字表現された文字列を検索指示するための検索式の表現として、アラビア数字だけで構成される文字列とアラビア数字を含む文字列と、漢数字で構成される文字列等がある。
アラビア数字だけで構成される文字列の一例として「24」がある。これは、アラビア数字「24」を検索することを指定している。アラビア数字を含む文字列の一例として、「24日」がある。これはアラビア数字「24」とこれに続く文字「日」とを含む文字列を検索することを指定している。アラビア数字を含む文字列の一例として、「第2」の指定もある。このようにアラビア数字の前後に連続して文字列がついている文字列の場合が該当する。漢数字で構成される文字列の例としては、「二十四」や「三分の二」のような文字列が該当する。ただし、自然言語検索を指定する検索式として「24日の会議は何か」のような検索式が指定されている場合には、数字表現された文字列の検索には該当しない。
尚、数字表現された文字列としては、アラビア数字、漢数字、ローマ数字、アルファベットによりスペルアウトされた数字表現とがある。漢字を用いる日本語文字、中国語文字、英語などのアルファベット使用言語の文字以外の文字(例:韓国語のハングル文字)を用いた数字表現を含める構成であってもよい。要するに、言語の種類についての制限はない。
ここで、図3に表示装置19に表示される検索画面の一例を示す。検索式としての検索文字列に「#時」が指定されている場合を示している。図3の検索画面の一例では、ユーザが数字表現を検索する際にオプションも指定できるようになっている。ユーザ指定のオプションとは、図3の「検索対象に漢数字等を含める」などのオプションである。オプションとしては、漢数字、小数、分数、ローマ数字、スペルアウトした数字が用意されている場合を示している。オプションの選択がない場合にはアラビア数字の検索となる。図3では、アラビア数字に加えオプションとして漢数字が選択された場合を示している。この選択したオプションによって、漢数字、小数、分数、ローマ数字、スペルアウトした数字も検索できるようになる。
ステップS2の判定で、検索対象が数字表現された文字列でない場合には、一般的なキーワード検索又は自然言語検索であると判断して、それらに対応した文字列検索処理を行う(S13)。一方、ステップS2の判定で、検索対象が数字表現された文字列であると判断された場合には、ステップS3において、検索式としての検索文字列にワイルドカード文字「#」が含まれているかどうかを判定する。
ステップS3の判定で、検索文字列にワイルドカード文字「#」が含まれていると判定した場合は、ステップS4へ進み、検索式にワイルドカード文字「#」を含む検索式であることを示すフラグ情報にフラグを設定してメモリ11のフラグ設定部18に記憶(ステップS4)し、その後ステップS7へ処理を進める。
一方、ステップS3の判定で、検索文字列にワイルドカード文字「#」が含まれていないと判定した場合は、ステップS5へ進み、自然言語解析部15は数字表現照合規則24を参照して、検索式である検索文字列に含まれる数字表現された文字列に数字属性を付与して正規化し、メモリ11のワーキングメモリ17に正規化された検索式として記憶する。正規化の詳細は後述する。ここで、数字属性とは、表層文字に付与される一種の属性である。数字の種類、表現形式によって分別された属性の一例を表1に示す。
本実施の形態では、正規化においては、数字の表現形式にかかわらず、同一の数字を表す表現は同定できるように、当該数字表現をアラビア数字への変換を行い、アラビア数字と属性とを組み合わせた中間表現を用いる。様々な数字表現と正規化後の中間表現の一例を表2に示す。
例えば、「3分の2」のように、表現に漢字を使用したものでも、数字部分に着目して、「af(2/3)」と正規化する。また、「5億」のように、アラビア数字と漢数字とが混在している場合、実運用上整数に限った現象なので属性は「aki」とし、aki「500000000」と正規化する。「Part I」のように、英文中の半角文字を用いてローマ数字を表現する場合、「I」にローマ数字属性を付与し、「ri(1)」と正規化する。表2では、ローマ数字の桁数の多いものや小数、分数には対応しないものを示しているが、対応するように構成することも可能である。
よって、例えば検索式である検索文字列がアラビア数字「24」や「24日」のように「#」が含まれない場合には、ステップS5において、アラビア数字「24」が「ai(24)」として中間表現に正規化される。そして、正規化の結果として、検索文字列がアラビア数字「24」場合には、「ai(24)」がメモリ11のワーキングメモリ17に正規化された検索式として記憶される。同様に検索文字列が「24日」の場合には、正規化の結果として「ai(24)」と「日」とから構成される文字列がメモリ11のワーキングメモリ17に検索式として記憶される。
次にステップS6において、検索式である検索文字列に含まれる数字表現された文字列をワイルドカード文字「#」に置き換える。即ち、検索文字列がアラビア数字「24」や「24日」のような場合には、それぞれ検索文字列を「#」や「#日」と置き換える。
続くステップS7では、検索対象のテキストが解析済みかどうかをチェックし(S7)、解析済みである場合には検索部13によって解析した文と検索式である検索文字列とパターン照合処理を行う(S9)。解析済みでない場合は自然言語解析部15によって文の解析処理を行い(S8)、解析した文と検索式である検索文字列のパターン照合処理を行う(S9)。
図4は図2におけるステップS8での自然言語解析部15による検索対象のテキストの解析処理の内容を説明するためのフローチャートである。まず、検索対象のテキストについて形態素解析辞書23を用いて形態素解析を行う(S31)。形態素解析辞書23は様々な従来の自然言語処理システムで実現されているものを使用すればよい。そして、数字表現照合規則24を用いて数字表現の判定を行い(S32)、形態素解析後の形態素が数字表現であるかどうかを判定する(S33)。
ここで、数字表現照合規則24は、判定対象のテキストが数字表現されている否かを判定するための数字表現照合のための規則と、判定対象のテキストが数字表現されていると判定された場合に、その数字表現された文字列を中間表現に変換するためのデータとから構成されている。この中間表現に変換することを正規化と呼ぶ。この実施形態では正規化された文字列をアラビア数字で表現する。
判定対象のテキストが数字表現されている否かを判定するための数字表現照合としては、例えば、以下のような文字列との照合をすることになる。
(1)アラビア数字は「0」から「9」が複数回出現する文字列であり、その文字列の間に、「,」、「、」、「.」、「/」が出現可能な文字列である。「,」は数字3桁おきにのみ生起する。
(2)漢数字は[零,一,二,三,……,万,億]の文字が複数回出現する文字列であり、桁を表す「十」、「百」、「千」、「万」、「億」などの文字は所定の規則に基づき生起する。
(3)漢数字において、「億」の前には必ず[一,二,三,……,千]または[0−9]の文字が複数回出現する場合のみ漢数字である。
次に、ステップS33の判定で、形態素が数字表現と判定された場合、数字属性の付与、正規化を行う(S34)。
次に、文の終わりであるかどうかを判定し(S35)、文の終わりでない場合には、次の形態素に移り(S36)、ステップS32の処理に戻る。同様に、ステップS33の判定で形態素が数字でない場合も、文の終わりであるかどうかを判定し(S35)、文の終わりでない場合には、次の形態素に移り(S36)、ステップS32の処理に戻る。このように、ステップS32〜ステップS35の処理は、文の終わりまで繰り返され、数字表現にはすべて数字属性が付与され正規表現される。
次に、各種の例文を参照して形態素解析処理の前後での構造の変化を示す。
(例文1)
解析前:私は二十四日に四日市に行きました。
解析前:私は二十四日に四日市に行きました。
形態素解析後:私/は/二十四/日/に/四日市/市/に/行きました。
数字属性付与・正規化後:私/は/ki(24)/日/に/四日市/市/に/行きました。
このように、漢数字の「二十四」は、「24」として正規化され、「漢数字・整数」を表す属性「ki」が付与される。一方、第2の実施の形態の形態素解析辞書に含まれる固有名詞語彙情報の参照により、「四日市」は地名だと判定され、「四日市」の「四」は数字表現でないと判断される。
(例文2)
解析前:I am twenty-four years old.
形態素解析後:I/am/twenty-four/years/old.
数字属性付与・正規化後:I/am/si(24)/years/old.
(例文3)
解析前:They sleep more than two-thirds of the day.
形態素解析後:They/sleep/more/than/two-thirds/of/the day.
数字属性付与・正規化後:They/sleep/more/than/sf(2/3)/of/the day.
(例文4)
解析前:三分の二の会員が賛成しています。
解析前:I am twenty-four years old.
形態素解析後:I/am/twenty-four/years/old.
数字属性付与・正規化後:I/am/si(24)/years/old.
(例文3)
解析前:They sleep more than two-thirds of the day.
形態素解析後:They/sleep/more/than/two-thirds/of/the day.
数字属性付与・正規化後:They/sleep/more/than/sf(2/3)/of/the day.
(例文4)
解析前:三分の二の会員が賛成しています。
形態素解析後:三分の二/の/会員が/賛成しています。
数字属性付与・正規化後: kf(2/3)/の/会員が/賛成しています。
(例文5)
解析前:ドル円の相場が116.76です。
解析前:ドル円の相場が116.76です。
形態素解析後:ドル円/の/相場が/116.76/です。
数字属性付与・正規化後:ドル円/の/相場が/ad(116.76)/です。
このように検索対象のテキストの解析処理が終了すると、次にステップS9において、検索対象のテキストにおいて解析された後の各形態素と検索式である検索文字列とのパターン照合処理を行う。図5はステップS9での検索部13によるパターン照合処理内容を説明するためのフローチャートである。
まず、検索対象のテキストの文字列走査を開始し(S41)、文の終わりかどうかをチェックする(S42)。文の終わりでない場合、ステップS34において数字属性が付与され、正規化された形態素と検索式である検索文字列とのパターン照合をする(S43)。
照合が一致した場合は、一致した文字列を検索結果としてメモリ11のワーキングメモリ17に格納し(S44)、次いで、一致の照合対象の文字列を次の文字列(形態素)に移し(S45)、ステップS41に戻る。ステップS43の判定で一致しない場合は、ステップS45に移りステップS41に戻って再度パターン照合を行う。この処理は文の終わりまで繰り返される。
以下にパターン照合の具体例を幾つか説明する。
(例1)
検索文字列:#日
検索対象文:私は二十四日に四日市に行きました
オプション:なし
例1では、オプションが「なし」であるので、数字表現はアラビア数字の検索という条件となる。この条件で照合すると何も一致しない。
検索文字列:#日
検索対象文:私は二十四日に四日市に行きました
オプション:なし
例1では、オプションが「なし」であるので、数字表現はアラビア数字の検索という条件となる。この条件で照合すると何も一致しない。
(例2)
検索文字列:#日
検索対象文:私は二十四日に四日市に行きました
オプション:漢数字を含む
例2では、オプションが「漢数字を含む」であるので、数字表現はアラビア数字及び漢数字の検索という条件となる。この条件で照合すると「二十四日」が一致し検索結果となる。
検索文字列:#日
検索対象文:私は二十四日に四日市に行きました
オプション:漢数字を含む
例2では、オプションが「漢数字を含む」であるので、数字表現はアラビア数字及び漢数字の検索という条件となる。この条件で照合すると「二十四日」が一致し検索結果となる。
(例3)
検索文字列:#
検索対象文:Part I How to Install TTP System.
オプション:ローマ数字を含む
例3では、オプションが「ローマ数字を含む」であるので、数字表現はアラビア数字及びローマ数字の検索という条件となる。この条件で照合すると「I」が一致し検索結果となる。
検索文字列:#
検索対象文:Part I How to Install TTP System.
オプション:ローマ数字を含む
例3では、オプションが「ローマ数字を含む」であるので、数字表現はアラビア数字及びローマ数字の検索という条件となる。この条件で照合すると「I」が一致し検索結果となる。
(例4)
検索文字列:#
検索対象文:売り上げが5億6千万円です。
検索文字列:#
検索対象文:売り上げが5億6千万円です。
オプション:漢数字を含む
例4では、オプションが「漢数字を含む」であるので、数字表現はアラビア数字及び漢数字の検索という条件となる。この条件で照合すると「5億6千万」が一致し検索結果となる。
例4では、オプションが「漢数字を含む」であるので、数字表現はアラビア数字及び漢数字の検索という条件となる。この条件で照合すると「5億6千万」が一致し検索結果となる。
(例5)
検索文字列:#
検索対象文:生産高は昨年の1.5倍になった
オプション:小数を含む
例5では、オプションが「小数を含む」であるので、数字表現はアラビア数字及び小数の検索という条件となる。この条件で照合すると「1.5」 が一致し検索結果となる。
検索文字列:#
検索対象文:生産高は昨年の1.5倍になった
オプション:小数を含む
例5では、オプションが「小数を含む」であるので、数字表現はアラビア数字及び小数の検索という条件となる。この条件で照合すると「1.5」 が一致し検索結果となる。
(例6)
検索文字列:#
検索対象文:私は二十四日に四日市に行きました
オプション:漢数字を含む
例6では、オプションが「漢数字を含む」であるので、数字表現はアラビア数字及び漢数字の検索という条件となる。この条件で照合すると「二十四」が一致し検索結果となる。「四日市」の「四」は数字表現でないと判断される。
検索文字列:#
検索対象文:私は二十四日に四日市に行きました
オプション:漢数字を含む
例6では、オプションが「漢数字を含む」であるので、数字表現はアラビア数字及び漢数字の検索という条件となる。この条件で照合すると「二十四」が一致し検索結果となる。「四日市」の「四」は数字表現でないと判断される。
(例7)
検索文字列:24
検索対象文:私は十四日と二十四日に四日市に行きました
オプション:漢数字を含む
例7では、オプションが「漢数字を含む」であるので、数字表現はアラビア数字及び漢数字の検索という条件となる。この条件で検索を行うと「十四」と「二十四」が一致し検索結果となる。「四日市」の「四」は数字表現でないと判断される。
検索文字列:24
検索対象文:私は十四日と二十四日に四日市に行きました
オプション:漢数字を含む
例7では、オプションが「漢数字を含む」であるので、数字表現はアラビア数字及び漢数字の検索という条件となる。この条件で検索を行うと「十四」と「二十四」が一致し検索結果となる。「四日市」の「四」は数字表現でないと判断される。
以上の説明のように図2のフローチャートのS9でのパターン照合処理が終了すると、続いてステップS10において、メモリ11のフラグ設定部18を参照して、フラグ情報が設定されているかどうかを判定する。
ステップS10において、フラグ情報が設定されていると判定すると、ステップS12において、上記ステップS44において、検索結果としてメモリ11のワーキングメモリ17に格納した文字列を最終的な検索結果として出力し、検索処理を終了する。一方、ステップS10において、フラグ情報が設定されていないと判定すると、ステップS11へ処理を進める。
ステップS11では、上記ステップS44において、検索結果としてワーキングメモリ17に格納された文字列の中から最終的な検索結果を抽出するためのフィルタリング処理をする。このステップS3の判定の結果、ステップS5、ステップS6、ステップS7、ステップS9と処理がされた場合には、ステップS6で数字表現を「#」に置き換えた結果として、ステップS9で照合がされるため、照合結果が最終的な検索結果ではないため、フィルタリング処理が必要となる。
上記(例7)を再度参照されたい。この場合には、検索文字列がアラビア数字「24」のため、ステップS6で数字表現を「#」に置き換えた結果として、ステップS9で照合がされる。この結果、ワーキングメモリ17には、検索結果「十四」と「二十四」が記憶されている。そこで、フィルタリング処理として、ステップS5においてワーキングメモリ17に記憶された正規化された数字表現「ai(24)」とワーキングメモリ17に検索結果として記憶された「十四」と「二十四」とを比較照合する。この比較照合の結果、一致する「二十四」を最終結果として出力(ステップS12)し、検索処理を終了する。
本発明の実施の形態によれば、数字の桁数、数字の文字種、表す数字の種類を意識せずに、一つの検索式を使用して数字表現を高精度に検索できる。すなわち、種々な数字の違いを意識せず、複雑な検索式を記述する必要がなく、アラビア数字、漢数字、ローマ数字、スペルアウトした数字、小数、分数などを共通の検索式で検索できる。また、「九州」の「九」や「億万長者」の「億万」など、本来数字表現ではない文字列を検索結果とせず、高い検索精度を実現できる。
数字を表するワイルドカード文字「#」を用いることで、複数の文字種の数字表現を共通の検索式で検索できる。即ち、例えば「#」というワイルドカード文字を指定するだけで、1桁の数字だけでなく、複数桁の数字表現も検索できる。また、同様にアラビア数字以外の複数の文字種の数字表現を共通の検索式で検索できる。更に、「5億6千」や「5千300」などの複数文字種の混在からなる数字表現も、「5300」などと同じ検索式で検索できる。また、小数や分数を整数と共通の検索式で検索できる。「24」で「twenty-four」が検索できる。どの種類の数字表現を検索するかをユーザが指定できる。
最後に、数式表現照合規則24について説明する。図6、図7、図8、図9に数字表現照合規則の一例を分割図示する。
この数字表現照合規則は、判定対象の文字列(以下、数字表現候補文字列と呼ぶ)が数字表現されている否かを判定するための数字表現照合のための規則と、数字表現候補文字列が数字表現されていると判定された場合に、その数字表現候補文字列を中間表現に変換するためのデータとから構成されている。以下、この中間表現に変換することを正規化と呼ぶ。この実施形態では正規化された文字列をアラビア数字で表現する。この数字表現照合規則を参照することにより、数字表現候補文字列が数字表現されているか否かを判定し、数字表現されている場合には数字表現候補文字列を正規化する。
この実施形態における数字表現照合規則では、数字表現されている文字列としてアラビア数字、漢数字(アラビア数字が混在する「5億6000万」のような表現も含む)、アルファベットを用いてスペルアウトされた数字表現(例えば、数字の「234」を「 two hundred thirty-four 」とアルファベットを用いてスペルアウトされた数字表現)を照合判定の対象とする。照合判定の対象は、これらに限定されず他の数字表現でも良い。
はじめに、この規則で使用されている記号の説明をする。「S」はこの規則の照合を始める位置を示している。「$」で始まる文字列は変数を表している。「”」と「”」で囲まれた文字列は数字表現候補文字列と照合するための文字列を定義している。丸括弧「(」と「)」で囲まれた項はオプション項目であることを表している。「*」の付けられた項は、この項が任意の個数連続することを許容していることを定義している。尚、説明を容易にするため、便宜上、左端に行番号を付与している。また、「/*」と「*/」で囲まれた文字列は、コメントであり数字表現照合規則ではない。
003行,005行,007行だけが文字「S」で始まっており、この3つの行位置から照合を始めることが定義されている。003行から始まる規則は、アラビア数字(自然数と小数)を照合するためのものである。005行から始まる規則は、漢数字を照合するためのものである。007行から始まる規則は、英語(アルファベット)を用いてスペルアウトした数字を照合するためのものである。
まず、003行から照合を開始する。この行では、「S=($KIGO),$ALABIC」と規則が定義されている。この意味は、数字表現候補文字列を「($KIGO),$ALABIC」と照合することを定義している。この定義では、先頭が変数「($KIGO)」で定義された文字列で始まり、その後に続く変数「$ALABIC」で定義された文字列が照合対象の文字列とされている。尚、変数「$KIGO」は、丸括弧「(」と「)」で囲まれているためオプション項目である。即ち、数字表現候補文字列の先頭が必ず、変数「$KIGO」で定義された文字列でるある必要はない。変数「$KIGO」は、008行から010行に定義されている。これらの行において、照合文字列として記号「+」、「一」、「±」を定義している。
変数「$ALABIC」は、013行,015行,017行に定義されている。013行では、照合する文字列として整数と小数を定義している。015行では、照合する文字列として先頭が数字のゼロで始まる小数を定義している。017行では、照合する文字列として分数を定義している。
013行には、「$ALABIC=$ALABIC_T, $ALABIC_E,$ALABIC_DECIMAL」と定義されている。この定義の意味は、変数「$ALABIC」は、変数「$ALABIC_T」、変数「$ALABIC_E」、変数「$ALABIC_DECIMAL」の3つの変数で定義されている文字列がその順番に並んでいる文字列を定義している。
変数「$ALABIC_T」は、アラビア数字の先頭文字列のことであり、019行から定義されている。変数「$ALABIC_E」は、3桁の整数倍の桁の数字文字列のことであり、023行から定義されている。変数「$ALABIC_DECIMAL」は、小数点で始まる小数文字列のことであり、028行から定義されている。変数「$ALABIC_T」は、021行において「”[1−9]”」と定義されている。この意味は数字「1」から「9」までのいずれかの任意の数字で構成される1桁の数字を定義している。
019行では、数字「1」から「9」までのいずれかの任意の数字で構成される3桁の数字を定義している。同様に020行では、2桁の数字を定義している。
変数「$ALABIC_E」は、023行と024行で定義されている。024行において変数「$ALABIC_E」は、数字「0」から「9」までの任意の数字で構成される任意桁の数字として定義されている。023行において変数「$ALABIC_E」は、変数「$ALABIC_E1」と定義されている。変数「$ALABIC_E1」は025行において、「(”,”,$ALABIC_BASE,$ALABIC_E1」と定義されている。ここでは、変数「$ALABIC_E1」が左辺と右辺の両方に記述されているため、再帰呼び出しをしている。
変数「$ALABIC_BASE」は026行において、数字「0」から「9」までの任意の数字で構成される3桁の数字として定義されている。よって、025行で定義されている変数「$ALABIC_E1」の意味は、先頭文字がカンマ「,」で始まり、その後に3桁の数字を1単位とする任意の個数の単位から構成される数字を定義している。このような定義をするのは、数字が3桁毎にカンマで区切られて表現する場合があるからである。
変数「$ALABIC_DECIMAL」は028行において、「”.”,”[1−9]”,(”[1−9]”*)」と定義されている。この定義の意味は、先頭文字が小数点「.」で始まり、その後に数字「0」から「9」までの任意の数字で構成される少なくとも1桁の数字として定義されている。桁数は1桁以上であれば、任意桁でよい。
015行には、「$ALABIC=”0”,”.”,$ALABIC_DECIMAL」と定義されている。この定義の意味は、変数「$ALABIC」は先頭がアラビア数字の「0」で始まり、その後に小数点「.」が続き、更にその後に変数「$ALABIC_DECIMAL」が続く文字列と照合することを定義している。
017行「$ALABIC=$ALABIC_T,$ALABIC_E,”/”,$ALABIC_T,$ALABIC_E」と定義されている。この定義の意味は、変数「$ALABIC」は先頭から順に、変数「$ALABIC_T」、変数「$ALABIC_E」、文字「/」、変数「$ALABIC_T」、変数「$ALABIC_E」が続く文字列と照合することを定義している。
例えば、数字表現候補文字列がアラビア数字の「245」の場合には、019行、013行の順に参照した003行で照合が一致する。この場合、数字表現照合規則を参照した結果として、正規化の結果である「245」が得られる。例えば、数字表現候補文字列がアラビア数字の「3,456」の場合には、026行、025行、023行、021行、013行の順に参照した003行で照合が一致する。この場合、数字表現照合規則を参照した結果として、正規化の結果である「3,456」が得られる。例えば、数字表現候補文字列がアラビア数字の「5.234」の場合には、021行、025行、023行、028行、013行の順に参照した003行で照合が一致する。この場合、数字表現照合規則を参照した結果として、正規化の結果である「5.234」が得られる。
003行での照合が一致しなかった場合には、次に005行での照合を行う。005行では、「S=$KANJI」と規則が定義されている。この意味は、数字表現候補文字列を「S=$KANJI」と照合することを定義している。変数「$KANJI」は、030行から032行に定義されている。030行には、 変数「$KANJI1」と照合することを定義している。同様に031行と032行では、それぞれ変数「$KANJI2」、変数「$KANJI3」と照合することを定義している。
変数「$KANJI1」は数字表現候補文字列を自然数の漢数字と照合するために、035行と036行で定義されている。035行では、「$KANJI=($KAN_CHO)<1>,($KAN_OKU)<2>,($KAN_MAN)<3>,$KAN_BASE<4>」と定義されている。
初めに変数「$KAN_CHO」について説明する。変数「$KAN_CHO」は、049行と050行で定義されている。049行では、「$KAN_CHO=$KAN_BASE<1>,”兆”」と定義されている。変数「$KAN_CHO」は、数字表現候補文字列と照合するための漢数字「兆」を049行で定義している。そして、050行では、数字表現候補文字列に漢数字「兆」が存在して照合が一致した場合に漢数字「兆」を中間表現であるアラビア数字に変換するためのデータが定義されている。ここで更に変数「$KAN_BASE」について説明する。変数「$KAN_BASE」は、063行から066行にて4種類の定義がされている。
063行から066行において、変数「$KAN_BASE」として、変数「$KAN_BASE4」、変数「$KAN_BASE3」、変数「$KAN_BASE2」、変数「$KAN_BASE1」が定義されている。
変数「$KAN_BASE4」は、数字表現候補文字列と照合するための4桁の漢数字を表しており、その定義は068行から083行にされている。変数「$KAN_BASE3」は、数字表現候補文字列と照合するための3桁の漢数字を表しており、その定義は085行から092行にされている。変数「$KAN_BASE2」は、数字表現候補文字列と照合するための2桁の漢数字を表しており、その定義は094行から097行にされている。変数「$KAN_BASE1」は、数字表現候補文字列と照合するための1桁の漢数字を表しており、その定義は099行から100行にされている。
これら変数「$KAN_BASE4」、変数「$KAN_BASE3」、変数「$KAN_BASE2」、変数「$KAN_BASE1」を説明するために、これら変数の定義において出現する変数「$KAN_SEN1」、変数「$KAN_HYAKU」、変数「$KAN_JU」を説明する。
変数「$KAN_SEN1」は、数字表現候補文字列に漢数字「千」が存在して照合が一致した場合に漢数字「千」を中間表現であるアラビア数字に変換するためのデータが定義されている。
変数「$KAN_HYAKU」は、数字表現候補文字列に漢数字「百」が存在して照合が一致した場合に漢数字「百」を中間表現であるアラビア数字に変換するためのデータが定義されている。
変数「$KAN_JU」は、数字表現候補文字列に漢数字「十」が存在して照合が一致した場合に漢数字「十」を中間表現であるアラビア数字に変換するためのデータが定義されている。
105行と106行において変数「$KAN_JU」が定義されている。106行では、数字表現候補文字列として数字「10」を表現する漢数字「十」が存在して照合が一致した場合に漢数字「十」を中間表現であるアラビア数字に変換するためのデータが定義されている。即ち、106行には「$KAN_JU=”十”=1」と定義されている。この定義の意味は、漢数字「十」を数字表現候補文字列と照合し、照合が一致した場合には変数「$KAN_JU」に数値「1」を代入することである。
106行において「”十”」は、数字表現候補文字列と照合するための漢数字を定義しており、「1」は照合の結果として変数「$KAN_JU」に代入する中間表現としてのアラビア数字の数値「1」を定義している。
一方、105行では、数字表現候補文字列として数字「20」、「30」、「40」、「50」、「60」、「70」、「80」、「90」を表現する漢数字「二十」、「三十」、「四十」、「五十」、「六十」、「七十」、「八十」、「九十」と照合することを定義している。
105行において、「$KAN_JU=”[二−九]”<3>,”十”=<3>」と定義されている。ここで「<3>」は、ローカル変数を定義している。「<」と「>」とで括った変数は、ローカル変数を意味する。この場合「<3>」とは、番号3番のローカル変数を意味する。
まず、「”[二−九]”<3>,”十”」の意味を説明する。この定義の意味は数字表現候補文字列と照合するための漢数字として先頭に漢数字の「二」から「九」までのいずれかの漢数字が出現し、それに続いて漢数字「十」が続く9種類の漢数字を定義している。即ち、「二十」、「三十」、「四十」、「五十」、「六十」、「七十」、「八十」、「九十」を定義している。そして、更に照合の結果をローカル変数<3>に代入することを定義している。数字表現候補文字列として「八十」が存在した場合には、照合が一致するため、ローカル変数<3>にアラビア数字「8」が代入される。その結果として変数「$KAN_JU」にアラビア数字「8」が代入されることになる。即ち、105行を参照することにより、数字表現候補文字列として、それぞれ「二十」、「三十」、「四十」、「五十」、「六十」、「七十」、「八十」、「九十」が存在した場合には、照合が一致するため、ローカル変数<3>に、それぞれアラビア数字「2」、「3」、「4」、「5」、「6」、「7」、「8」、「9」が代入される。その結果として変数「$KAN_JU」に、それぞれアラビア数字「2」、「3」、「4」、「5」、「6」、「7」、「8」、「9」が代入されることになる。
このような105行と106行に関する説明の内容は、変数「$KAN_SEN1」(101行と102行で定義)と、変数「$KAN_HYAKU」(103行と104行で定義)にも適用できる。
次に、049行から054行の定義を説明する。これらの行には、数字表現候補文字列と照合するための漢数字として「兆」、「億」、「万」、「千」が定義されているとともに、これらの漢数字と照合が一致した場合に、その一致した漢数字を中間表現であるアラビア数字に変換するためのデータが定義されている。これらの行で定義された内容で照合対象とする数字表現は例えば「五億」というように数値部分が漢数字で表現された数字表現である。
代表例の一つとして049行と050行における定義の意味を説明する。049行において、「$KAN_CHO=$KAN_BASE<1>,”兆”」と定義れている。この行では、数字表現候補文字列と照合するための漢数字を定義している。一方、050行には「=<1>000000000000」と定義されている。この行では049行での定義された漢数字と照合が一致した場合に、その漢数字で表現している数字を中間表現であるアラビア数字に変換するための定義がされている。
049行において、「$KAN_BASE<1>,”兆”」と定義されている。この意味は、先頭の文字として変数「$KAN_BASE」で定義された文字に続いて、漢数字「兆」が出現する漢数字の文字列を定義している。そして、もし照合が一致した場合には、その時の変数「$KAN_BASE」に代入されている中間表現であるアラビア数字をローカル変数<1>に代入することを意味している。
その結果として、もし、ローカル変数<1>に中間表現である数字「4」が代入されている場合には、050行で定義された結果として、変数「$KAN_CHO」には、中間表現であるアラビア数字「4000000000000」代入される。
次に、055行から062行の定義を説明する。これらの行には、数字表現候補文字列と照合するための漢数字として「兆」、「億」、「万」、「千」が定義されているとともに、これらの漢数字と照合が一致した場合に、その一致した漢数字を中間表現であるアラビア数字に変換するためのデータが定義されている。
これらの行で定義された内容で照合対象とする数字表現は「5億」というように数値部分がアラビア数字で表現された数字表現である。これら各行の定義の意味は、既に説明した内容と同様であるため、詳細説明を省略する。
ここで、036行、040行、043行の意味を説明する。これらの行では、ローカル変数の加算を定義している。即ち、例えば、043行において、ローカル変数<4>にアラビア数字「3000」が代入されており、ローカル変数<3>にアラビア数字「500」が代入されている場合には、変数「$KANSUJI2」にアラビア数字「3500」が代入されることになる。
以上の説明で001行から105行までの説明を終了する。詳細な説明をしていない部分は、これまでの説明と同等の部分であり説明を省略する。また、108行以降181行までの定義は、数字表現候補文字列が英語でスペルアウトされた数字表現と照合するための規則を定義している。定義の意味の詳細は省略するが、定義の意味はこれまでの説明と同等である。
12…検索ソフトウェア、13…検索部、14…入出力部、15…自然言語解析部、16…検索部、23…形態素解析辞書、24…数字表現照合規則
Claims (6)
- テキストの中から数字表現された文字列を含む文字列を検索するための文字列検索装置であって、
数字表現された文字を検索することを指定するための特定文字を含む数字表現された文字を検索するための検索式を入力する検索式入力手段と、
検索対象のテキストの中から数字表現された文字列を検出する数字表現検出手段と、
前記検索式入力手段により入力された前記検索式に基づいて、前記数字表現検出手段により検出された数字表現された文字列を含む前記検索式と一致する文字列を前記検索対象のテキストの中から検索し、検索結果として出力する検索手段とを具備することを特徴とする文字列検索装置。 - テキストの中から数字表現された文字列を含む文字列を検索するための文字列検索装置であって、
数字表現された文字を検索することを指定するための特定文字を含む数字表現された文字列を検索するための検索式と、複数種の数字表現の中からどの種類の数字表現された文字列を検索対象とするかの指定情報とを入力する検索式入力手段と、
検索対象のテキストの中から複数種の数字表現された文字列を検出し、この検出した複数種の数字表現された文字列を統一された数字表現に変換する数字表現検出手段と、
前記検索式入力手段により入力された前記検索式に基づいて、前記指定情報で指定された種類の数字表現された文字列を含む前記検索式と一致する文字列を前記検索対象のテキストの中から検索し検索結果として出力する検索手段とを具備することを特徴とする文字列検索装置。 - 前記数字表現検出手段は、検索対象のテキストから抽出した元となる数字表現された文字列を特定種類の数字表現された数字文字列と、前記元となる数字表現された文字列における数字表現の種類を特定する属性情報とから構成される統一された数字表現に変換することを特徴とする請求項2記載の文字列検索装置。
- テキストの中から数字表現された文字列を含む文字列を検索するための文字列検索方法であって、
数字表現された文字を検索することを指定するための特定文字を含む数字表現された文字を検索するための検索式を入力する検索式入力ステップと、
検索対象のテキストの中から数字表現された文字列を検出する数字表現検出ステップと、
前記検索式入力ステップで入力された前記検索式に基づいて、前記数字表現検出ステップで検出された数字表現された文字列を含む前記検索式と一致する文字列を前記検索対象のテキストの中から検索し、検索結果として出力する検索ステップとを具備することを特徴とする文字列検索方法。 - テキストの中から数字表現された文字列を含む文字列を検索するための文字列検索方法であって、
数字表現された文字を検索することを指定するための特定文字を含む数字表現された文字列を検索するための検索式と、複数種の数字表現の中からどの種類の数字表現された文字列を検索対象とするかの指定情報とを入力する検索式入力ステップと、
検索対象のテキストの中から複数種の数字表現された文字列を検出し、この検出した複数種の数字表現された文字列を統一された数字表現に変換する数字表現検出ステップと、
前記検索式入力ステップで入力された前記検索式に基づいて、前記指定情報で指定された種類の数字表現された文字列を含む前記検索式と一致する文字列を前記検索対象のテキストの中から検索し検索結果として出力する検索ステップとを具備することを特徴とする文字列検索方法。 - 前記数字表現検出ステップは、検索対象のテキストから抽出した元となる数字表現された文字列を特定種類の数字表現された数字文字列と、前記元となる数字表現された文字列における数字表現の種類を特定する属性情報とから構成される統一された数字表現に変換することを特徴とする請求項5記載の文字列検索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010095987A JP2010186486A (ja) | 2010-04-19 | 2010-04-19 | 文字列検索装置及び文字列検索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010095987A JP2010186486A (ja) | 2010-04-19 | 2010-04-19 | 文字列検索装置及び文字列検索方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007069925A Division JP4922030B2 (ja) | 2007-03-19 | 2007-03-19 | 文字列検索装置、方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010186486A true JP2010186486A (ja) | 2010-08-26 |
Family
ID=42767066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010095987A Withdrawn JP2010186486A (ja) | 2010-04-19 | 2010-04-19 | 文字列検索装置及び文字列検索方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010186486A (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6373423A (ja) * | 1986-09-17 | 1988-04-04 | Matsushita Electric Ind Co Ltd | 情報の登録、検索装置 |
JP2005539310A (ja) * | 2002-09-13 | 2005-12-22 | ソニー・エリクソン・モバイルコミュニケーションズ, エービー | 番号による検索方法および番号による検索機能を含む装置 |
WO2007029581A1 (ja) * | 2005-09-09 | 2007-03-15 | J-Data Co., Ltd. | 携帯電話 |
-
2010
- 2010-04-19 JP JP2010095987A patent/JP2010186486A/ja not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6373423A (ja) * | 1986-09-17 | 1988-04-04 | Matsushita Electric Ind Co Ltd | 情報の登録、検索装置 |
JP2005539310A (ja) * | 2002-09-13 | 2005-12-22 | ソニー・エリクソン・モバイルコミュニケーションズ, エービー | 番号による検索方法および番号による検索機能を含む装置 |
WO2007029581A1 (ja) * | 2005-09-09 | 2007-03-15 | J-Data Co., Ltd. | 携帯電話 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI470450B (zh) | 多合一中文輸入方法及其電子裝置 | |
KR101465769B1 (ko) | 사전 단어 및 어구 판정 | |
US9639518B1 (en) | Identifying entities in a digital work | |
KR20140012883A (ko) | 입력 지원 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체, 입력 지원 방법 및 입력 지원 장치 | |
JP2013016036A (ja) | 文書部品生成方法及び計算機システム | |
CN107679122A (zh) | 一种模糊搜索方法及终端 | |
JP4922030B2 (ja) | 文字列検索装置、方法及びプログラム | |
JP2008059389A (ja) | 語彙候補出力システム、語彙候補出力方法及び語彙候補出力プログラム | |
JP2019061522A (ja) | 文書推薦システム、文書推薦方法および文書推薦プログラム | |
JP2010186486A (ja) | 文字列検索装置及び文字列検索方法 | |
JP3803253B2 (ja) | 漢字入力のための方法および装置 | |
JPH06195371A (ja) | 未登録語獲得方式 | |
JP2008210229A (ja) | 知的財産情報検索装置、知的財産情報検索方法及び知的財産情報検索プログラム | |
JP4004060B1 (ja) | 文字検索方法 | |
JPH06266769A (ja) | 同義語情報作成装置 | |
US20140111438A1 (en) | System, method and apparatus for the transcription of data using human optical character matching (hocm) | |
Miller et al. | Cluster-based find and replace | |
JPH08115330A (ja) | 類似文書検索方法および装置 | |
JP3266755B2 (ja) | 中国語情報処理装置 | |
JP5233424B2 (ja) | 検索装置およびプログラム | |
JP5348699B2 (ja) | データ分類システム、データ分類方法およびプログラム | |
JP2009181524A (ja) | 文書検索システム及び文書検索方法 | |
JP2018055504A (ja) | 情報処理装置 | |
JPH0944521A (ja) | インデックス作成装置および文書検索装置 | |
JP5610019B2 (ja) | 検索装置およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120403 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20120412 |