(57)【要約】【課題】カタカナ文字列に対して、表記のゆれか否かについての判定を信頼性をもって行なえるようにする。【解決手段】表記ゆれの検出方法は、コーパス３０中からカタカナ文字列を抽出しカタカナ文字列記憶部７６に格納するステップ５０と、記憶されたカタカナ文字列の任意の二つの組合せに対し、当該二つのカタカナ文字列およびそれらのローマ字表記文字列を用い、予め定義された複数通りの類似度を算出するステップ５４と、複数通りの類似度を組合わせた判定規則により、第１の記憶装置に記憶されたカタカナ文字列の任意の二つが互いに表記ゆれの関係にあるか否かを判定するステップ５８とを含む。【選択図】      図１
2006053866.tif 000002
【特許請求の範囲】
【請求項１】
コーパス中のカタカナ文字列に対する表記ゆれの検出方法であって、
コーパス中からカタカナ文字列を抽出し第１の記憶装置に格納するステップと、
前記第１の記憶装置に記憶されたカタカナ文字列の任意の二つの組合せに対し、当該二つのカタカナ文字列および対応するローマ字表記文字列を用い、予め定義された複数通りの類似度を算出するステップと、
前記複数通りの類似度を組合わせた判定規則により、前記第１の記憶装置に記憶されたカタカナ文字列の任意の二つが互いに表記ゆれの関係にあるか否かを判定するステップとを含む、表記ゆれの検出方法。
【請求項２】
前記類似度を算出するステップは、
前記第１の記憶装置に記憶された任意のあるカタカナ文字列に対し、前記第１の記憶装置に記憶された任意の他のカタカナ文字列との間の編集距離に基づいて定義される第１の類似度を算出するステップと、
前記あるカタカナ文字列のローマ字表記に対し、前記他のカタカナ文字列のローマ字表記との間の文字列距離に基づいて定義される第２の類似度を算出するステップとを含み、
前記判定するステップは、前記第１の類似度および前記第２の類似度が所定の判定式を充足するか否かにしたがって、前記あるカタカナ文字列と前記他のカタカナ文字列とが表記ゆれの関係にあるか否かを判定するステップを含む、請求項１に記載の表記ゆれの検出方法。
【請求項３】
前記類似度を算出するステップはさらに、
前記第１の記憶装置に格納されたカタカナ文字列に対し、前記コーパス内における当該カタカナ文字列が出現した個所における文脈を表す文脈ベクトルを作成し、第２の記憶装置に格納するステップと、
前記あるカタカナ文字列に対して前記第２の記憶装置に記憶された文脈ベクトルと、前記他のカタカナ文字列に対して前記第２の記憶装置に記憶された文脈ベクトルとの間に定義される第３の類似度を算出するステップとを含み、
前記判定するステップは、前記第１の類似度、前記第２の類似度、および前記第３の類似度を用いて前記あるベクトルと前記他のベクトルとが互いに表記ゆれの関係にあるか否かを判定し判定結果を出力するステップを含む、請求項２に記載の表記ゆれの検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は日本語のテキストデータを処理する技術に関し、特に、カタカナで記述された文字列を含む自然言語テキストデータを処理する際の文字列照合方法および文字列修正方法に関する。
【背景技術】
【０００２】
日本語は、ひらがな・カタカナという表音文字に加えて、表意文字である漢字、さらには英文字と、多くの文字種を使用する言語である。そのため、日本語には表記のゆれが多く存在することが知られている。
【０００３】
表記のゆれには、送り仮名（「行う」と「行なう」）、文字種（「猫」−「ねこ」−「ネコ」）、カタカナによる表記方法（「メード」−「メイド」）などがある。中でもカタカナは、外来語、植物および動物の名前、外国の人名または地名などを記述する上で便利なこともあり、非常に多く使用されている。また、外国文化との接触がより広範囲かつ濃密になるにしたがって、使用されるカタカナ文字列の数はさらに増加し続けている。
【０００４】
こうした表記のゆれは、コンピュータで日本語文章を処理する際には様々な問題を引き起こす。その一例は文字列の検索において、検索語として与えられた文字列が表す事物と同じ事物を表すにもかかわらず、表記のゆれによって検索語と不一致となり探し出せない語があるということである。特にカタカナ語の場合、次のような問題があり、日本語の自然言語データの円滑な処理を妨げることが多く、その表記のゆれを解消するための技術が必要とされている。
【０００５】
・使用される頻度が多い。
【０００６】
・外国語の音声または文字列から簡単にカタカナ語を作り出すことができる。
【０００７】
・外国語の文字列から想起される音声と、その実際の発音とが異なる場合、文字列から作成されたカタカナ語と、発音から作成されたカタカナ語とが互いに異なったものとなることが多い。英語の「ｒｅｐｏｒｔ」について、文字から生じた「レポート」と、発音から生じた「リポート」がその例である。
【０００８】
・外国語にはカタカナでは表現できない音韻があり、それらを近似的にカタカナで表現しようとして複数のカタカナ語が作成されることがある。
【０００９】
・外国語からカタカナ語を作成する場合、複数の外国語から同じ意味の言葉が別々に入るため、それらのカタカナ表現が異なることがある。例えば英語の「ｖｉｒｕｓ」に対応するカタカナ語は、ラテン語から生じる「ウイルス」および「ウィルス」、ドイツ語から生じる「ビールス」および「ヴィールス」、英語の発音から生じる「バイラス」および「ヴァイラス」など、多数である。
【００１０】
カタカナ語の表記のゆれを解消するためには、ある表記が、別の表記に対する「表記のゆれ」に相当するか否かを判定しなければならない。そのためには、まず表記のゆれに相当するのではないかと思われる二つの文字列を抽出し、互いに照合し、その照合結果に基づいて二つの文字列が表記のゆれに相当するか否かを判定することが必要である。
【００１１】
完全に一致しない文字列を対象とした文字列照合方法としては、非特許文献１に記載された、「編集距離」に基づいて文字列間の距離を定義する方法がある。非特許文献１では、一方の文字列を他方の文字列に変換するために必要な文字の置換、挿入、削除という編集操作の回数を合計したものをこの二つの文字列の間の編集距離と定義し、文字列間の近さを計るための尺度として用いている。
【００１２】
しかし、カタカナ語の表記のゆれの場合、二つのカタカナ語が互いに表記のゆれに相当するか否かは、上記した編集距離だけでは断定できない。したがって、編集距離を用いる文字列照合方法をカタカナ語の表記のゆれの判定にそのまま適用することは困難である。そこで、一般的には、予想される表記のゆれ、または経験的に分かっている表記のゆれを辞書に登録し、その辞書を用いて二つのカタカナ語を照合する方法が用いられてきた。
【００１３】
一方、二つのカタカナ語が互いに表記のゆれの関係にあるか否かを判定する方法として、特許文献１に開示されたものがある。特許文献１においては、表記が異なるが同じ意味を表すカタカナ語（異表記同義カタカナ文字列と呼ぶ。）の集合から、表記のゆれに相当する表記の異なりを、正規表現によってパターン化した規則として表し、当該規則を用いた文字列変換を行なってから文字列照合を行なう。
【特許文献１】特開2002-091951号公報
【非特許文献１】スン  ウー他１名、「誤りを許容する高速テキストサーチ」、ＡＣＭコミュニケーション、第３５巻、第１０号、ｐｐ．８３−９１、１９９２年（Sun  Wu  and  Udi  Manber,  "Fast  Text  Search  Allowing  Errors,"  Communications  of  the  ACM,  Vol.  35,  No.  10,  pp.  83-91,  1992）
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかし、このように規則によって異表記同義カタカナ文字列を記述したり、異表記同義カタカナ文字列からなる辞書を作成したりする方法では、増加し続けるカタカナ語に対して十分な効果を期待できない。今まで出現したことのないカタカナ文字列に対しても、表記のゆれか否かを判定できるような手法が望ましいが、今までのところそうした手法は存在していない。
【００１５】
それゆえに本発明の目的は、カタカナ文字列に対して、表記のゆれか否かについての判定を信頼性をもって行なうことができる表記のゆれ検出方法を提供することである。
【００１６】
本発明の別の目的は、未知のカタカナ文字列に対しても、表記のゆれか否かについての判定を信頼性をもって行なうことができる表記のゆれ検出方法を提供することである。
【課題を解決するための手段】
【００１７】
本発明の第１の局面に係る表記ゆれの検出方法は、コーパス中のカタカナ文字列に対する表記ゆれの検出方法であって、コーパス中からカタカナ文字列を抽出し第１の記憶装置に格納するステップと、第１の記憶装置に記憶されたカタカナ文字列の任意の二つの組合せに対し、当該二つのカタカナ文字列および対応するローマ字表記文字列を用い、予め定義された複数通りの類似度を算出するステップと、複数通りの類似度を組合わせた判定規則により、第１の記憶装置に記憶されたカタカナ文字列の任意の二つが互いに表記ゆれの関係にあるか否かを判定するステップとを含む。
【００１８】
複数通りの類似度を組合わせた判定規則にしたがって、二つのカタカナ文字列が表記ゆれの関係にあるか否かを判定する。カタカナ文字列に対する通常の類似度を単独で用いるだけではなく、複数種類の類似度を用いて判定するので、表記ゆれの検出がより的確に行なえる。またカタカナ文字列が既知か否かに関係なく判定を行なえる。
【００１９】
好ましくは、類似度を算出するステップは、第１の記憶装置に記憶された任意のあるカタカナ文字列に対し、第１の記憶装置に記憶された任意の他のカタカナ文字列との間の編集距離に基づいて定義される第１の類似度を算出するステップと、あるカタカナ文字列のローマ字表記に対し、他のカタカナ文字列のローマ字表記との間の文字列距離に基づいて定義される第２の類似度を算出するステップとを含み、判定するステップは、第１の類似度および第２の類似度が所定の判定式を充足するか否かにしたがって、あるカタカナ文字列と他のカタカナ文字列とが表記ゆれの関係にあるか否かを判定するステップを含む。
【００２０】
カタカナ文字列について、カタカナ表記だけではなくローマ字表記による文字列距離に基づいて算出した類似度を用いるので、カタカナ表記のみを用いる場合より、さらに精度よくカタカナ文字列の表記ゆれかどうかを判定できる。
【００２１】
カタカナ文字列のローマ字表記には訓令式に基づくＩＳＯ３６０２規格に準じた表記法を用いるとよい。
【００２２】
この表記法を用いると、例えばカタカナ表記のゆれである「ティケット」および「チケット」の「ティ」と「チ」とが同一のローマ字表記「ｔｉ」で表されるなど、表記のゆれを検出するのに都合がよく、表記ゆれの検出精度を高めることができる。
【００２３】
さらに好ましくは、類似度を算出するステップはさらに、第１の記憶装置に格納されたカタカナ文字列に対し、コーパス内における当該カタカナ文字列が出現した個所における文脈を表す文脈ベクトルを作成し、第２の記憶装置に格納するステップと、あるカタカナ文字列に対して第２の記憶装置に記憶された文脈ベクトルと、他のカタカナ文字列に対して第２の記憶装置に記憶された文脈ベクトルとの間に定義される第３の類似度を算出するステップとを含む。判定するステップは、第１の類似度、第２の類似度、および第３の類似度を用いてあるベクトルと他のベクトルとが互いに表記ゆれの関係にあるか否かを判定し判定結果を出力するステップを含む。
【００２４】
第３の類似度は、以下の式
【００２５】
【数１】
2006053866.tif 000003
により定義される文脈類似度ｓｉｍcでもよい。ただしｋｗiはカタカナ文字列、ｖｅｃ（ｋｗ）はカタカナ文字列ｋｗに対する文脈ベクトル、ｅiはカタカナ文字列ｋｗiに対応する文脈ベクトルの要素、ｆ（ｋｗi，ｅi）はカタカナ文字列ｋｗiに対する要素ｅiの頻度、ｓｆ（ｋｗi）はカタカナ文字列ｋｗiを含む文の頻度、Ｎは入力コーパス内におけるカタカナ文字列の数、である。
【００２６】
より好ましくは、カタカナ文字列Ｓｔｒ1とカタカナ文字列Ｓｔｒ2との間の第１の類似度は、
【００２７】
【数２】
2006053866.tif 000004
により定義される類似度ｓｉｍedを含む。ただし、ＥＤ（Ｓｔｒ1，Ｓｔｒ2）はカタカナ文字列Ｓｔｒ1をカタカナ文字列Ｓｔｒ2に変換するために必要な文字の挿入、削除、および置換からなる編集操作の数、｜Ｓｔｒ｜は文字列Ｓｔｒの文字数である。
【００２８】
カタカナ文字列Ａとカタカナ文字列Ｂとの間の第２の類似度は、
【００２９】
【数３】
2006053866.tif 000005
によって定義される文字列距離類似度ｓｉｍsでもよい。ただしｒｏｍ（Ｘ）はカタカナ文字列Ｘのローマ字表記文字列、ＥＤk(ｒｏｍ（Ａ），ｒｏｍ（Ｂ））はローマ字表記文字列ｒｏｍ（Ａ）およびｒｏｍ（Ｂ）の間で、一方の文字列を他方の文字列に変えるために必要な文字の挿入、削除、および置換からなる編集操作の数であって、かつ編集操作の生じた個所の条件に応じて所定の重みが乗算された加重編集距離、｜ｒｏｍ（Ｘ）｜はカタカナ文字列Ｘのローマ字表記文字列中の文字数である。
【００３０】
好ましくは、ローマ字表記文字列ｘとローマ字表記文字列ｙとの間の加重編集距離ＥＤk(ｘ，ｙ）は、以下の式によって算出される。
【００３１】
【数４】
2006053866.tif 000006
ただし、二つの文字列ｘ＝Ｓ1［１‥ｉ］およびｙ＝Ｓ2［１‥ｊ］に対し、Ｄ（ｉ，ｊ）は、次の漸化式関係により与えられる。
【００３２】
【数５】
2006053866.tif 000007
ｉｄ（ｉ，ｊ）は挿入および削除操作の数を表し、文字Ｓ1（ｉ）または文字Ｓ2（ｊ）が子音であれば予め定められたペナルティＰidという値をとり、それ以外では１という値をとるように定義され、ｔ（ｉ，ｊ）は置換操作の数を表し、Ｓ1（ｉ）＝Ｓ2（ｊ）であれば０をとり、それ以外では、ｔ（ｉ，ｊ）の値が文字列Ｓ1［ｉ−３，…，ｉ，…，ｉ＋３］と文字列Ｓ2［ｊ−３，…，ｊ，…，ｊ＋３］とに依存して定められるように予め設定されている。
【発明を実施するための最良の形態】
【００３３】
以下に説明する本発明の一実施の形態に係るカタカナ文字列の表記ゆれ解消システムは、複数の類似度によってカタカナ文字列同士が表記ゆれの関係にあるか否かを判定する機能を持つ。そのために、カタカナ文字列の発音についてローマ字表記を使用する。ローマ字表記の中でも、訓令式に基づくＩＳＯ３６０２規格に準じた表記法を用いる。この表記法を用いると、例えば「シ」は「ｓｉ」と表される。一方、訓令式と異なるヘボン式では「シ」は「ｓｈｉ」と表されるが、この場合には間に挿入された文字「ｈ」が、マッチングにおいて障害となる。一方訓令式ではカタカナは一般に二つのローマ字（子音と母音とをそれぞれ表す。）により表現されるので、そうした問題が生じにくい。さらに、このローマ字表記システムでは、「チケット」と「ティケット」とがともに「ｔｉｋｅｔｔｏ」と表され、ローマ字表記では特別の処理をしなくても同一の語として扱われる。
【００３４】
［構成］
図１に、本発明の一実施の形態に係るカタカナ文字列の表記ゆれ解消システム２０のブロック図を示す。図１を参照して、表記ゆれ解消システム２０は、入力コーパス３０内の文に含まれるカタカナ文字列の表記ゆれを検出し、表記ゆれレポートとして出力するためのカタカナ表記検査装置３２と、カタカナ表記検査装置３２により出力される表記ゆれレポートを記憶するための表記ゆれ記憶部３４と、表記ゆれ記憶部３４に記憶された表記ゆれレポートにしたがってカタカナ文字列の表記ゆれを所定のカタカナ文字列に統一するように入力コーパス３０中の表記ゆれを更新し出力コーパス３８を出力するための表記更新部３６とを含む。
【００３５】
カタカナ表記検査装置３２は、入力コーパス３０中の文の依存構造を解析し、その結果を用いて入力コーパス３０に含まれるカタカナ文字列をその出現個所および出現頻度とともに抽出するためのカタカナ文字列抽出処理部５０と、カタカナ文字列抽出処理部５０により抽出されたカタカナ文字列と依存構造解析結果とから、各カタカナ文字列に対し後述する文脈ベクトルを準備するための文脈ベクトル準備処理部５２と、カタカナ文字列抽出処理部５０により抽出されたカタカナ文字列と、文脈ベクトル準備処理部５２により準備された文脈ベクトルとを用い、入力コーパス３０中のカタカナ文字列の各々に対して、他のカタカナ文字列と表記のゆれという関係にあるか否かを判定する際に使用される判定情報を作成するための判定情報作成部５４と、判定情報作成部５４により作成された判定情報と、予め学習用のデータを用いて作成されていた判定用の規則およびデータなどとを用いて、入力コーパス３０に含まれる各カタカナ文字列が他のカタカナ文字列と表記のゆれに相当する関係にあるか否かを判定し、表記のゆれと判定されたカタカナ文字列を列挙した表記ゆれレポートを出力するための判定処理部５８とを含む。
【００３６】
カタカナ文字列抽出処理部５０は、入力コーパス３０に含まれる各文の依存構造を解析し、依存構造解析済みコーパス７２を出力するための依存構造解析部７０と、依存構造解析部７０により出力された依存構造解析済みコーパス７２中から、全てのカタカナ文字列を、それらの出現個所および出現頻度とともに抽出するためのカタカナ文字列抽出部７４と、カタカナ文字列抽出部７４により抽出されたカタカナ文字列をその出現個所および出現頻度とともに記憶するためのカタカナ文字列記憶部７６とを含む。
【００３７】
依存構造とは、文中の語句の間の修飾・被修飾関係がどのようになっているかを示す文法情報である。依存構造の一例を図２に示す。図２を参照して、「シャンペンをグラスでください」という文を形態素解析することにより、得られた単語の間には、形態素１５０（「シャンペン」）が形態素１５４（「ください」）に係っているという依存構造１６０と、形態素１５２（「グラス」）が同じく形態素１５４に係っているという依存構造１６２とが得られる。依存構造解析部７０は、入力コーパス３０中の各文に対し形態素解析を行なった後、依存構造解析をしてその結果を依存構造解析済みコーパス７２として出力する機能を持つ。より具体的には、この機能は、フリーソフトウェアである「ＣａｂｏＣｈａ」（http://chasen.org/~taku/software/cabocha/）を使用して実現できる。
【００３８】
カタカナ文字列抽出部７４は、依存構造解析済みコーパス７２に含まれるカタカナ文字列を抽出し、カタカナ文字列記憶部７６に書出す機能を持つ。図３にカタカナ文字列記憶部７６に記憶されているカタカナ文字列リスト１７０の例を示す。図３に示すように、カタカナ文字列リスト１７０は、入力コーパス３０内のすべてのカタカナ文字列をその発生個所および出現頻度とともに記憶している。
【００３９】
文脈ベクトル準備処理部５２は、カタカナ文字列記憶部７６に記憶されている全てのカタカナ文字列について、依存構造解析済みコーパス７２を参照して文脈ベクトルを作成するための文脈ベクトル作成部９０と、文脈ベクトル作成部９０により作成された文脈ベクトルを記憶するための文脈ベクトル記憶部９２とを含む。図４（Ａ）は、文脈ベクトル記憶部９２に記憶された文脈ベクトルリスト１８０の構造の一例を示す。
【００４０】
図４（Ａ）に示すように、文脈ベクトルリスト１８０は、図３に示す各カタカナ文字列について、その文脈ベクトルを格納したものである。カタカナ文字列の文脈ベクトルとは、図２に示す依存構造から得られるものであって、当該カタカナ文字列と共起する名詞と、当該カタカナ文字列が依存する述語の原型と、述語とその接頭詞との対とをこの順で組合せてベクトルとしたものである。例えば図２に示す例における「シャンペン」に対する文脈ベクトルは、各語をローマ字表記で表すと図４（Ｂ）上段に示すとおり、「Ｎ；ｇｕｒａｓｕ：１，Ｐ；ｋｕｄａｓａｒｕ：１，ＰＰ；ｏ−ｋｕｄａｓａｒｕ：１」となる。ここで、各要素は、依存関係を表す記号（「Ｎ」は共起する名詞、「Ｐ」は述語、「ＰＰ」は述語と接頭詞との対を表す。）と、その依存関係にある単語（群）と、その単語（群）が当該カタカナ文字列とその依存関係で生じた頻度とからなる。図４（Ｂ）上段に示す例は、「シャンペン」という語が、「グラス」と共起するのが１度、「くださる」を述部としてとるのが１度、「（シャンペン）をくださる」という形で使用されるのが１度、ということを表す。図４（Ｂ）下段に示すように、「グラス」という語についても同様に文脈ベクトルが作成できる。
【００４１】
判定情報作成部５４は、カタカナ文字列記憶部７６に記憶されたカタカナ文字列を、所定の順番で一つずつ選択するためのカタカナ文字列選択部１１０と、カタカナ文字列選択部１１０により選択されたカタカナ文字列に対し、比較の対象となるカタカナ文字列をカタカナ文字列記憶部７６から所定の順番にしたがって一つずつ全て読出すための比較対象カタカナ文字列選択部１１１と、カタカナ文字列選択部１１０により選択されたカタカナ文字列と、比較対象カタカナ文字列選択部１１１により読出された比較対象のカタカナ文字列との間の編集距離に基づく類似度ｓｉｍedを算出するための編集距離類似度算出部１１２と、カタカナ文字列選択部１１０により選択されたカタカナ文字列のローマ字表記文字列について、カタカナ文字列選択部１１０により選択されたカタカナ文字列のローマ字表記文字列との間で後述する文字列距離に基づく文字列距離類似度ｓｉｍsを算出するための文字列距離類似度算出部１１６とを含む。文字列距離とは、特定のパタンを検出するために、ローマ字表記文字列の間の相違に、その相違によって決まる特定の重みを乗じて算出する編集距離のことをいう。
【００４２】
本実施の形態では、文字列Ｓｔｒ1とＳｔｒ2との間の編集距離に基づく類似度ｓｉｍedは以下の式により定義される。
【００４３】
【数６】
2006053866.tif 000008
ここで、ＥＤ（Ｓｔｒ1，Ｓｔｒ2）は文字列Ｓｔｒ1およびＳｔｒ2の間の通常の編集距離を表す。文字列の比較において、二つの文字列が先頭部分または末尾部分に同じ形態素を有している場合、それらは比較から除外される。例えば図５に示す例では、カタカナ文字列２１０「レポート」とカタカナ文字列２１２「リポート」との間では、矩形２１４で囲った部分（「レ」と「リ」）の置換が生じている。この場合、両者の編集距離は「１」（置換を削除＋挿入と考える場合には「２」）となる。
【００４４】
一方、カタカナ文字列ＡとＢとの間の文字列距離類似度ｓｉｍsは、カタカナ文字列ｘのローマ字表記文字列をｒｏｍ（ｘ）、カタカナ文字列ｘとｙとの間の加重編集距離をＥＤk（ｘ，ｙ）とすると、以下の式により定義される。
【００４５】
【数７】
2006053866.tif 000009
加重編集距離ＥＤk(ｒｏｍ（Ａ），ｒｏｍ（Ｂ））は、ローマ字表記文字列の間で、一方の文字列を他方の文字列に変えるために文字の置換、削除、挿入などの編集操作が必要な場合、その編集操作の生じた個所の条件に応じて「１」ではなく例えば「０．８」のように所定の重みを付けて加算したものをいう。図６にその例を示す。「レポート」のローマ字表記文字列２３０「ｒｅｐｏｏｔｏ」と「リポート」のローマ字表記文字列２３２「ｒｉｐｏｏｔｏ」との間では、矩形２３４で囲まれた部分で「ｅ」と「ｉ」との置換が生じている。ここでは同じ子音「ｒ」の後に「ｅ」と「ｉ」との置換が生じている。本実施の形態では、このような場合には、重みとして０．８を乗算することとしている。重みについては、例としてあげたように同一の特定の子音の後に生じた母音の置換、同一の母音の前に生じた子音の置換、削除、など、編集操作の種類と周囲の環境に応じ、適切な重みを与える。
【００４６】
より具体的には、加重編集距離ＥＤk（ｘ，ｙ）は局所文字列に基づき計算される緩和された距離を決定する距離関数である。加重編集距離ＥＤk（ｘ，ｙ）は次の式により定義される。
【００４７】
【数８】
2006053866.tif 000010
ただし、二つの文字列Ｓ1およびＳ2に対し、Ｄ（ｉ，ｊ）は文字列Ｓ1［１‥ｉ］および文字列Ｓ2［１‥ｊ］の間の、以下に述べるような特殊な編集距離として定義される。すなわち、Ｄ（ｉ，ｊ）は次の漸化式関係により与えられる。
【００４８】
【数９】
2006053866.tif 000011
ただしｉｄ（ｉ，ｊ）は挿入および削除操作の距離を表し、文字Ｓ1（ｉ）または文字Ｓ2（ｊ）が子音であればペナルティＰidという値をとり、それ以外では１という値をとるように定義される。さらにｔ（ｉ，ｊ）は置換操作に対する距離を表し、Ｓ1（ｉ）＝Ｓ2（ｊ）であれば０をとりそれ以外では所定のテーブルにしたがった値を返す関数として定義される。このｔ（ｉ，ｊ）の値は、文字列Ｓ1［ｉ−３，…，ｉ，…，ｉ＋３］と文字列Ｓ2［ｊ−３，…，ｊ，…，ｊ＋３］とに依存する。このために、カタカナ表記検査装置３２は、図１に示すように文字列距離類似度算出部１１６に接続されたｔ（ｉ，ｊ）テーブル１１４を含んでいる。
【００４９】
図７に、ｔ（ｉ，ｊ）テーブル１１４の形式を示す。図７の最上段には、文字列Ｓ1［ｉ−３，…，ｉ，…，ｉ＋３］のインデックスおよび文字列Ｓ2［ｊ−３，…，ｊ，…，ｊ＋３］のインデックスを示す。ｔ（ｉ，ｊ）テーブル１１４は本実施の形態では全部で２９個のエントリを含むが、図７にはそのうちの３エントリを示している。
【００５０】
例えば第１番目のエントリは、Ｓ1（ｉ）＝「ｙ」かつＳ2（ｊ）＝「ｉ」かつＳ1（ｉ−１）＝Ｓ2（ｊ−１）、かつＳ2（ｊ−１）＝Ｓ1（ｉ−１）、かつＳ1（ｉ＋１）＝「ｕ」かつＳ2（ｊ＋１）＝Ｓ1（ｉ＋２）かつＳ1（ｉ＋２）＝［ｋｍｎｔ］（正規表現でｋ，ｍ，ｎ，またはｔのうちの任意のものを表す。）かつＳ2（ｊ＋２）＝「ｙ」かつＳ1（ｉ＋３）＝「ｉ」かつＳ2（ｊ＋３）＝「ｕ」のとき、ｔ（ｉ，ｊ）＝−０．３とすることを表す。他のエントリも同様である。これらエントリについては、予め開発用のコーパスを用い、何らかの尺度（例えばＦ値）が所定の値となるように適切な値を求めておく。
【００５１】
再び図１を参照して、判定情報作成部５４はさらに、文脈ベクトル記憶部９２を参照し、カタカナ文字列選択部１１０によって選択されたカタカナ文字列の文脈ベクトルと、カタカナ文字列選択部１１０により選択された比較対象カタカナ文字列の文脈ベクトルとを文脈ベクトル記憶部９２から読出し、それらの間の文脈類似度を算出するための文脈類似度算出部１１８を含む。
【００５２】
文脈類似度算出部１１８による文脈類似度の算出は以下のようにして行なわれる。文脈類似度は、カタカナ文字列同士が表記ゆれの関係にあるか否かをより正確に判定する上で、カタカナ文字列の周囲の環境を考慮にいれるために導入されたものである。文脈類似度算出部１１８は、文脈ベクトル記憶部９２に格納された各文脈ベクトルの各要素に対し、情報検索理論でいうｔｆ−ｉｄｆ（索引語頻度−文書頻度の逆数）と類似した重みを乗ずる。重みは以下の式により算出される。
【００５３】
【数１０】
2006053866.tif 000012
ただしｋｗiはカタカナ文字列であり、ｅiはカタカナ文字列ｋｗiに対応する文脈ベクトルの要素であり、ｆ（ｋｗi，ｅi）はカタカナ文字列ｋｗiに対する要素ｅiの頻度であり、ｓｆ（ｋｗi）はカタカナ文字列ｋｗiを含む文の頻度であり、Ｎはコーパス内におけるカタカナ文字列の数を表す。
【００５４】
文脈類似度ｓｉｍcは以下の式により定義される。
【００５５】
【数１１】
2006053866.tif 000013
ただしｖｅｃ（ｋｗ）はカタカナ文字列ｋｗに対する文脈ベクトルを表す。
【００５６】
再び図１を参照して、判定処理部５８は、編集距離類似度算出部１１２により算出された編集距離類似度、文字列距離類似度算出部１１６により算出された文字列距離類似度、および文脈類似度算出部１１８により算出された文脈類似度に基づいて二つのカタカナ文字列が互いに表記ゆれの関係にあるか否かを判定するための規則を記憶した判定規則記憶部１３２と、判定規則記憶部１３２により記憶された規則を適用する際に、上記した類似度と比較されるしきい値などを記憶したしきい値記憶部１３０と、二つのカタカナ文字列が互いに表記ゆれの関係にないと判定する際に使用する一般的な（電子的に読取可能な）辞書１３４と、編集距離類似度算出部１１２、文字列距離類似度算出部１１６、および文脈類似度算出部１１８からそれぞれ類似度を受け、しきい値記憶部１３０および辞書１３４を参照して判定規則記憶部１３２に記憶された規則をこれら類似度に適用することにより、二つのカタカナ文字列が互いに表記ゆれの関係にあるか否かを判定し、その結果を表記ゆれ記憶部３４に出力するための判定規則適用部１３６とを含む。
【００５７】
図８に、判定規則記憶部１３２に記憶される判定規則の一例を示す。図８を参照して、カタカナ文字列の長さと、出現頻度と、編集距離類似度ｓｉｍedと、文字列距離類似度ｓｉｍsと、文脈類似度ｓｉｍcとについて、それぞれしきい値ＴＨlen、ＴＨfreq、ＴＨed1およびＴＨed2、ＴＨst1およびＴＨst2、ならびにＴＨcos1およびＴＨcos2との間で判定規則記憶部１３２に記憶された各規則に適合するか否かの判定が行なわれる。そして、適合する規則があればその規則にしたがって判定される。
【００５８】
例えば、図８に示す例でいえば、カタカナ文字列の長さがしきい値ＴＨlenより大きく、対象の二つのカタカナ文字列の間の編集距離類似度がしきい値ＴＨed1より大きく、文字列距離類似度がしきい値ＴＨst1より大きいときには、判定規則記憶部１３２の第１行めのエントリの条件が充足される。したがってこの規則の判定（「異表記」）にしたがい、二つのカタカナ文字列は互いに異表記（表記のゆれ）の関係にあると判定される。
【００５９】
またカタカナ文字列の長さがしきい値ＴＨlen以下であり、頻度がしきい値ＴＨfreqより大きく、文脈類似度ｓｉｍcがしきい値ＴＨcos1より小さいときには、２番目のエントリの条件が充足される。したがってこの規則の判定（「別語」）にしたがい、二つのカタカナ文字列は互いに別の語であると判定される。
【００６０】
実際には、最初には第４行目に記載のように、比較対象となる二つのカタカナ文字列がともに図１に示す辞書１３４にあるか否かを判定し、双方のエントリが存在していれば別の語であると判定する。いずれか一方のエントリ、または双方のエントリとも辞書１３４にないと判定された後、図８に示す判定規則記憶部１３２に記載の各規則が適用される。
【００６１】
また、図８に示す各しきい値および前述のペナルティＰidの値については、予め適切なコーパスを利用して実験により定めておく必要がある。本実施の形態では、出願人において作成したコーパスを用い、上記したのと同様の処理を行なって各類似度を算出する実験を繰返し、その結果Ｆ値が最も高くなるようなしきい値等の組を推定した。その値の例は、Ｐid＝２．５、ＴＨlen＝５、ＴＨst1＝９．４、ＴＨfreq＝３、ＴＨcos1＝０．１２、ＴＨcos2＝０．０２、ＴＨed1＝ＴＨed2＝０．６５、およびＴＨst2＝０．８９である。この値はコーパスにより変動する可能性があるが、おおむねこの近辺の値を使用すれば適切な結果が得られると思われる。これらしきい値などの値は予め図１に示すしきい値記憶部１３０に記憶されており、判定規則適用部１３６が規則の適用時に読込んで使用する。
【００６２】
［動作］
表記ゆれ解消システム２０は以下のように動作する。まず、判定規則記憶部１３２には図８に示す判定規則記憶部１３２を、しきい値記憶部１３０にはしきい値を、それぞれ格納しておく。辞書１３４としては、電子的に読取可能な辞書を準備しておく。
【００６３】
入力コーパス３０を依存構造解析部７０に与える。依存構造解析部７０は、入力コーパス３０中の各文について図２に示すような依存構造を解析し、依存構造に関する情報を各文に付加した依存構造解析済みコーパス７２を作成する。カタカナ文字列抽出部７４は、依存構造解析済みコーパス７２に格納された各文からカタカナ文字列をその出現個所とともに抽出し、カタカナ文字列記憶部７６に記憶させる。
【００６４】
文脈ベクトル作成部９０は、カタカナ文字列記憶部７６に記憶されたカタカナ文字列のリストをもとに、各カタカナ文字列に対し依存構造解析済みコーパス７２を参照して文脈ベクトルを作成・更新し、文脈ベクトル記憶部９２に格納させる。
【００６５】
カタカナ文字列選択部１１０は、カタカナ文字列記憶部７６に記憶されたカタカナ文字列を所定の順番（例えばアイウエオ順）にしたがって一つ読出し、編集距離類似度算出部１１２、文字列距離類似度算出部１１６、および文脈類似度算出部１１８に与える。さらにカタカナ文字列選択部１１０は、カタカナ文字列記憶部７６から所定の順番でカタカナ文字列を順に読出すように比較対象カタカナ文字列選択部１１１に指示する。比較対象カタカナ文字列選択部１１１は、この指示に応答して、カタカナ文字列記憶部７６から比較対象のカタカナ文字列を一つ読出し、編集距離類似度算出部１１２、文字列距離類似度算出部１１６、および文脈類似度算出部１１８に与える。
【００６６】
編集距離類似度算出部１１２は、カタカナ文字列選択部１１０から与えられたカタカナ文字列と、比較対象カタカナ文字列選択部１１１から与えられた比較対象のカタカナ文字列との間で編集距離類似度ｓｉｍedを式（１）にしたがって計算し、判定規則適用部１３６に与える。文字列距離類似度算出部１１６は、比較対象カタカナ文字列選択部１１１から与えられたカタカナ文字列のローマ字表記文字列と、カタカナ文字列選択部１１０から与えられたカタカナ文字列のローマ字表記文字列との間の文字列距離類似度ｓｉｍsを、ｔ（ｉ，ｊ）テーブル１１４を参照しながら式（２）〜（４）にしたがって算出し、判定規則適用部１３６に与える。文脈類似度算出部１１８は、カタカナ文字列選択部１１０から与えられたカタカナ文字列の文脈ベクトルと、比較対象カタカナ文字列選択部１１１から与えられたカタカナ文字列の文脈ベクトルとを文脈ベクトル記憶部９２から読出し、式（５）（６）にしたがってそれらの間の文脈類似度ｓｉｍcを算出し判定規則適用部１３６に与える。
【００６７】
判定規則適用部１３６は、編集距離類似度算出部１１２、文字列距離類似度算出部１１６、および文脈類似度算出部１１８からそれぞれ与えられた類似度ｓｉｍed、ｓｉｍs、およびｓｉｍcと、カタカナ文字列選択部１１０が選択したカタカナ文字列の長さと、そのカタカナ文字列の出現頻度とを用い、判定規則記憶部１３２に記憶された判定規則、しきい値記憶部１３０に記憶された各しきい値など、および辞書１３４を用いて、カタカナ文字列選択部１１０により選択されたカタカナ文字列と、比較対象カタカナ文字列選択部１１１により選択された比較対象のカタカナ文字列とが表記ゆれの関係にあるか否かを判定する。
【００６８】
より具体的には、判定規則適用部１３６はまず、カタカナ文字列選択部１１０により与えられたカタカナ文字列と、比較対象カタカナ文字列選択部１１１から与えられた比較対象のカタカナ文字列とが、辞書１３４において別々のエントリとなっているか否かを判定する。別々のエントリとなっていれば、判定規則適用部１３６は両者は別語であると判定する。別々のエントリとなっていない場合には、図８に示す判定規則と、図７に示すしきい値などとを用い、表記ゆれか否かの判定を行なう。
【００６９】
もし二つのカタカナ文字列が表記ゆれであれば、判定規則適用部１３６は表記ゆれ記憶部３４に対しこの二つのカタカナ文字列の組を出力する。
【００７０】
判定が終わると判定規則適用部１３６は比較対象カタカナ文字列選択部１１１に対し次の比較対象のカタカナ文字列を読出すように指示する。比較対象カタカナ文字列選択部１１１は、この指示に応答して、カタカナ文字列記憶部７６から次の比較対象カタカナ文字列を選択し、編集距離類似度算出部１１２、文字列距離類似度算出部１１６、文脈類似度算出部１１８、および判定規則適用部１３６に与える。編集距離類似度算出部１１２、文字列距離類似度算出部１１６、文脈類似度算出部１１８および判定規則適用部１３６は、上述した処理をこの新たな比較対象カタカナ文字列に対して実行する。
【００７１】
こうして、比較対象カタカナ文字列選択部１１１がカタカナ文字列記憶部７６に格納されている全てのカタカナ文字列を読出し、それらに対する判定規則適用部１３６の判定が終了すると、比較対象カタカナ文字列選択部１１１はカタカナ文字列選択部１１０に対し次のカタカナ文字列の処理を開始するように指示を送る。カタカナ文字列選択部１１０は、この指示に応答して、カタカナ文字列記憶部７６から次のカタカナ文字列を読出し、編集距離類似度算出部１１２、文字列距離類似度算出部１１６、文脈類似度算出部１１８、および判定規則適用部１３６に与える。
【００７２】
こうして、カタカナ文字列選択部１１０がカタカナ文字列記憶部７６に格納された全てのカタカナ文字列を読出し、それらカタカナ文字列の全てに対してカタカナ文字列記憶部７６に記憶された他のカタカナ文字列との間の表記ゆれ判定が終了すると、カタカナ表記検査装置３２は入力コーパス３０に対する表記ゆれ記憶部３４の出力処理を終了する。
【００７３】
表記更新部３６は、入力コーパス３０の各文を読出し、表記ゆれ記憶部３４に記憶されている表記ゆれレポートにしたがい、表記ゆれを解消するように各文のカタカナ文字列を書き換え、出力コーパス３８を出力する。カタカナ文字列の書換えは、例えば表記ゆれを構成するカタカナ文字列のうちで最も頻度が高かったもので他の表記ゆれのカタカナ文字列を書換えるようにすればよい。
【００７４】
このようにして得られた出力コーパス３８は、互いに表記ゆれの関係にあるようなカタカナ文字列を含まない。この出力コーパス３８中のテキストをコンピュータで処理するにあたり、カタカナ文字列の表記ゆれに起因する不都合の発生が防止できる。
【００７５】
なお、上記表記ゆれ解消システム２０およびカタカナ表記検査装置３２を、コンピュータハードウェアおよびその上で実行される、上記説明に鑑みて適切に作成されたコンピュータプログラムにより実現できることはいうまでもない。
【００７６】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味および範囲内でのすべての変更を含む。
【図面の簡単な説明】
【００７７】
【図１】本発明の一実施の形態に係る表記ゆれ解消システム２０のブロック図である。
【図２】文の依存関係を説明するための模式図である。
【図３】カタカナ文字列記憶部７６の構成を示す模式図である。
【図４】文脈ベクトル記憶部９２の構成および文脈ベクトルの構成を示す模式図である。
【図５】編集距離の算出方法を模式的に示す図である。
【図６】文字列距離の算出方法を模式的に示す図である。
【図７】文字列距離の算出に用いるｔ（ｉ，ｊ）テーブル１１４の模式図である。
【図８】判定規則記憶部１３２に記憶された判定規則の例を示す図である。
【符号の説明】
【００７８】
２０  表記ゆれ解消システム、３０  入力コーパス、３２  カタカナ表記検査装置、３４  表記ゆれ記憶部、３６  表記更新部、３８  出力コーパス、５０  カタカナ文字列抽出処理部、５２  文脈ベクトル準備処理部、５４  判定情報作成部、７０  依存構造解析部、７２  依存構造解析済みコーパス、７４  カタカナ文字列抽出部、７６  カタカナ文字列記憶部、９０  文脈ベクトル作成部、９２  文脈ベクトル記憶部、１１０  カタカナ文字列選択部、１１２  編集距離類似度算出部、１１４  ｔ（ｉ，ｊ）テーブル、１１６  文字列距離類似度算出部、１１８  文脈類似度算出部、１３０  しきい値記憶部、１３２  判定規則記憶部、１３４  辞書、１３６  判定規則適用部
【図１】
2006053866.tif 000014
【図２】
2006053866.tif 000015
【図３】
2006053866.tif 000016
【図４】
2006053866.tif 000017
【図５】
2006053866.tif 000018
【図６】
2006053866.tif 000019
【図７】
2006053866.tif 000020
【図８】
2006053866.tif 000021