説明

地名表記辞書作成方法および地名表記辞書作成装置

【課題】 地名表記に対する異表記の生成や追加をアドホックに行うのではなく
、これらを可能な限り自動的に追加するとともに、自動的に追加できなかった表
記や不要な表記の追加や削除を二回目以降は自動的に行えるようにすること。
【解決手段】 地名表記を文脈自由文法によって表現し、地名表記の文字列と文
脈自由文法における構文カテゴリとを対応付ける知識、構文カテゴリおよび構文
カテゴリの配列を別の構文カテゴリに対応付ける知識を持つことにより地名表記
の異表記を追加できるようにする。また追加あるいは削除される表記のみを地名
表記辞書を記述する形式と同じ文脈自由文法によって記述しファイルに出力する
ことにより、それ以降の地名表記辞書作成の際に、上記追加、削除処理による変
更を自動的に反映させることができるようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、郵便区分機等で実行される地名表記読取り処理において、主に文字列照合処理の際に使用される地名表記辞書の作成方法と作成装置に関する。特に標準的な表記からなる地名表記リストから、地名表記における単語の並びの異なりや文字の異なり(以後異表記と呼ぶ)を包含する地名表記辞書の作成方法および装置に関する。
【背景技術】
【0002】
文字列を読取るためには、以下の三つのステップからなる処理が行われるのが一般的である。
【0003】
(1) 文字切出し:文字行画像からの文字パタンの切出し
(2) 文字識別:各文字パタンの字種(文字コード)の識別
(3) 文字列照合:予め記憶した読取り対象の文字列と文字識別結果を照合し文字列読取り結果を確定
(1)文字切り出しや(2)文字識別に関する技術として、例えば文献(Koga et al.、 Segmentation of Japanese Handwritten Characters Using Peripheral Feature Analysis International Conference for Pattern Recognition、 pp.1137-1141、 1998)等が知られている。
【0004】
(3)の文字列照合に関する技術としては、文字識別結果のラティスから有限オートマトンを生成し、これに読取り対象の文字列を入力することにより候補単語を抽出する方式(丸川他「手書き漢字住所認識のためのエラー修正アルゴリズム」情報処理学会論文誌第35巻第6号)等がある。また、隠れマルコフモデルを用いることにより、文字切出し、文字識別、文字列照合を同時に行う方式(A.Kaltenmeier、 "Sophisticated Topology of Hidden Markov Models for Cursive Script Recognition、 Proceedings of International Conference of Document Analysis and Recognition '93、 pp.139-142、 1993)や、探索的に文字列を認識する方法(古賀他「住所認識方法」特願平9-238032)がある。ここで用いられる、予め用意した読取り対象の文字列の集合を辞書とよび、地名読取り用に地名表記が格納された辞書を地名表記辞書と呼ぶ。
【0005】
地名表記辞書の計算機メモリ上での形態は、例えば、丸川等の方式では、木構造で表現されており、また、隠れマルコフモデルに基づく方式や探索的に文字列を認識する方法では、ネットワーク形式を採る。文字列照合処理では、文字識別結果を読取り対象の文字列と照合することにより、文字識別処理での誤りを訂正する機能をもつため、文字列読取り精度の向上のためには、いずれの手法を採る場合も、認識対象の文字列、すなわち語彙を予めもれなく辞書ファイルに記憶しておく必要がある。つまり、読取り対象の全表記数に対する登録表記数の割合である辞書完備率をできるだけ高めることが必要である。
【0006】
地名表記には「上之町」における「之」が「ノ」や「の」とも書かれる、あるいは「大字」という文字列が地名表記では省略されるといったような様々な異表記が存在する。郵便区分機での宛名読取り処理を想定した場合、実際の郵便物上に書かれた宛名も上述したような表記の異なりが存在するため、地名表記辞書に異表記を登録し辞書完備率を高めることが宛名読取り精度の向上には必須である。しかし、文字列照合処理を実現するに際し、これらの異表記を完全に網羅した辞書を最初から用意することは困難である。そこで、作成した地名表記辞書に対して異表記を追加する作業が必要となる。
【0007】
地名表記辞書に対する異表記の追加という問題に対して、従来は、「大田区」という文字列に対して「太田区」といった一部の漢字の異なる文字列を人手により追加することにより辞書完備率を向上させる手法(豊瀬、「宛名読取区分機」、特開平5-169031)や、「川越市」に対する「越市」や「市」のような部分文字列を異表記として人手で追加する手法(小島、「宛名読取区分機」、特開平7-39819)が知られている。またデータベースに登録されている文字列を増やす手法として、予め文字列の異表記の対応表を用意し、これに基づき異表記を機械的に追加する手法(臼田他、「標準名付与システム」、特開平5-165619)なども知られている。
【0008】
【非特許文献1】Koga et al.、 Segmentation of Japanese Handwritten Characters Using Peripheral Feature Analysis International Conference for Pattern Recognition、 pp.1137-1141、 1998
【非特許文献2】A.Kaltenmeier、 "Sophisticated Topology of Hidden Markov Models for Cursive Script Recognition、 Proceedings of International Conference of Document Analysis and Recognition '93、 pp.139-142、 1993
【特許文献1】特開平5-169031
【特許文献2】特開平7-39819
【特許文献3】特開平5-165619
【発明の開示】
【発明が解決しようとする課題】
【0009】
日本の地名表記は大きく以下の四通りに分類することができる。
(1) 使用する文字の違いによる異表記、「文字型異表記」と呼ぶ。
「野々下」と「野の下」「野ノ下」等
(2) 単語の省略による異表記、「省略型異表記」と呼ぶ。
都道府県名を省略する異表記、「大字」「字」を省略する異表記等
(3) 付加的に文字列による異表記、「追加型異表記」と呼ぶ。
字(あざ)名などの本来住所の特定には不用である文字列が付加された異表記
「埼玉県川越市大字小ヶ谷」に対する「埼玉県川越市大字小ヶ谷字東関」等
(4) 通り名・通称による異表記、「別名型異表記」と呼ぶ。
京都などで多く見られ、まったく異なる単語により地名を表記する
「京都市下京区大政所町」に対して「京都市下京区烏丸仏光寺下る」等
例えば、「埼玉県川越市小ヶ谷」という地名を例にとると、 (1)(2)の文字型異表記、省略型異表記だけで
「埼玉県川越市小ヶ谷」
「埼玉県川越市小ケ谷」
「埼玉県川越市小が谷」
「埼玉県川越市大字小ヶ谷」
「埼玉県川越市大字小ケ谷」
「埼玉県川越市大字小が谷」
「川越市小ヶ谷」
「川越市小ケ谷」
「川越市小が谷」
「川越市大字小ヶ谷」
「川越市大字小ケ谷」
「川越市大字小が谷」
の12の表記が存在する。さらに「埼玉県川越市小ヶ谷東田」「埼玉県川越市小ヶ谷東関」「埼玉県川越市小ヶ谷西関」等、小字名が併せて用いられる(3)の追加型異表記を考慮に入れ、前述した12の異表記と組合せると、84通りの異表記が存在することになる。さらに、京都市等において顕著に見られる町名や通り名による(4)の別名型異表記を考慮すると、例えば京都市下京区の地名表記における異表記の数は数千から数万通りにものぼる。郵便区分機や住所読取りにおいては、最小でも一つ、あるいは複数の市区町村の住所、地名読取り処理の応用先によっては、最大で全国の住所を読取る必要があり、地名表記の総数は数万以上になる。読取り精度向上には、これら地名表記の異表記を追加し、辞書完備率を高めた地名表記辞書を作成することが必要である。
【0010】
しかし、数万にも及ぶ表記をアドホックに地名表記辞書に追加していくことは困難である。また単語の数だけ異表記の対応表を用意して、自動的に異表記の追加を行うおうとしても、異表記の対応表の作成は、単語毎にアドホックに行わなければならず、同様に困難である。さらに単語の並びに関する異表記(特定の単語、文字列の省略など)に関しては、その組み合わせの数は多くなるため、アドホックに追加することはもちろん、異表記の対応表を持つことも困難である。さらに特定の文字に関する置換規則を用意しておき、異表記を自動的に追加しようとすると、例えば単語の先頭の「野」を「ノ」に置換するなど誤った異表記を追加してしまうことになり、こうして作成した地名表記辞書は、その容量が大きくなるだけでなく、読取り精度に悪影響を与える。
【0011】
異表記による地名表記辞書の容量の増大を抑えるために、文脈自由文法の生成規則を用い地名表記の異表記を表現する手法が知られている(古賀、「地名表現方法、地名文字列認識方法及び装置」、特願平11-187753)。すなわち、地名文字列の一部または全部を構成する部分文字列毎に、文字または構文カテゴリの配列を定義し、文字または定義済みの構文カテゴリの配列からなる構文カテゴリにより地名文字列を表す。例えば「ヶ」「ケ」「が」を一つの構文カテゴリとして定義し、上記の文字が使用される文字列をこの構文カテゴリにより定義すれば、「ヶ」「ケ」「が」に関する異表記をすべての地名表記に対して追加したことになる。ここで、構文カテゴリとは、同等の意味、同等の用法、同等の発音を持つなど何らかの共通性が存在する文字列に対して、これらの文字列を要素とする集合のことである。また、このような集合につけられた名前を構文カテゴリ名と称す。
【0012】
文脈自由文法を用いて地名表記を記述すると、地名表記の複数の箇所に現れる単語や部分文字列の異表記が同一の構文カテゴリで表されるため、異表記の追加作業の回数は減る。しかし、それぞれの地名表記のうち、異表記の存在する部分を定義された構文カテゴリで置換していく必要がある。この時、地名表記のある部分文字列を対応する構文カテゴリに置換える作業は、人手により行わなければならず、地名表記辞書の作成はやはり困難である。
【0013】
本発明における第一の目的は、地名表記に対する異表記の生成や追加をアドホックに行うのではなく、これらを可能な限り自動的に追加し、辞書完備率の高い地名表記辞書の作成方法を提供することにある。
【0014】
地名表記辞書へ異表記を自動的に追加できなかった場合、辞書完備率を高めるためには、人手により表記の追加を行う必要がある。この場合、地名表記辞書への異表記の追加分は、自動的に追加された表記と、人手により追加されたものの二つの集合からなる。地名表記辞書の作成の際は、標準的な地名表記のみからなる地名表記リストが存在し、これをもとに、必要に応じ異表記を追加して地名表記辞書を作成するのが一般的である。標準的な地名表記リストに変更が加わった時、その変更を地名表記辞書に反映させるためには、再度異表記の追加処理を実行する必要がある。この自動的に追加した表記の他に、人手により追加した表記について、以前に追加した際と同じ作業を地名表記辞書作成者に強いるのは、辞書作成コストが大きくなるとともに、以前に追加した表記の追加漏れに繋がり、辞書完備率の低下に繋がる可能性がある。
【0015】
本発明のおける第二の目的は、地名表記辞書に自動的に生成・追加できなかった地名表記の異表記を人手により追加する手段を提供するとともに、地名辞書作成の際に基になった、標準的な地名表記リストが変更された際にも、辞書作成の際に追加された様々な異表記や、地名表記辞書に加えられた変更を保存しながら、新しい地名表記リストから地名表記辞書を作成する手段を提供することにある。
【課題を解決するための手段】
【0016】
本発明では、標準的な地名表記リストとして、都道府県、市区郡町村、町名・大字、字といった住所の階層毎の単語に区切られたテキストデータを想定する。地名表記が区切られていない場合であっても、「県」や「市」といったキーとなる文字により、地名表記を分割することにより容易に変換が可能である。また本発明における地名表記辞書として、文脈自由文法で記述された地名表記の集まりを想定する。すなわち、地名表記の一部または全部を構成する部分文字列毎に、文字または構文カテゴリの配列を定義し、文字または定義済みの構文カテゴリの配列からなる構文カテゴリにより地名文字列を表す。
【0017】
地名表記の異表記を可能な限り自動的に地名表記辞書に追加するという上記の課題を解決するために、本発明では、住所の階層毎の単語に区切られた地名表記のテキストデータを文脈自由文法による表現に変換する手段と、文字列と文脈自由文法における構文カテゴリとを対応付ける知識、文脈自由文法における構文カテゴリおよび構文カテゴリの配列を別の構文カテゴリに対応付ける知識を持ち、これらの知識を用いて文脈自由文法で表記された地名表記に異表記を追加する手段を有する地名表記辞書作成手法を提供する。
【0018】
ここで用いる文字列と文脈自由文法における構文カテゴリとを対応付ける知識、文脈自由文法における構文カテゴリおよび構文カテゴリの配列を別の構文カテゴリに対応付ける知識として、以下の二種類の知識を提供する。
(a) 地名単語の定義における文字の異なりに関する異表記を追加するための、文脈自由文法による構文カテゴリの定義文と、文字列から構文カテゴリへの置換処理を起動するための条件からなる知識。これを「文字異なり補完型知識」と呼ぶ。
【0019】
「上之町」における「之」「ノ」「の」、あるいは「ガ」「ヶ」「が」などの文字を一つの構文カテゴリとして定義し、地名表記文字列中の上記文字を構文カテゴリに置換する。
(b) 地名表記定義文における構文カテゴリの並びを条件として、構文カテゴリに対する置換、省略等、新たに追加する定義文の内容を記した項目からなる知識。これを「単語異なり補完型知識」と呼ぶ。
【0020】
都道府県名、市区郡町村名と続く構文カテゴリの並びに対しては、都道府県名の省略は可能であるといったように特定の構文カテゴリの並びに対して、別の構文カテゴリの並びを定義する。
【0021】
地名表記辞書へ自動的に追加できない表記が存在する場合、該当する構文カテゴリおよび構文カテゴリの配列を指定すると、そのカテゴリが表現する文字列を表示する手段と、文字列を入力する手段と、地名表記辞書作成者が入力した文字列を構文カテゴリが表現する地名表記に追加する手段を持つことにより、自動的に追加できなかった地名表記を地名表記辞書に追加できるようにする。
【0022】
さらに、上記の入力した文字列を構文カテゴリが表現する地名表記に追加する手段において、追加された地名表記文字列のみからなる構文カテゴリをメモリ上に作成するか、あるいはファイルに出力する手段と、文脈自由文法で表現された地名表記辞書に対して、上記のファイル出力された追加された地名表記文字列を追加する手段を有することにより、地名表記辞書に自動的に生成・追加できなかった異表記を人手により追加することができるとともに、住所の階層毎の単語に区分された地名表記リストが変更された際にも、以前の辞書作成の際に加えられた変更を保存しながら、新しい地名表記辞書を作成することが可能となる。
【0023】
これまで地名表記辞書とは地名表記文字列を列挙したテキスト、文脈自由文法で記述したテキスト形式であるとしてきたが、郵便区分機における宛名読取り、あるいは他の住所文字列読取り処理に用いられる地名表記辞書は、以下の三種類の形態が考えられる。
(a) ファイルに格納された「辞書ソースファイル」
(b) メモリ上に格納された「辞書テーブル」
(c) (1)と(2)の中間段階の「辞書バイナリファイル」
登録された地名表記の保守性、視認性を高めるために「辞書ソースファイル」の形態を取る。また文字列照合処理との親和性、処理速度の高速化を図るために、計算機上では「辞書テーブル」の形態を取る。さらに地名表記辞書を保存する際のディスクスペースを小さくするために「辞書バイナリファイル」の形態を取る。これらいずれの形態をとった場合でも、その情報量、つまり登録された地名表記は等しい。また文脈自由文法で書かれた辞書ソースファイルを計算機により翻訳し辞書バイナリファイル、もしくは辞書テーブルの形態に変換することは、文献(中田、 「コンパイラ」、 ISBN4-7828-5057-3)等に記述された手法を用いることにより可能である。
【0024】
以降本明細書では、地名表記辞書の形態として(a)の辞書ソースファイルを想定するが、本発明は地名読取り処理に用いられる地名表記辞書が、辞書テーブルや辞書バイナリファイルの形態をとった場合でも同様に適用可能である。
【発明の効果】
【0025】
以上述べてきたように、本発明によれば、一地域に対して標準的な地名表記のみを記した地名表記リストから、異表記を可能な限り自動的に追加し、辞書完備率の高い地名表記辞書を容易に作成することができる。また、自動的に追加できなかった異表記に対しても、これを人手によって追加する手段を提供することにより、地名表記辞書を作成する対象となる地域に特有の異表記を追加することができ、辞書完備率をさらに高めることができる。また、ここでの人手による追加作業の結果を保存し、以降の辞書作成処理の際に利用することで、人手による追加作業を行う回数を抑え、辞書作成作業を簡単化することが可能となる。
【発明を実施するための最良の形態】
【0026】
本発明による地名表記辞書作成方法の実施形態の一例として、日本の地名表記に対する異表記を含んだ地名表記辞書の作成について述べる。ここで日本の地名表記とは、都道府県名、市区郡町村名、町名(もしくは大字、字名)までを表現する文字列のこととする。すなわち、「東京都国分寺市東恋ヶ窪 1丁目280番地」という住所表記において、「東京都国分寺市東恋ヶ窪」の部分を地名表記と呼ぶ。
【0027】
最初に、地名表記辞書作成処理の流れを図1を用いて述べる。
【0028】
地名表記辞書作成処理の入力として、標準的な地名表記を列挙したファイルである地名表記リスト101を用意する。標準的な地名表記は、単語に区切られ、単語の並びとして地名表記リストに格納される。この単語に区切られた地名表記リストから形式言語表現変換処理102において、予め定義された、地名表記を表現する文脈自由文法に則した形式で記述された地名照合用地名表記辞書(以下地名表記辞書と呼ぶ)103に変換される。なお、この段階では地名表記辞書の中には標準的な地名表記しか含まれていない。以降の処理においては、地名表記は文脈自由文法によって表現された形式で処理される。文脈自由文法で表現された標準的な表記に対して、知識による異表記追加処理104を行う。ここでは、「上之町」という単語が地名読取り処理への入力で「上ノ町」「上の町」と書かれる場合に対して、漢字に挟まれた「之」は「ノ」「の」を異表記にもつといった規則や、「川越市大字藤間」の「大字」は省略してもよいといった、地名の表記法に関する規則を集めた地名表記追加用知識105を用意しておく。
【0029】
地名表記追加用知識を用いて異表記の追加された地名表記に対して、状況依存異表記追加処理106において、人手等によるアドホックな形で異表記を追加し107、地名照合用地名表記辞書103を出力する。ここで追加される異表記は地名表記追加用知識105を用いて自動的に追加することができない、「城内市本町」を「城内市大手前」と表記するような異表記である。状況依存異表記追加処理106において追加された表記は文脈自由文法の形式で追加・修正異表記定義109として出力、保存される。標準的な地名表記リスト101に変更が加わるなどして110、地名辞書作成処理をやり直す場合、この追加・修正異表記定義109は、事例による異表記追加処理111において、過去に加えられた異表記として地名表記辞書103に追加される。これによって地名表記辞書作成の度に、人手によるアドホックな異表記追加をしなくてもすむようにし、地名辞書作成における手作業の付加を最小限に押さえることができる。ここで用いられる地名表記追加用知識105は人手により新たな知識の追加等の編集作業112を行うことも可能である。
【0030】
ここで作成された地名表記辞書103はネットワーク113等を介して郵便区分機114やその他の地名読取装置115にロードされ、地名表記読取処理に用いられる。
【0031】
さらに作成された地名表記辞書103は、メディア変換装置116によって記憶媒体の変換が行われ、地名表記メディア117として配布することも可能である。
【0032】
以下、図1における各データ、知識および処理について詳細に述べる。
【0033】
図1で使用するデータのうち、最初に地名表記リスト101について述べる。日本の地名表記は、(1)都道府県、(2)市区郡町村、(3)町名・大字、さらに必要に応じて(4)字(あざ)の階層の単語に分けることができる。例えば地名表記「東京都国分寺市東恋ヶ窪」は、(1)都道府県名として「東京都」、(2)市区郡町村として「国分寺市」、(3)町名・大字として「東恋ヶ窪」の単語に分割できる。また別の地名表記「愛知県名古屋市南区本星崎町字宮浦」においては(1)都道府県名「愛知県」、(2)市区郡町村名「名古屋市南区」、(3)町名・大字「本星崎町」、(4)字名として「字宮浦」という単語に分割できる。本実施例での地名表記リストとして、各地名表記は住所の階層に従い単語に分割され、同じ階層の単語を同一のファイルに集めるとともに、各単語にコードを割り振り、地名表記は単語に割り振られたコードを指すことにより表現するという形式を想定する。このような同一階層の単語が集められたファイルを地名単語リストファイルと呼ぶ。またダイレクトメール等の宛名によく書かれている、カタカナによる宛名を読取るために、カタカナによる地名表記辞書も作成することを考え、上記住所階層毎の単語には振り仮名が振られているとする。カタカナの地名表記の辞書を作成しない場合は、以降の記述のうち、カタカナに関する部分を削除すればよい。地名表記は、上記地名単語リストファイル中の地名単語へのポインタの並びにより構成される、コードリストファイルにより表現される。
【0034】
具体的には、都道府県名に関する地名単語リストファイルは図2のようになる。都道府県コード201は都道府県名202に対して、一意に割当てられた番号である。都道府県ふり仮名203は都道府県名の読みがカタカナで格納されている。市区郡町村名に対する地名単語リストファイルは図3のようになる。都道府県コード301はその市区郡町村が存在する都道府県名のコードである。これは図2に示した都道府県地名単語リストファイルに記された都道府県コードと同じである。市区郡町村コード302とは市区郡町村名303に対して、一意に割当てられた番号である。政令指定都市のように区が存在する場合は名古屋市南区を一つの単語として格納する。市区郡町村名ふり仮名304は市区郡町村名の読みがカタカナで格納されている。町名・大字に対する地名単語リストファイルは、図4のようになる。都道府県コード401、市区郡町村コード402はその町名・大字が存在する都道府県、市区郡町村のコードである。町名・大字コード403は町名・大字名404に対して、割当てられた番号である。町名ふり仮名405は町名・大字名に対する読みをカタカナで格納している。標準地名表記に対して、予め異表記を持つことも可能である。地名単語リストファイルにおいて異表記数406に格納された数だけ異表記欄407に異表記を格納しておく。例えば「石元町」408に対する異表記「石本町」409が存在する時、ファイルに格納される。異表記は後に規則により、あるいは人手により追加されるため、地名単語リストファイルにおける異表記フィールドは省略可能である。字名に関する地名単語リストファイルは図5のとおりである。都道府県コード501、市区郡町村コード502、町名・大字コード503はそれぞれこの字が存在する都道府県、市区郡町村、町名・大字のコードである。字コード504は字名505に対して一意に割り振られたコードである。字ふり仮名506は字名に対する読みをカタカナで格納している。字名に異表記が登録されていれば、異表記数507、異表記508フィールドに持つこともできる。各地名表記は、図6に示すようなコードリストファイルによって表現される。601は各地名表記を識別するための記号であり、ここでは、地名表記に対して一意に割当てられている7桁の郵便番号601を用いる。郵便番号に続いて、都道府県コード602、市区郡町村コード603、町名・大字コード604、字コード605を指定することにより、地名表記を記述する。
【0035】
本実施例では地名表記辞書作成処理の入力として、上記に述べたような、地名単語リストファイルとコードリストファイルを想定するが、「東京都国分寺市東恋ヶ窪」のような地名を表す文字列のリスト形式であってもよい。例えば、地名を表記する文字列に対して、「県」「市」「町」「大字」「字」といったキーとなる文字によって文字列を単語に分割し、これにコードを割り当てることにより、上記地名単語リストファイルとコードリストファイルの形式に変換することができる。従って、地名辞書作成処理の入力として、地名単語リストファイルとコードリストファイルの形式を前提としても一般性を失わない。
【0036】
図1における地名表記辞書103を記述する形式である、地名を表記するための文脈自由文法の例を示す。
【0037】
定義する文脈自由文法の終端記号として、以下の記号を用いる。これらは、文脈自由文法の記述法として一般的なBNF記法(Backus-Naur-Form)(中田「コンパイラ」ISBN4-7828-5057-3)と同様の意味を持つ。
::= 置換。左辺の構文カテゴリを右辺の構文カテゴリまたは文字の配列で置換できることを意味する。
[ ] オプション。[ ]内の記述があってもなくてもよい事を意味する。
| 選択。右辺、左辺のいづれかを意味する。
( ) 結合。前後の変数より先に括弧内を評価する。
< > 構文カテゴリを表す変数名。
; 文の終わり。
begin 変数の有効範囲の始まり。
end 変数の有効範囲の終わり。
【0038】
このほかに、アラビア数字のならび、漢字・ひらがな・カタカナの並びが終端記号として用いられる。非終端記号として、「地名表記」「地域ブロック群」「地名ブロック群」「地域ブロック」「地名ブロック」「地名宣言」「変数定義」「変数式」「変数項」「地名表記定義」「数字列」「文字列」「英字」の13種を用意する。
【0039】
この文脈自由文法を表す生成規則は以下のようになる。
【0040】
「地名表記」 → 「地名宣言」「エリアブロック群」
「地名表記」 → 「地名宣言」「町域ブロック群」
「地域ブロック群」 → 「地域ブロック群」「地域ブロック」
「地域ブロック群」 → 「地域ブロック」
「地名ブロック群」 → 「地名ブロック群」「地名ブロック」
「地名ブロック群」 → 「地名ブロック」
「地域ブロック」 → bigin 「地名宣言」「地名ブロック群」 end
「地域ブロック」 → bigin 「地名宣言」「地域ブロック群」 end
「地名ブロック」 → bigin ( 「数字列」 ) 「地名宣言」「地名
表記定義」 end
「地名宣言」 → 「地名宣言」「変数定義」
「地名宣言」 → NULL
「変数定義」 → 「町域変数名」 ::= 「変数式」 :
「変数式」 → 「変数式」 │ 「変数項」
「変数式」 → 「変数式」「変数項」
「変数式」 → 「変数項」
「変数項」 → [ 「変数式」 ]
「変数項」 → ( 「変数式」 )
「変数項」 → 「町域変数名」
「変数項」 → 「文字列」
「地名表記定義」 → < 「数字列」 > ::= 「変数式」 :
「町域変数名」 → <「英字」「文字列」 >
ここで非終端記号「数字列」「文字列」「英字」はそれぞれ、数字の並び、漢字・ひらがな・カタカナの並び、アルファベット一文字の終端記号を表す。また、これらの記号は、以下の順の優先順位で評価する。
(1) <W「文字列」>および<「数字」>で記述される構文カテゴリの各定義
(2) [ ]および( )のかっこ類.2重以上の入れ子でかっこ類を用いる場合に
は、内側のかっこを優先して評価.
(3)|
(4)::=
この他に、マクロ命令として、「#include < ファイル名 > 」を用意する。この文に対して、「ファイル名」で指定された文脈自由文法で記述された地名表記のファイルをマクロ展開する。これにより、文脈自由文法で記述された地名表記を複数に分割してもつことができる。例えば、住所の階層に対応してファイルを分割すれば、同一の文脈自由文法の定義文を書く必要がなく、管理が容易になる。また、「/*」と「*/」で囲まれた部分はコメントとして扱う。
【0041】
例として、「愛知県名古屋市南区本星崎町」の異表記を含んだ地名表記を文脈自由文法で記述した例を図7に示す。本実施例では、文脈自由文法で記述された地名表記のファイルとして、
(a)地名単語を構文カテゴリとして定義するファイル、地名単語定義ファイルと呼ぶ。
(b)地名表記を構文カテゴリにより定義するファイル、地名表記定義ファイルと呼ぶ。
(c)上記(a) (b)によって地名表記全体を定義するファイル、全表記定義ファイルと呼ぶ。
(d)地域に関係無く用いられる文字列を構文カテゴリとして定義したファイル、共通表記定義ファイルと呼ぶ。
の四種類に分割して、地名表記辞書を作成する。上記(d)のファイルは予め地名辞書作成処理における異表記を追加するための地名表記追加用知識105として事前に用意しておくファイルである。
【0042】
次に図1における処理のうち、形式言語表現変換処理102に関して述べる。図8は処理の流れを表したフローチャートである。標準的な地名表記リストである、住所の各階層の地名単語リストファイルとコードリストファイルから、文脈自由文法による表現形式への変換処理を、「名古屋市南区」の地名表記を例に用いて述べる。
【0043】
形式言語表現変換処理102における第一ステップ(ステップ801)として、上記(c)の地名表記全体を定義するファイルを作成する。名古屋市南区に関する地名表記全体を定義するファイルの一部を図9に示す。地名表記全体を定義するファイルの作成において、まず上記(a)(b)の名古屋市南区での地名単語定義ファイルと地名表記定義ファイルの名前を設定し、メモリ上に記憶する。次に、地域に依存しない構文カテゴリを参照するため、全体表記定義ファイルの一行目に上記(d)ファイルをインクルードする命令901を出力する。続いて、名古屋市南区の地名表記を定義することを明示的に示すため、「begin」902をファイルの二行目に出力する。そして、地名単語定義ファイル、地名表記定義ファイルを参照するため、三行目と四行目にそれぞれ、名古屋市南区における地名単語定義ファイルのインクルード文903と名古屋市南区の地名表記定義ファイルのインクルード文904を出力する。最後に、名古屋市南区の地名表記が終わったことを明示的に示すために、「end」文905を五行目に出力する。複数の地域の地名表記を定義する際は、上述の「begin」と「end」の間の文の生成を繰り返せばよい。また、都道府県、市区町村の階層でそれぞれ地名単語の定義ファイルと地名表記の定義ファイルを分割することにより、例えば名古屋市内の複数の区にまたがる地名表記に関する定義ファイルを作成する際、都道府県や市に関する定義ファイルを一度インクルードするだけですみ、地名表記辞書の冗長性が減る。このためには、「begin」「end」を入れ子構造にすればよい。
【0044】
形式言語表現変換処理102における第二のステップとして、地名単語定義ファイル作成処理802を行う。住所の各階層の地名単語リストファイルから、地名単語定義するファイルを生成する。まずはじめに、地名単語リストファイルにおいて、都道府県名、市区郡町村名、町名・大字名、字名に記された単語に対して、構文カテゴリを作成し、地名単語定義ファイルに出力していく。構文カテゴリの名前はその単語自身とする。このとき、構文カテゴリ名の前の英字として、都道府県名のカテゴリに対しては「P」、市区郡町村に対しては「C」、町名・大字に対しては「T」、字名に対しては「V」をつける。市区郡町村名フィールドにおいて、市と区や郡と町村が混在している場合にも、それらを分割することなく、一つの変数として定義する文を生成する。例えば「愛知県」に対する構文カテゴリの名前は「<P愛知県>」となる。さらに構文カテゴリを地名単語リストファイルにおける都道府県コード、市区郡町村コード、町名・大字コード、字コードを用いて表し、各行の先頭にコメントの形で付加する。名古屋市南区の地名単語に対して、ここまでの処理を行って生成された地名単語定義ファイルの例を図10に示す。行頭のコメント記号「/*」「*/」に囲まれた部分は、「!」に続いて都道府県等を表すコードが記される。例えば行1001は、愛知県を表すコード「23」に続いて名古屋市南区をあらわすコード「112」が「!」を挟んで記される。都道府県コードから住所の階層に従いコードを並べることで、地名単語間の接続関係を保持することが出来る。また地名表記リストの地名単語リストファイル中に、図3や図4で示したような地名単語に関する異表記が格納されていれば、行1002のように定義文の右辺を|で区切って追加する。
【0045】
ここで、行1001や行1003のように、市区郡町村名として「〜市〜区」や「〜郡〜町」となっている場合、「〜市」や「〜郡」の部分を共通化することにより地名表記辞書の冗長性を減らすことが出来る。そこで、地名単語定義ファイル作成処理のおける次ぎの処理として、これらの文字列を地名単語に分割する。市区郡町村名に関する地名単語リストファイルに記された文字列は、以下の六種類ある。
(1)〜市
(2)〜市〜区
(3)〜区
(4)〜郡〜町
(5)〜町
(6)〜郡〜村
(7)〜村
上記の六つについて地名単語分割の処理の流れを図11を用いて述べる。ステップ1101において、最初にフィールド内の最後の文字をみることにより、(1)、(2)(3)、(4)(5)、(6)(7)の4つにグループに区別することができる。(1)についてはステップ1102にすすみ、そのまま文字列を地名単語とする。(2)(3)については、文字列中に「市」が含まれているかどうかで区別でき、後の2つのグループについては、文字列中に「郡」が含まれているかどうかで、それぞれ区別することができる。(2)、(4)、(6)の3グループについては、2つの単語に分割する。(2)については、「市」の前後で単語に分ける。(4)(6)についても同様に、「郡」を区切りとすべきであるが、フィールド中に「郡上郡八幡町」など「郡」が複数含まれる場合がある。このような場合にも(4)、(6)を正しく単語を分割するために、以下のような規則を設ける。
【0046】
フィールド中の二文字目から文字列をサーチし、最初に現れた「郡」の後ろで分割する。分割した後の単語に関して、政令指定都市あるいは郡を表す一つ目の単語に対するカテゴリ名は<Oを、区、町村を表す二つ目の単語に対するカテゴリ名には<Wを付けて区別する。「郡」が現れなければ分割は行わず、文字列全体を<Wで始まるカテゴリとして定義する(ステップ1103、1104)。ここで分割されない、行1002の「尾張旭市」のような単語に対しても生成された「<C」で始まる定義文を「<O」で始まる定義文として再定義する。この時、「<O」で始まる変数名からは末尾の「市」「町」「村」を除く。さらに、地名単語定義ファイルの行頭の地名コードをもとに、「<P」で始まる構文カテゴリで表される都道府県名と<Cで始まる構文カテゴリで表される市町村名とを組合せる。これによって「<C」で始まる構文カテゴリの定義に都道府県名から市区群町村までの表記を定義することとなる。ここまでの処理で生成された地名単語定義ファイルの例を図12に示す。
【0047】
地名単語定義ファイル作成処理802における三番目の処理として、定義文の右辺が構文カテゴリ名のみからなる定義文を地名表記定義ファイルに移す。「<C」で始まる構文カテゴリの定義文は、その右辺についても既に定義された構文カテゴリのみからなっている。そこで、これらの「<C」で始まる定義文のみを抽出し、別途次に作成する地名表記定義ファイルに出力する。こうして地名単語の構文カテゴリによる定義と、地名表記の構文カテゴリによる定義が完全に分割される。このようにすることにより、漢字による地名表記辞書とカタカナによる地名表記辞書を作成する場合、地名単語の構文カテゴリによる定義ファイルをそれぞれ作成するだけで、地名表記の構文カテゴリによるファイルは漢字とカタカナの辞書で共通化できるため、地名表記辞書の冗長性を小さくする効果がある。以上の処理により生成される地名単語定義ファイルを図13に、抽出された「<C」で始まる構文カテゴリの定義文を図14に示す。
【0048】
形式言語表現変換処理102における最後のステップとして、地名表記定義ファイル作成処理803を行う。処理の流れを図15と処理例図16を用いて述べる。
【0049】
まずはじめに、ステップ1501においてコードファイルの末尾かどうかを調べ、末尾であれば処理を終える。未処理の地名表記が残っていればステップ1502に進み、コードファイルの都道府県、市区郡町村、町名・大字コードから、地名表記を特定するコードを地名表記定義ファイルのコメント行として出力する。次にステップ1503に進み、「begin」を出力する。これは構文カテゴリの有効範囲を明確化するとともに、辞書ファイルの視認性を高めるためである。さらにステップ1504において、コードファイルの郵便番号欄に記された地名表記の識別子を括弧で囲んで出力する。次にステップ1505に進み、郵便番号を名前にもつ構文カテゴリを定義する。具体的には、構文カテゴリの識別子を「< >」で囲み左辺として、記号「::=」を挟んで、右辺には先に記したコードに対応する構文カテゴリを地名単語定義ファイルから検索し、そのカテゴリの名前を順に並べ、行1601のような定義文を作成する。字名が存在すれば、該当する地名表記の町名・大字のカテゴリ名の後に、「( )」を追加し、その内部に字名の構文カテゴリ名を追加する。字名が複数存在する場合は「|」で挟んで行1602のように追加する。
【0050】
以上、漢字による地名表記辞書に関する、形式言語表現への変換について述べたが、カタカナによる地名表記辞書の作成についても、同様の手法で実現可能である。
【0051】
次に図1における、知識による異表記追加処理104に関して述べる。事前に用意した地名表記追加用知識105によって自動的に追加される表記は、以前に述べた四つの異表記のうち、以下の三種類である。
(1) 文字型異表記:地名単語における文字遣いの異なりなどの異表記
「之」「ノ」「の」、あるいは「ガ」「ヶ」「が」など
(2) 省略型地名表記:単語・構文カテゴリが省略される異表記
県名の省略は可能であるといった表記の異なり
(3) 追加型異表記:単語・構文カテゴリが追加される異表記
字名(あざ)を追加することができるという異表記
これらの異表記を追加するために、図17に示すような手順をとる。これを図13、図14の地名表記を例に述べる。知識による異表記追加処理の第一のステップ1701として、特定の文字列を既に定義し知識として持っている構文カテゴリに置換する。ここでの知識とは本実施例で用いる文脈自由文法による構文カテゴリの定義文の形式で記述されており、定義文の右辺の文字列が処理対象の地名単語定義ファイル中に存在する場合に、その文字列を左辺の構文カテゴリ名に置換する。
例えば、図18の行1801の「大字」という文字列は、町名・大字名を表す構文カテゴリの先頭に位置するため、これを「<V大字>」という定義済みの構文カテゴリに置換し、行1804のようにする。行1802、行1803の「ヶ」「の」という文字も地名単語の先頭、末尾ではなく、かつその両側が漢字となっているため、それぞれ「<Vヶ>」「<Vノ>」という定義済みの構文カテゴリに置換し、行1805、行1806のようにする。知識の形式については後で述べる。
【0052】
知識による異表記追加処理の第二のステップ1702として、地名単語文字列の複数箇所に現れる文字列の構文カテゴリ化を行う。ここで文字型異表記を生成する。これは、例えば愛知県では「尾張」で始まる地名が多いこと、あるいは京都市の地名で、「西九条」や「一乗寺」などの広い範囲を表す地名を接頭語に持つ地名が多いことから、複数の町域に渡って共通して接頭句のように用いられている文字列を構文カテゴリ化する。これにより、複数の地名に共通して表れる文字列に対して、異表記の追加処理が一元化できるとともに、異表記の文字列を地名表記字書中に複数箇所で持つことがなくなるため、辞書の冗長性を小さくすることができる。地名単語定義ファイルに対して、定義文の右辺の先頭から二文字あるいは三文字を取出しメモリ上に保持しておき、複数の定義文において重複していれば、この共通部分の文字列を構文カテゴリとして定義し、もとの文字列を構文カテゴリ名で置換する。図19において、行1901と行1902の右辺の先頭三文字「西九条」が共通に存在しているため、これを構文カテゴリとして行1903を作成し、行1901、行1902の文字列「西九条」を構文カテゴリ「<V西九条>」で置換し、行1904、行1905を生成する。
【0053】
知識による異表記追加処理の第三のステップ1703として、構文カテゴリによる地名表記の定義の追加を行う。ここで追加される異表記は省略型異表記と追加型異表記であり、主に地名表記における単語、すなわち構文カテゴリの並びの異なりである。例えば、都道府県名が省略可能であるとか、町名・大字における「大字」が省略可能であるとか、上述した京都市における「西九条」等の広い範囲の地名を省略可能であるといった例がある。これらを後述する形式の規則として持っておき、地名表記定義ファイル、および地名単語定義ファイルに対して定義文の追加を行う。例えば、図20の(a)の地名表記の定義に対して、市町村名から始まる表記を追加するという規則が有効になった場合、「南区」と「尾張旭市」の定義文の次に、それぞれ「<P愛知県>」の省略された定義文を付加する。その結果が図20(b)であり、行2001と行2002が追加された定義文である。次に表記が定義されると、左辺の構文カテゴリが同じ定義文に対し、or結合演算子「|」を用いて一つの定義文とする。この結果、行2003と行2004のようになる。開始位置の指定の他、ある文字列の省略等も同様の手順によりTPDL中に反映する。地名単語定義ファイルへの異表記の追加も同様の手順により可能である。
以上が知識による異表記追加処理である。
【0054】
次に図1における、異表記追加のために用いられる地名表記追加用知識105の知識表現について述べる。
【0055】
異表記追加に用いる知識は上述したように、以下の二種類である。
(a)地名単語の定義における文字型異表記を追加するための、文脈自由文法による構文カテゴリの定義文と、文字列から構文カテゴリへの置換処理を起動するための条件からなる知識。
(b)省略型異表記、追加型異表記を生成するための、地名表記定義文における構文カテゴリの並びを条件として、構文カテゴリに対する置換、省略等、新たに追加する定義文の内容を記した項目からなる知識。
【0056】
上記(a)に関する具体的な例を、図21を示す。この知識は構文カテゴリ変換規則部2101と構文カテゴリ知識定義部2102からなる。構文カテゴリ変換規則部は四つの項目からなり、左から構文カテゴリのタイプ表すカテゴリタイプフィールド2103、変換の対象となる文字列の並びを規定する文字列条件フィールド2104、構文カテゴリ定義部において、変換される構文カテゴリの定義文の左辺を「|」記号で区切った際に何番目の文字列を変換の条件とするかを示す、比較対象位置フィールド2105、構文カテゴリ定義部において、変換される構文カテゴリの定義文を指す定義ポインタフィールド2106からなる。構文カテゴリ知識定義部は、文脈自由文法で書かれた地名表記ファイルのうち、(d)の地域に依存しない文字列に対する構文カテゴリを定義する共通地名表記定義ファイルである。このように表現される知識の意味を規則2107を例に述べる。
【0057】
1.地名単語定義ファイル中の構文カテゴリの定義文において、その左辺の構文カテゴリの種類、すなわち「<」の次の英字がカテゴリタイプフィールドに書かれた「C、 O、 W、 T、 V」のいずれかであり、
2.漢字で終わる形に地名単語定義ファイル中の構文カテゴリの定義文の左辺が、以下の条件、すなわち、定義ポインタフィールドが指す構文カテゴリ知識定義部中の定義文の右辺で表現される文字のうち、比較対象位置フィールドに書かれた1番目と2番目の、「ヶ」「ケ」」のいずれかが、文字列条件フィールドに示すように、漢字で始まり、途中に上記二文字を含むこと、を満たせば 地名単語定義ファイル中の構文カテゴリの定義文の右辺における上記文字を構文カテゴリ「<Vヶ>」で置換する。
【0058】
ここで、構文カテゴリ変換規則部の各フィールドの記法を述べる。
【0059】
カテゴリタイプフィールドには以下の英字を記入することにより、当該知識を適用する地名単語定義ファイル中の構文カテゴリの定義文を限定する。
【0060】
P 都道府県名の構文カテゴリ
C 地区群町村名の構文カテゴリ
O 郡名、市名の構文カテゴリ
W 区名、町村名の構文カテゴリ
T 町名・大字名の構文カテゴリ
V 字名、その他の構文カテゴリ
次に文字列条件フィールドに用いられる記号を記す。
【0061】
x 構文カテゴリ知識定義部に書かれた置換の対象となる文字(列)
K 文字列の条件を記述する際に任意の漢字を表す
H 文字列の条件を記述する際に任意の平仮名を表す
T 文字列の条件を記述する際に任意のカタカナを表す
( ) 上記文字の種類が書かれた範囲を明示的にするための記号
+ その前に書かれた文字の一回以上の繰り返し
* その前に書かれた文字のゼロ回以上の繰り返し
^ 文字列の先頭を表す
$ 文字列の末尾を表す
構文カテゴリ知識定義部、すなわち、地域に依存せずに使用される文字列に対する構文カテゴリを定義する定義文を収めるファイルには以下のような構文カテゴリを用意しておく。
【0062】
<Vヶ> ::= ヶ|ケ|が;
<Vノ> ::= ノ|之|の;
<V々> ::= ノ|々|の;
<V壱> ::= 壱|一|1;
<V弐> ::= 弐|二|2;
<V参> ::= 参|三|3;
<V通> ::= 通[り];
<V大字> ::= 大字;
<V字> ::= 字;
<V入ル> ::= 入([[い]る]|[[イ]ル]);
<V上ル> ::= 上([[ガ]ル]|[[が]る]);
<V下ル> ::= 下([[ガ]ル]|[[が]る]);
異表記追加のための知識のうち(b)について述べる。具体的な例を図22に示す。この知識は四つのフィールドから成り、左から異表記追加対象となる地名表記の定義文における構文カテゴリの並び方を記したカテゴリ条件フィールド2201、カテゴリ条件部の条件を満たした定義文に対して加える変更の種類を記す変更処理指定フィールド2202、変更処理指定部での処理の対象となる構文カテゴリ数を表すカテゴリ数指定フィールド2203、追加処理の際に新しく追加される構文カテゴリの名前を示す追加カテゴリ指定フィールド2204となる。このように表現される知識の意味を規則2205を例に述べる。
【0063】
地名表記定義ファイルにおける構文カテゴリの定義文のうち、その右辺が、カテゴリ条件具に書かれたように、都道府県名を表す構文カテゴリに続き市名を表す構文カテゴリから構成されていれば、変更処理指定フィールド、カテゴリ数指定フィールドに書かれたように、都道府県名と市名の構文カテゴリの二つの構文カテゴリの変わりに「<V市内>」という構文カテゴリから始まる表記を追加する。
【0064】
ここで各フィールドの記法を述べる。
カテゴリ条件フィールドでは、以下の文字、記号によって地名表記定義ファイルにおける構文カテゴリの並び方を記述する。
【0065】
< > 構文カテゴリ名を表す
P 都道府県名の構文カテゴリ
C 地区群町村名の構文カテゴリ
O 郡名、市名の構文カテゴリ
W 区名、町村名の構文カテゴリ
T 町名・大字名の構文カテゴリ
V 字名、その他の構文カテゴリ
( ) 上記文字の種類が書かれた範囲を明示的にするための記号
+ その前に書かれた文字の一回以上の繰り返し
* その前に書かれた文字のゼロ回以上の繰り返し
^ 定義文における右辺の先頭を表す
$ 定義文における右辺の末尾を表す
. 任意の一文字を表す
! 次に続く構文カテゴリの否定
変更処理指定フィールドには以下のいずれかの処理を記述する。
SKIP カテゴリ条件部に記された構文カテゴリの省略を許す表記を追加する
REPLACE 表記の先頭から、カテゴリ数指定フィールドに記された数のカテゴリを追 加カテゴリフィールドに記されたカテゴリに置換した表記を追加する
郵便物にかかれた宛名を読取るために使用する地名表記辞書を作成するために、以下のような地名表記に関する異表記を追加するための知識として、以下のような知識を用意する。
【0066】
都道府県名に対する構文カテゴリは省略しても良い
都道府県名、市郡名に対する構文カテゴリは省略しても良い
都道府県名、市郡名、さらに区名、(郡につづく)町村名は省略しても良い
「市」に対しては「市内」という表記を追加する
「町」に対しては「町内」という表記を追加する
「村」に対しては「村内」という表記を追加する
「区」に対しては「区内」という表記を追加する
町名・大字名の先頭の「大字」は省略してもよい
字名の先頭の「字」は省略しても良い
以上が異表記追加のために用いる知識の表現形式である。
【0067】
続いて、図1において、状況依存異表記追加処理106と追加・修正異表記定義109について述べる。
【0068】
ここでは、地名単語定義ファイルおよび地名表記定義ファイルへの構文カテゴリの定義文の追加を人手によって行う。すなわち、手作業により構文カテゴリの定義文を書く。しかし、文脈自由文法形式の構文カテゴリを直接記述することは、作業者の負担が大きいため、この作業を支援するI/Fを用意する。
【0069】
以下、前述した異表記の二つのタイプ毎に表記追加の方法を述べる。
【0070】
まず地名表記に対する異表記の追加の手順について述べる。地名表記に対する異表記の追加作業は図23のようなユーザインタフェースを通して行う。最初に作業者が編集の対象となる地域の識別子として郵便番号を郵便番号入力欄2301に入力すると(図の(a)参照)、これをもとに地名表記定義ファイルの中から対応する地名表記定義文を検索する。例えば、「<4570012> ::= <C名古屋市南区><T笠寺><V本殿>」といった地名表記定義文が検索されると、その右辺に記された構文カテゴリを取り出し、市区郡町村名に対応する構文カテゴリを左辺とする定義文をさらに検索し、都道府県名、市郡名に対応する構文カテゴリを取出す。これらの構文カテゴリの名前を、都道府県表示欄2302、市郡表示欄2303、区町村表示欄2304、町名・大字表示欄2305、字名表示欄2306にそれぞれ表示する。複数の構文カテゴリが使用されていれば、それらすべてを併せて表示する(図の(b)参照)。次に作業者は、追加すべき表記を入力する(図の(c)参照)。県名、市名、区名、町名・大字を省略した表記を追加する際は町名・大字表示欄2306、区町村名欄表示欄2307を空白とし、字名表示欄2308に「本殿」を入力する。そして追加ボタン2309を押すことにより、指定した表記が生成・追加される。
【0071】
この表記の追加処理の流れを図25に示す。
【0072】
まずステップ2501において図24のようなインタフェースを用いて追加した表記に対して、文脈自由文法の定義文の形にする。郵便番号が4570012で表される地名表記に対して図24で追加した「本殿」という表記に対して、「<4570012> ::= <V本殿>」という構文カテゴリ定義文が生成される。地名表記辞書中の構文カテゴリの定義文に対して、その左辺が上記追加定義文の左辺と同じ文を検索する(ステップ2502)。検索の結果、該当する定義文が存在すれば、ステップ2503において、各地名表記文字列がOR結合されるように、検索結果の定義文の左辺を展開する。つまり
A ::= (B | C) D
という定義式を
A ::= BD | CD
と変形する。ステップ2504では、変形した地名表記辞書中の定義文に対して、追加定義文をその左辺をOR結合することにより統合する。これにより、
<4570012> ::= <C名古屋市南区><T笠寺><V本殿>;
という地名表記知識に
<4570012> ::= <V本殿>;
を結合し、
<4570012> ::= <C名古屋市南区><T笠寺><V本殿> |
<V本殿>;
という地名表記定義文が生成される。
【0073】
次にステップ2505において、定義式の最適化、すなわち、使用する構文カテゴリ名の数の削減を行う。すなわち、
A ::= BD | CD;
という定義式を
A ::= (B | C) D;
あるいは
A ::= BC | B;
という定義式を
A ::= B [C];
と変形する処理である。これにより、
<4570012> ::= <C名古屋市南区><T笠寺>[<V本殿>];
が得られる。
【0074】
またステップ2506においては、追加した定義文
<4570012> ::= <V本殿>;
を後述する、図1における追加・修正異表記定義ファイル109に格納する。
異表記を削除する場合は、図26のような処理の流れと成る。
【0075】
まずステップ2601において図24のようなインタフェースを用いて選択した表記に対して、文脈自由文法の定義文の形にする。郵便番号が4570012で表される地名の「本殿」という表記を削除しようとすると、「<4570012> ::= <V本殿>」という構文カテゴリ定義文が生成される。地名表記辞書中の構文カテゴリの定義文に対して、その左辺が上記追加定義文の左辺と同じ文を検索する(ステップ2602)。検索の結果、該当する定義文が存在すれば、ステップ2603において、各地名表記文字列がOR結合されるように、検索結果の定義文の左辺を展開する。つまり
A ::= (B | C) D
という定義式を
A ::= BD | CD
と変形する。ステップ2604では、追加定義文の左辺と同じ要素を、変形した地名表記辞書中の定義文の左辺のOR結合された要素から削除することにより処理される。これにより、
<4570012> ::= <C名古屋市南区><T笠寺><V本殿> |
<V本殿>;
という地名表記知識から
<4570012> ::= <V本殿>;
を削除し、
<4570012> ::= <C名古屋市南区><T笠寺><V本殿>;
という地名表記定義文が生成される。
【0076】
次にステップ2505において、定義式の最適化、すなわち、使用する構文カテゴリ名の数の削減を行う。すなわち、
A ::= BD | CD;
という定義式を
A ::= (B | C) D;
あるいは
A ::= BC | B;
という定義式を
A ::= B [C];
と変形する処理である。
【0077】
またステップ2506においては、削除した定義文
<4570012> ::= <V本殿>;
を後述する、図1における追加・修正異表記定義ファイル109に格納する。
【0078】
人手による異表記の追加の二番目の例として、ある特定の地名単語に関する異表記を追加・修正する場合について述べる。この作業は図24のようなユーザインタフェースによって行う。地名表記に関する異表記の追加の際と同様に、作業者が編集の対象となる地域の識別子として郵便番号を郵便番号入力欄2401に入力すると(図の(a)参照)、これをもとに地名表記定義ファイルの中から対応する地名表記定義文を検索する。続いて図の(b)のように該当する階層の構文カテゴリ名を選択した後、単語定義追加・修正インタフェースを起動する。単語定義追加・修正インタフェースが起動されると、追加・修正の対象となる構文カテゴリ名を左辺とする地名単語定義文を検索する。検索した地名単語定義文の右辺に記述された文字列を図の(c)の地名単語表示・入力欄2403に表示する。次に作業者は追加・修正したい表記(文字列)を地名単語表示・入力欄2404追加すると、追加・修正の対象となる構文カテゴリ名を左辺とし、追加された文字列を右辺とする地名単語定義文を地名単語定義ファイルに追加する。これにより、図25に示した処理が行われ、「<O尾張旭市> ::= 愛知旭市;」という定義文が生成され、前述の知識による異表記追加処理と同様の手順で地名単語定義ファイルに追加される。ここで生成された構文カテゴリ定義文が、追加・修正異表記出力処理108によって出力され、図1における追加・修正異表記定義に格納される。単語定義の削除の場合も図26に示した手法により行われる。
【0079】
上記状況依存追加処理において出力される追加・修正異表記定義の例を図27に示す。
【0080】
ここでは追加する定義文、削除する定義文が、地名表記辞書と同様の形式で格納される。但し、追加処理か削除処理化を示すために、行頭にコメント文の形式を用い、処理内容の識別子を書きこむ。処理内容の識別子は、
#ADD# 追加
#DEL# 削除
の二種類である。
【0081】
続いて図1における事例による異表記追加処理111について述べる。事例による異表記追加処理において行われる処理は、追加・修正異表記定義109を読込み、その中に記された処理内容の識別子によって追加と削除の処理が切り替わること以外は、状況依存異表記追加処理において行われる異表記の追加、削除処理と同様である。事例による異表記追加処理により、過去に手作業で追加した異表記を自動的に地名表記辞書に追加することができる。
【0082】
事例による異表記追加処理の流れを図28に示す。
【0083】
まずステップ2801において図27に示すような追加・修正異表記定義109を読込み、その行頭のコメント内部に記された処理内容の識別子と、それに続く表記の定義文を読込む。郵便番号が4570012で表される地名表記の「本殿」という表記を追加するよう追加・修正異表記定義ファイルに書かれていた場合、地名表記辞書中の構文カテゴリの定義文に対して、その左辺が「<4570012> ::= <V本殿>」という追加定義文の左辺と同じ文を検索する(ステップ2802)。検索の結果、該当する定義文が存在すれば、ステップ2803において、各地名表記文字列がOR結合されるように、検索結果の定義文の左辺を展開する。ステップ2804では、変形した地名表記辞書中の定義文に対して、追加定義文をその左辺をOR結合することにより統合する。これにより、
<4570012> ::= <C名古屋市南区><T笠寺><V本殿> |
<V本殿>;
という地名表記定義文が生成される。
【0084】
次にステップ2805において、定義式の最適化、すなわち、使用する構文カテゴリ名の数の削減を行う。これにより、
<4570012> ::= <C名古屋市南区><T笠寺>[<V本殿>];
が得られる。
【0085】
以上の処理をへて、図1における地名照合用地名表記辞書106を生成する。前にも述べたように、この地名表記辞書の形式は、辞書ソースファイルの形式をとっている。文脈自由文法で表現された地名表記辞書からグラフ形式の辞書バイナリ形式に変換する手法として、例えば「自然言語処理入門」(近代科学社、ISBN4-7649-0143-9)pp. 19 - 30 にあるような、生成規則に応じた遷移グラフを生成する手法などを用いることができる。本実施例で用いた地名表記の文脈自由文法表現の例から作られるグラフ形式の地名表記辞書の一例を図29に示す。グラフ形式の地名表記辞書は、各辺が部分文字列に、各頂点が部分文字列の境界に対応する有向グラフである。各辺の方向は、文字列中の文字の順に一致する。NULLと記された辺は、その箇所に何も文字列がなくてよいことを示す。図中の右下に線の入った円は、地名文字列の開始位置を示す。また、中央に斜線が入った円は、文字列の終わりの位置を示す。また、文字列の終わりに対応するノードには、<数字>表記で指定した地名表記に対する識別子としての数字(本実施例では郵便番号)が格納される。
【0086】
本実施例におけるハードウエアの構成を図30に示す。地名表記辞書生成装置3001は標準的な地名表記が単語毎に分割されて格納された、標準的地名表記リスト3002を入力とし、文脈自由文法で表現された地名表記辞書3003を出力する装置である。その内部は、外部からのファイル入力を処理する入力用インタフェース3004、各種ファイルを保存しておく外部記憶装置3005、演算処理装置3006、メモリ3007、外部への結果出力を処理するネットワークインタフェース3008、出力用インタフェース3009を備え、これらがバス3010を介して接続されている。
【0087】
標準的地名表記リストは入出力装置3004を介して地名表記辞書生成装置に入力され、外部記憶装置3005に格納され、標準的地名表記リストファイル3011となり、メモリ3007上に複写され、標準地名表記3016となる。地名表記辞書生成処理が実行されると、外部記憶装置中に格納されている地名表記辞書生成処理のためのプログラムファイル3012、異表記追加用知識ファイル3013がメモリ上にロードされ、プログラム3014、異表記追加用知識3015となる。入力用インタフェースまたは外部記憶装置からメモリ上にロードされた標準的地名表記3016に対して、演算処理装置は本発明の方式に従って、地名表記辞書3017をメモリ上に生成する。その結果は、外部記憶装置上に地名表記辞書ファイルとして書きこまれるか、ディスプレイ等の出力インタフェース3009によって出力される。また、本実施例として述べた辞書ソースファイル形式から辞書バイナリ形式に変換する辞書形式変換装置3018によって、辞書バイナリ形式の地名表記辞書に変換し、これをネットワーク3019を通じて郵便区分機3020にロードし、宛名読取り処理を行うことも可能である。
【0088】
なお、本発明は説明の便宜上、日本の地名や住所を例に説明してきたが、本発明は日本の地名や住所、又は日本語で表記された地名や住所限るものではない。諸外国の地名や表記、又は、英語や他の言語で表記された地名や住所であっても、本発明は実施することは可能である。上述のカテゴリのみでなく、カテゴリを随時新たに追加・変更したり、それらカテゴリに属する単語の追加・変更を行うことで、本発明を外国の地名・住所、又は外国語で表記された地名・住所へも適用可能となる。
【図面の簡単な説明】
【0089】
【図1】地名表記辞書作成処理の流れ。
【図2】標準的な地名表記リストにおける都道府県名を表す単語テーブルの例。
【図3】標準的な地名表記リストにおける市区郡町村名を表す単語テーブルの例。
【図4】標準的な地名表記リストにおける町名・大字名を表す単語テーブルの例。
【図5】標準的な地名表記リストにおける字名を表す単語テーブルの例。
【図6】標準的な地名表記リストにおける地名表記を表すコードテーブルの例。
【図7】地名表記の文脈自由文法による記述例。
【図8】地名表記の形式言語表現への変換処理の流れ。
【図9】地名表記全体の定義ファイルの例(異表記追加前)。
【図10】地名単語定義ファイル作成処理例(その1)。
【図11】市区郡町村フィールドの単語分割処理の流れ。
【図12】地名単語定義ファイル作成処理例(その2)。
【図13】地名単語定義ファイル作成処理例(その3)。
【図14】地名表記定義ファイル作成処理例(その1)。
【図15】地名表記定義ファイル作成処理の流れ。
【図16】地名表記定義ファイル作成処理例(その2)。
【図17】知識による異表記の追加処理の流れ。
【図18】知識による文字列の構文カテゴリへの置換の例。
【図19】共通文字列の構文カテゴリへの変換の例。
【図20】知識による地名表記定義への異表記の追加の例。
【図21】地名単語定義への異表記追加のための知識の例。
【図22】地名表記定義への異表記追加のための知識の例。
【図23】手作業による地名表記の異表記の追加のためのユーザインタフェース例。
【図24】手作業による地名単語の異表記の追加のためのユーザインタフェース例。
【図25】状況依存異表記追加・削除処理における異表記追加の流れ。
【図26】状況依存異表記追加・削除処理における異表記削除の流れ。
【図27】追加・修正異表記定義の例。
【図28】事例による異表記追加・削除処理の流れ。
【図29】グラフ形式の地名表記辞書の例。
【図30】地名表記辞書作成装置のハードウェア構成の例。
【符号の説明】
【0090】
101 標準的な地名表記を列挙したファイルである地名表記リスト
102 形式言語表現変換処理
103 地名表記を表現する文脈自由文法に則した形式で記述された地名照合用地名表記辞 書
104 知識による異表記追加処理
105 地名の表記法に関する規則を集めた地名表記追加用知識
106 状況依存異表記追加処理
107 人手等によるアドホックな形での異表記の追加・削除
108 追加・修正異表記出力処理
109 文脈自由文法の形式で出力される追加・修正異表記定義
110 地名表記リストに対して加えられる変更
111 事例による異表記追加処理
112 人手による新たな知識の追加等の編集作業
113 ネットワーク
114 郵便区分機
115 地名読取装置
116 メディア変換装置
117 地名表記メディア
201 都道府県コード
202 都道府県名
203 都道府県ふり仮名
301 都道府県コード
302 市区郡町村コード
303 市区郡町村名
304 市区郡町村名ふり仮名
401 都道府県コード
402 市区郡町村コード
403 町名・大字コード
404 町名・大字名
405 町名ふり仮名
406 町名・大字名に関する異表記数
407 町名・大字名に関する異表記
501 都道府県コード
502 市区郡町村コード
503 町名・大字コード
504 字コード
505 字名
506 字ふり仮名
507 字名に関する異表記数
508 字名に関する異表記
601 郵便番号
602 都道府県コード
603 市区郡町村コード
604 町名・大字コード
605 字コード
3001 地名表記辞書生成装置
3002 標準的地名表記リスト
3003 文脈自由文法で表現された地名表記辞書
3004 外部からのファイル入力を処理する入力用インタフェース
3005 各種ファイルを保存しておく外部記憶装置
3006 演算処理装置
3007 メモリ
3008 外部への結果出力を処理するネットワークインタフェース
3009 出力用インタフェース
3010 バス
3011 標準的地名表記リストファイル
3012 外部記憶装置中に格納されている地名表記辞書生成処理のためのプログラムファイ ル
3013 異表記追加用知識ファイル
3014 プログラム
3015 異表記追加用知識
3016 入力用インタフェースまたは外部記憶装置からメモリ上にロードされた標準的地名 表記
3017 地名表記辞書
3018 辞書ソースファイル形式から辞書バイナリ形式に変換する辞書形式変換装置
3019 ネットワーク
3020 郵便区分機。

【特許請求の範囲】
【請求項1】
第一の地名を保持する地名表記リストを含む地名表記辞書から上記第一の地名
を入力し、出力するインターフェイス手段と、
上記第一の地名の表記に関係し、かつ、表記の異なる地名、文字の異なる地名
、省略のできる地名、追加のできる地名の何れかを含む異表記の情報を保持する
地名表記追加用知識を含む異表記辞書と、
上記第一の地名と、上記異表記辞書に含まれる上記異表記の情報とを入力して
、上記第一の地名と表記の異なる第二の地名を生成し、該第二の地名を出力する
異表記地名生成手段と、
を有する辞書作成装置。
【請求項2】
第一の地名を保持する地名表記リストを含む地名表記辞書と、
上記第一の地名の表記に関係し、かつ、表記の異なる地名、文字の異なる地名
、省略のできる地名、追加のできる地名の何れかを含む異表記の情報を保持する
地名表記追加用知識を含む異表記辞書と、
上記第一の地名と、上記異表記辞書に含まれる上記異表記の情報とを入力して
、上記第一の地名と表記の異なる第二の地名を生成し、該第二の地名を出力する
異表記地名生成手段と、
を有する辞書作成装置。
【請求項3】
請求項2記載の辞書作成装置であって、
上記異表記地名作成手段は、更に、上記第一の地名を他の言語形式に変換する
形式言語表現変換手段を含み、該他の言語形式に変換された第一の地名を参照し
て上記第二の地名を生成する異表記地名作成手段であることを特徴とする辞書作
成装置。
【請求項4】
請求項2記載の辞書作成装置であって、
上記地名表記リストは、複数の構文カテゴリに分けて上記第一の地名を保持し
た地名表記リストであり、
上記異表記地名生成手段は、上記複数の構文カテゴリの何れかを参照して、上
記第二の地名を生成する異表記地名生成手段であることを特徴とする辞書作成装
置。
【請求項5】
請求項4記載の辞書作成装置であって、
上記地名表記リストは、上記複数の構文カテゴリに分けられた上記第一の地名
の各々にコード情報を付して保持した地名表記リストであることを特徴とする辞
書作成装置。
【請求項6】
請求項5記載の辞書作成装置であって、
上記第二の地名は、上記複数の構文カテゴリに分けられた上記第一の地名の、
該複数の構文カテゴリの並び方を変えてなる地名であることを特徴とする辞書作
成装置。
【請求項7】
第一の地名を保持する地名表記リストを含む地名表記辞書と、
上記第一の地名の表記に関係し、かつ、表記の異なる地名、文字の異なる地名
、省略のできる地名、追加のできる地名の何れかを含む異表記の情報を保持する
地名表記追加用知識を含む異表記辞書と、
上記第一の地名と、上記異表記辞書に含まれる上記異表記の情報とを入力して
、上記第一の地名と表記の異なる第二の地名を生成し、該第二の地名を出力する
異表記地名生成手段と、
上記第二の地名と表記の異なる第三の地名を追加する指定を受け付ける受付手
段と、
上記指定に基づいて上記第三の地名を追加し出力する追加手段と、
を有する辞書作成装置。
【請求項8】
第一の地名を保持する地名表記リストを含む地名表記辞書と、
上記第一の地名の表記に関係し、かつ、表記の異なる地名、文字の異なる地名
、省略のできる地名、追加のできる地名の何れかを含む異表記の情報を保持する
地名表記追加用知識を含む異表記辞書と、
上記第一の地名と、上記異表記辞書に含まれる上記異表記の情報とを入力して
、上記第一の地名と表記の異なる第二の地名を生成し、該第二の地名を出力する
異表記地名生成手段と、
上記第二の地名と表記の異なる第三の地名を追加する指定を受け付ける受付手
段と、
上記指定に基づいて上記第三の地名を追加し出力する追加手段と、
上記第二の地名と上記第三の地名を入力し、上記第二の地名と上記第三の地名
の対を保存する保存手段と、を有する辞書作成装置であって、
上記異表記地名生成手段は、上記保存手段を参照する手段を含み、
該保存手段に上記第二の地名と上記第三の地名の対が既に保存されている場合
には、該対を参照して上記第一の地名から上記第三の地名を生成して出力する手
段を含む異表記地名生成手段であることを特徴とする辞書作成装置。
【請求項9】
インターフェイス手段は、第一の地名を保持する地名表記リストを含む地名表
記辞書から該第一の地名を入力して出力し、
異表記地名生成手段は、上記第一の地名と、該第一の地名の表記に関係し、か
つ、表記の異なる地名、文字の異なる地名、省略のできる地名、追加のできる地
名の何れかを含む異表記の情報を保持する地名表記追加用知識を含む異表記辞書
から該異表記の情報を入手して、該第一の地名と表記の異なる第二の地名を生成
し、該第二の地名を出力する辞書作成方法。
【請求項10】
異表記地名生成手段は、
第一の地名を保持する地名表記リストを含む地名表記辞書から該第一の地名を
、また、
上記第一の地名の表記に関係し、かつ、表記の異なる地名、文字の異なる地名
、省略のできる地名、追加のできる地名の何れかを含む異表記の情報を保持する
地名表記追加用知識を含む異表記辞書から該異表記の情報を、入力し、上記第一
の地名と表記の異なる第二の地名を生成し、該第二の地名を出力する辞書作成方
法。
【請求項11】
請求項10記載の辞書作成方法であって、
上記異表記地名作成手段は、更に、形式言語表現変換手段で上記第一の地名を他
の言語形式に変換し、該他の言語形式に変換された第一の地名を参照して上記第
二の地名を生成することを特徴とする辞書作成方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate


【公開番号】特開2007−125556(P2007−125556A)
【公開日】平成19年5月24日(2007.5.24)
【国際特許分類】
【出願番号】特願2007−24980(P2007−24980)
【出願日】平成19年2月5日(2007.2.5)
【分割の表示】特願平11−322113の分割
【原出願日】平成11年11月12日(1999.11.12)
【出願人】(504373093)日立オムロンターミナルソリューションズ株式会社 (1,225)
【Fターム(参考)】