説明

カタカナ文字列の表記ゆれの検出方法

【課題】カタカナ文字列に対して、表記のゆれか否かについての判定を信頼性をもって行なえるようにする。
【解決手段】表記ゆれの検出方法は、コーパス30中からカタカナ文字列を抽出しカタカナ文字列記憶部76に格納するステップ50と、記憶されたカタカナ文字列の任意の二つの組合せに対し、当該二つのカタカナ文字列およびそれらのローマ字表記文字列を用い、予め定義された複数通りの類似度を算出するステップ54と、複数通りの類似度を組合わせた判定規則により、第1の記憶装置に記憶されたカタカナ文字列の任意の二つが互いに表記ゆれの関係にあるか否かを判定するステップ58とを含む。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は日本語のテキストデータを処理する技術に関し、特に、カタカナで記述された文字列を含む自然言語テキストデータを処理する際の文字列照合方法および文字列修正方法に関する。
【背景技術】
【0002】
日本語は、ひらがな・カタカナという表音文字に加えて、表意文字である漢字、さらには英文字と、多くの文字種を使用する言語である。そのため、日本語には表記のゆれが多く存在することが知られている。
【0003】
表記のゆれには、送り仮名(「行う」と「行なう」)、文字種(「猫」−「ねこ」−「ネコ」)、カタカナによる表記方法(「メード」−「メイド」)などがある。中でもカタカナは、外来語、植物および動物の名前、外国の人名または地名などを記述する上で便利なこともあり、非常に多く使用されている。また、外国文化との接触がより広範囲かつ濃密になるにしたがって、使用されるカタカナ文字列の数はさらに増加し続けている。
【0004】
こうした表記のゆれは、コンピュータで日本語文章を処理する際には様々な問題を引き起こす。その一例は文字列の検索において、検索語として与えられた文字列が表す事物と同じ事物を表すにもかかわらず、表記のゆれによって検索語と不一致となり探し出せない語があるということである。特にカタカナ語の場合、次のような問題があり、日本語の自然言語データの円滑な処理を妨げることが多く、その表記のゆれを解消するための技術が必要とされている。
【0005】
・使用される頻度が多い。
【0006】
・外国語の音声または文字列から簡単にカタカナ語を作り出すことができる。
【0007】
・外国語の文字列から想起される音声と、その実際の発音とが異なる場合、文字列から作成されたカタカナ語と、発音から作成されたカタカナ語とが互いに異なったものとなることが多い。英語の「report」について、文字から生じた「レポート」と、発音から生じた「リポート」がその例である。
【0008】
・外国語にはカタカナでは表現できない音韻があり、それらを近似的にカタカナで表現しようとして複数のカタカナ語が作成されることがある。
【0009】
・外国語からカタカナ語を作成する場合、複数の外国語から同じ意味の言葉が別々に入るため、それらのカタカナ表現が異なることがある。例えば英語の「virus」に対応するカタカナ語は、ラテン語から生じる「ウイルス」および「ウィルス」、ドイツ語から生じる「ビールス」および「ヴィールス」、英語の発音から生じる「バイラス」および「ヴァイラス」など、多数である。
【0010】
カタカナ語の表記のゆれを解消するためには、ある表記が、別の表記に対する「表記のゆれ」に相当するか否かを判定しなければならない。そのためには、まず表記のゆれに相当するのではないかと思われる二つの文字列を抽出し、互いに照合し、その照合結果に基づいて二つの文字列が表記のゆれに相当するか否かを判定することが必要である。
【0011】
完全に一致しない文字列を対象とした文字列照合方法としては、非特許文献1に記載された、「編集距離」に基づいて文字列間の距離を定義する方法がある。非特許文献1では、一方の文字列を他方の文字列に変換するために必要な文字の置換、挿入、削除という編集操作の回数を合計したものをこの二つの文字列の間の編集距離と定義し、文字列間の近さを計るための尺度として用いている。
【0012】
しかし、カタカナ語の表記のゆれの場合、二つのカタカナ語が互いに表記のゆれに相当するか否かは、上記した編集距離だけでは断定できない。したがって、編集距離を用いる文字列照合方法をカタカナ語の表記のゆれの判定にそのまま適用することは困難である。そこで、一般的には、予想される表記のゆれ、または経験的に分かっている表記のゆれを辞書に登録し、その辞書を用いて二つのカタカナ語を照合する方法が用いられてきた。
【0013】
一方、二つのカタカナ語が互いに表記のゆれの関係にあるか否かを判定する方法として、特許文献1に開示されたものがある。特許文献1においては、表記が異なるが同じ意味を表すカタカナ語(異表記同義カタカナ文字列と呼ぶ。)の集合から、表記のゆれに相当する表記の異なりを、正規表現によってパターン化した規則として表し、当該規則を用いた文字列変換を行なってから文字列照合を行なう。
【特許文献1】特開2002-091951号公報
【非特許文献1】スン ウー他1名、「誤りを許容する高速テキストサーチ」、ACMコミュニケーション、第35巻、第10号、pp.83−91、1992年(Sun Wu and Udi Manber, "Fast Text Search Allowing Errors," Communications of the ACM, Vol. 35, No. 10, pp. 83-91, 1992)
【発明の開示】
【発明が解決しようとする課題】
【0014】
しかし、このように規則によって異表記同義カタカナ文字列を記述したり、異表記同義カタカナ文字列からなる辞書を作成したりする方法では、増加し続けるカタカナ語に対して十分な効果を期待できない。今まで出現したことのないカタカナ文字列に対しても、表記のゆれか否かを判定できるような手法が望ましいが、今までのところそうした手法は存在していない。
【0015】
それゆえに本発明の目的は、カタカナ文字列に対して、表記のゆれか否かについての判定を信頼性をもって行なうことができる表記のゆれ検出方法を提供することである。
【0016】
本発明の別の目的は、未知のカタカナ文字列に対しても、表記のゆれか否かについての判定を信頼性をもって行なうことができる表記のゆれ検出方法を提供することである。
【課題を解決するための手段】
【0017】
本発明の第1の局面に係る表記ゆれの検出方法は、コーパス中のカタカナ文字列に対する表記ゆれの検出方法であって、コーパス中からカタカナ文字列を抽出し第1の記憶装置に格納するステップと、第1の記憶装置に記憶されたカタカナ文字列の任意の二つの組合せに対し、当該二つのカタカナ文字列および対応するローマ字表記文字列を用い、予め定義された複数通りの類似度を算出するステップと、複数通りの類似度を組合わせた判定規則により、第1の記憶装置に記憶されたカタカナ文字列の任意の二つが互いに表記ゆれの関係にあるか否かを判定するステップとを含む。
【0018】
複数通りの類似度を組合わせた判定規則にしたがって、二つのカタカナ文字列が表記ゆれの関係にあるか否かを判定する。カタカナ文字列に対する通常の類似度を単独で用いるだけではなく、複数種類の類似度を用いて判定するので、表記ゆれの検出がより的確に行なえる。またカタカナ文字列が既知か否かに関係なく判定を行なえる。
【0019】
好ましくは、類似度を算出するステップは、第1の記憶装置に記憶された任意のあるカタカナ文字列に対し、第1の記憶装置に記憶された任意の他のカタカナ文字列との間の編集距離に基づいて定義される第1の類似度を算出するステップと、あるカタカナ文字列のローマ字表記に対し、他のカタカナ文字列のローマ字表記との間の文字列距離に基づいて定義される第2の類似度を算出するステップとを含み、判定するステップは、第1の類似度および第2の類似度が所定の判定式を充足するか否かにしたがって、あるカタカナ文字列と他のカタカナ文字列とが表記ゆれの関係にあるか否かを判定するステップを含む。
【0020】
カタカナ文字列について、カタカナ表記だけではなくローマ字表記による文字列距離に基づいて算出した類似度を用いるので、カタカナ表記のみを用いる場合より、さらに精度よくカタカナ文字列の表記ゆれかどうかを判定できる。
【0021】
カタカナ文字列のローマ字表記には訓令式に基づくISO3602規格に準じた表記法を用いるとよい。
【0022】
この表記法を用いると、例えばカタカナ表記のゆれである「ティケット」および「チケット」の「ティ」と「チ」とが同一のローマ字表記「ti」で表されるなど、表記のゆれを検出するのに都合がよく、表記ゆれの検出精度を高めることができる。
【0023】
さらに好ましくは、類似度を算出するステップはさらに、第1の記憶装置に格納されたカタカナ文字列に対し、コーパス内における当該カタカナ文字列が出現した個所における文脈を表す文脈ベクトルを作成し、第2の記憶装置に格納するステップと、あるカタカナ文字列に対して第2の記憶装置に記憶された文脈ベクトルと、他のカタカナ文字列に対して第2の記憶装置に記憶された文脈ベクトルとの間に定義される第3の類似度を算出するステップとを含む。判定するステップは、第1の類似度、第2の類似度、および第3の類似度を用いてあるベクトルと他のベクトルとが互いに表記ゆれの関係にあるか否かを判定し判定結果を出力するステップを含む。
【0024】
第3の類似度は、以下の式
【0025】
【数1】

により定義される文脈類似度simcでもよい。ただしkwiはカタカナ文字列、vec(kw)はカタカナ文字列kwに対する文脈ベクトル、eiはカタカナ文字列kwiに対応する文脈ベクトルの要素、f(kwi,ei)はカタカナ文字列kwiに対する要素eiの頻度、sf(kwi)はカタカナ文字列kwiを含む文の頻度、Nは入力コーパス内におけるカタカナ文字列の数、である。
【0026】
より好ましくは、カタカナ文字列Str1とカタカナ文字列Str2との間の第1の類似度は、
【0027】
【数2】

により定義される類似度simedを含む。ただし、ED(Str1,Str2)はカタカナ文字列Str1をカタカナ文字列Str2に変換するために必要な文字の挿入、削除、および置換からなる編集操作の数、|Str|は文字列Strの文字数である。
【0028】
カタカナ文字列Aとカタカナ文字列Bとの間の第2の類似度は、
【0029】
【数3】

によって定義される文字列距離類似度simsでもよい。ただしrom(X)はカタカナ文字列Xのローマ字表記文字列、EDk(rom(A),rom(B))はローマ字表記文字列rom(A)およびrom(B)の間で、一方の文字列を他方の文字列に変えるために必要な文字の挿入、削除、および置換からなる編集操作の数であって、かつ編集操作の生じた個所の条件に応じて所定の重みが乗算された加重編集距離、|rom(X)|はカタカナ文字列Xのローマ字表記文字列中の文字数である。
【0030】
好ましくは、ローマ字表記文字列xとローマ字表記文字列yとの間の加重編集距離EDk(x,y)は、以下の式によって算出される。
【0031】
【数4】

ただし、二つの文字列x=S1[1‥i]およびy=S2[1‥j]に対し、D(i,j)は、次の漸化式関係により与えられる。
【0032】
【数5】

id(i,j)は挿入および削除操作の数を表し、文字S1(i)または文字S2(j)が子音であれば予め定められたペナルティPidという値をとり、それ以外では1という値をとるように定義され、t(i,j)は置換操作の数を表し、S1(i)=S2(j)であれば0をとり、それ以外では、t(i,j)の値が文字列S1[i−3,…,i,…,i+3]と文字列S2[j−3,…,j,…,j+3]とに依存して定められるように予め設定されている。
【発明を実施するための最良の形態】
【0033】
以下に説明する本発明の一実施の形態に係るカタカナ文字列の表記ゆれ解消システムは、複数の類似度によってカタカナ文字列同士が表記ゆれの関係にあるか否かを判定する機能を持つ。そのために、カタカナ文字列の発音についてローマ字表記を使用する。ローマ字表記の中でも、訓令式に基づくISO3602規格に準じた表記法を用いる。この表記法を用いると、例えば「シ」は「si」と表される。一方、訓令式と異なるヘボン式では「シ」は「shi」と表されるが、この場合には間に挿入された文字「h」が、マッチングにおいて障害となる。一方訓令式ではカタカナは一般に二つのローマ字(子音と母音とをそれぞれ表す。)により表現されるので、そうした問題が生じにくい。さらに、このローマ字表記システムでは、「チケット」と「ティケット」とがともに「tiketto」と表され、ローマ字表記では特別の処理をしなくても同一の語として扱われる。
【0034】
[構成]
図1に、本発明の一実施の形態に係るカタカナ文字列の表記ゆれ解消システム20のブロック図を示す。図1を参照して、表記ゆれ解消システム20は、入力コーパス30内の文に含まれるカタカナ文字列の表記ゆれを検出し、表記ゆれレポートとして出力するためのカタカナ表記検査装置32と、カタカナ表記検査装置32により出力される表記ゆれレポートを記憶するための表記ゆれ記憶部34と、表記ゆれ記憶部34に記憶された表記ゆれレポートにしたがってカタカナ文字列の表記ゆれを所定のカタカナ文字列に統一するように入力コーパス30中の表記ゆれを更新し出力コーパス38を出力するための表記更新部36とを含む。
【0035】
カタカナ表記検査装置32は、入力コーパス30中の文の依存構造を解析し、その結果を用いて入力コーパス30に含まれるカタカナ文字列をその出現個所および出現頻度とともに抽出するためのカタカナ文字列抽出処理部50と、カタカナ文字列抽出処理部50により抽出されたカタカナ文字列と依存構造解析結果とから、各カタカナ文字列に対し後述する文脈ベクトルを準備するための文脈ベクトル準備処理部52と、カタカナ文字列抽出処理部50により抽出されたカタカナ文字列と、文脈ベクトル準備処理部52により準備された文脈ベクトルとを用い、入力コーパス30中のカタカナ文字列の各々に対して、他のカタカナ文字列と表記のゆれという関係にあるか否かを判定する際に使用される判定情報を作成するための判定情報作成部54と、判定情報作成部54により作成された判定情報と、予め学習用のデータを用いて作成されていた判定用の規則およびデータなどとを用いて、入力コーパス30に含まれる各カタカナ文字列が他のカタカナ文字列と表記のゆれに相当する関係にあるか否かを判定し、表記のゆれと判定されたカタカナ文字列を列挙した表記ゆれレポートを出力するための判定処理部58とを含む。
【0036】
カタカナ文字列抽出処理部50は、入力コーパス30に含まれる各文の依存構造を解析し、依存構造解析済みコーパス72を出力するための依存構造解析部70と、依存構造解析部70により出力された依存構造解析済みコーパス72中から、全てのカタカナ文字列を、それらの出現個所および出現頻度とともに抽出するためのカタカナ文字列抽出部74と、カタカナ文字列抽出部74により抽出されたカタカナ文字列をその出現個所および出現頻度とともに記憶するためのカタカナ文字列記憶部76とを含む。
【0037】
依存構造とは、文中の語句の間の修飾・被修飾関係がどのようになっているかを示す文法情報である。依存構造の一例を図2に示す。図2を参照して、「シャンペンをグラスでください」という文を形態素解析することにより、得られた単語の間には、形態素150(「シャンペン」)が形態素154(「ください」)に係っているという依存構造160と、形態素152(「グラス」)が同じく形態素154に係っているという依存構造162とが得られる。依存構造解析部70は、入力コーパス30中の各文に対し形態素解析を行なった後、依存構造解析をしてその結果を依存構造解析済みコーパス72として出力する機能を持つ。より具体的には、この機能は、フリーソフトウェアである「CaboCha」(http://chasen.org/~taku/software/cabocha/)を使用して実現できる。
【0038】
カタカナ文字列抽出部74は、依存構造解析済みコーパス72に含まれるカタカナ文字列を抽出し、カタカナ文字列記憶部76に書出す機能を持つ。図3にカタカナ文字列記憶部76に記憶されているカタカナ文字列リスト170の例を示す。図3に示すように、カタカナ文字列リスト170は、入力コーパス30内のすべてのカタカナ文字列をその発生個所および出現頻度とともに記憶している。
【0039】
文脈ベクトル準備処理部52は、カタカナ文字列記憶部76に記憶されている全てのカタカナ文字列について、依存構造解析済みコーパス72を参照して文脈ベクトルを作成するための文脈ベクトル作成部90と、文脈ベクトル作成部90により作成された文脈ベクトルを記憶するための文脈ベクトル記憶部92とを含む。図4(A)は、文脈ベクトル記憶部92に記憶された文脈ベクトルリスト180の構造の一例を示す。
【0040】
図4(A)に示すように、文脈ベクトルリスト180は、図3に示す各カタカナ文字列について、その文脈ベクトルを格納したものである。カタカナ文字列の文脈ベクトルとは、図2に示す依存構造から得られるものであって、当該カタカナ文字列と共起する名詞と、当該カタカナ文字列が依存する述語の原型と、述語とその接頭詞との対とをこの順で組合せてベクトルとしたものである。例えば図2に示す例における「シャンペン」に対する文脈ベクトルは、各語をローマ字表記で表すと図4(B)上段に示すとおり、「N;gurasu:1,P;kudasaru:1,PP;o−kudasaru:1」となる。ここで、各要素は、依存関係を表す記号(「N」は共起する名詞、「P」は述語、「PP」は述語と接頭詞との対を表す。)と、その依存関係にある単語(群)と、その単語(群)が当該カタカナ文字列とその依存関係で生じた頻度とからなる。図4(B)上段に示す例は、「シャンペン」という語が、「グラス」と共起するのが1度、「くださる」を述部としてとるのが1度、「(シャンペン)をくださる」という形で使用されるのが1度、ということを表す。図4(B)下段に示すように、「グラス」という語についても同様に文脈ベクトルが作成できる。
【0041】
判定情報作成部54は、カタカナ文字列記憶部76に記憶されたカタカナ文字列を、所定の順番で一つずつ選択するためのカタカナ文字列選択部110と、カタカナ文字列選択部110により選択されたカタカナ文字列に対し、比較の対象となるカタカナ文字列をカタカナ文字列記憶部76から所定の順番にしたがって一つずつ全て読出すための比較対象カタカナ文字列選択部111と、カタカナ文字列選択部110により選択されたカタカナ文字列と、比較対象カタカナ文字列選択部111により読出された比較対象のカタカナ文字列との間の編集距離に基づく類似度simedを算出するための編集距離類似度算出部112と、カタカナ文字列選択部110により選択されたカタカナ文字列のローマ字表記文字列について、カタカナ文字列選択部110により選択されたカタカナ文字列のローマ字表記文字列との間で後述する文字列距離に基づく文字列距離類似度simsを算出するための文字列距離類似度算出部116とを含む。文字列距離とは、特定のパタンを検出するために、ローマ字表記文字列の間の相違に、その相違によって決まる特定の重みを乗じて算出する編集距離のことをいう。
【0042】
本実施の形態では、文字列Str1とStr2との間の編集距離に基づく類似度simedは以下の式により定義される。
【0043】
【数6】

ここで、ED(Str1,Str2)は文字列Str1およびStr2の間の通常の編集距離を表す。文字列の比較において、二つの文字列が先頭部分または末尾部分に同じ形態素を有している場合、それらは比較から除外される。例えば図5に示す例では、カタカナ文字列210「レポート」とカタカナ文字列212「リポート」との間では、矩形214で囲った部分(「レ」と「リ」)の置換が生じている。この場合、両者の編集距離は「1」(置換を削除+挿入と考える場合には「2」)となる。
【0044】
一方、カタカナ文字列AとBとの間の文字列距離類似度simsは、カタカナ文字列xのローマ字表記文字列をrom(x)、カタカナ文字列xとyとの間の加重編集距離をEDk(x,y)とすると、以下の式により定義される。
【0045】
【数7】

加重編集距離EDk(rom(A),rom(B))は、ローマ字表記文字列の間で、一方の文字列を他方の文字列に変えるために文字の置換、削除、挿入などの編集操作が必要な場合、その編集操作の生じた個所の条件に応じて「1」ではなく例えば「0.8」のように所定の重みを付けて加算したものをいう。図6にその例を示す。「レポート」のローマ字表記文字列230「repooto」と「リポート」のローマ字表記文字列232「ripooto」との間では、矩形234で囲まれた部分で「e」と「i」との置換が生じている。ここでは同じ子音「r」の後に「e」と「i」との置換が生じている。本実施の形態では、このような場合には、重みとして0.8を乗算することとしている。重みについては、例としてあげたように同一の特定の子音の後に生じた母音の置換、同一の母音の前に生じた子音の置換、削除、など、編集操作の種類と周囲の環境に応じ、適切な重みを与える。
【0046】
より具体的には、加重編集距離EDk(x,y)は局所文字列に基づき計算される緩和された距離を決定する距離関数である。加重編集距離EDk(x,y)は次の式により定義される。
【0047】
【数8】

ただし、二つの文字列S1およびS2に対し、D(i,j)は文字列S1[1‥i]および文字列S2[1‥j]の間の、以下に述べるような特殊な編集距離として定義される。すなわち、D(i,j)は次の漸化式関係により与えられる。
【0048】
【数9】

ただしid(i,j)は挿入および削除操作の距離を表し、文字S1(i)または文字S2(j)が子音であればペナルティPidという値をとり、それ以外では1という値をとるように定義される。さらにt(i,j)は置換操作に対する距離を表し、S1(i)=S2(j)であれば0をとりそれ以外では所定のテーブルにしたがった値を返す関数として定義される。このt(i,j)の値は、文字列S1[i−3,…,i,…,i+3]と文字列S2[j−3,…,j,…,j+3]とに依存する。このために、カタカナ表記検査装置32は、図1に示すように文字列距離類似度算出部116に接続されたt(i,j)テーブル114を含んでいる。
【0049】
図7に、t(i,j)テーブル114の形式を示す。図7の最上段には、文字列S1[i−3,…,i,…,i+3]のインデックスおよび文字列S2[j−3,…,j,…,j+3]のインデックスを示す。t(i,j)テーブル114は本実施の形態では全部で29個のエントリを含むが、図7にはそのうちの3エントリを示している。
【0050】
例えば第1番目のエントリは、S1(i)=「y」かつS2(j)=「i」かつS1(i−1)=S2(j−1)、かつS2(j−1)=S1(i−1)、かつS1(i+1)=「u」かつS2(j+1)=S1(i+2)かつS1(i+2)=[kmnt](正規表現でk,m,n,またはtのうちの任意のものを表す。)かつS2(j+2)=「y」かつS1(i+3)=「i」かつS2(j+3)=「u」のとき、t(i,j)=−0.3とすることを表す。他のエントリも同様である。これらエントリについては、予め開発用のコーパスを用い、何らかの尺度(例えばF値)が所定の値となるように適切な値を求めておく。
【0051】
再び図1を参照して、判定情報作成部54はさらに、文脈ベクトル記憶部92を参照し、カタカナ文字列選択部110によって選択されたカタカナ文字列の文脈ベクトルと、カタカナ文字列選択部110により選択された比較対象カタカナ文字列の文脈ベクトルとを文脈ベクトル記憶部92から読出し、それらの間の文脈類似度を算出するための文脈類似度算出部118を含む。
【0052】
文脈類似度算出部118による文脈類似度の算出は以下のようにして行なわれる。文脈類似度は、カタカナ文字列同士が表記ゆれの関係にあるか否かをより正確に判定する上で、カタカナ文字列の周囲の環境を考慮にいれるために導入されたものである。文脈類似度算出部118は、文脈ベクトル記憶部92に格納された各文脈ベクトルの各要素に対し、情報検索理論でいうtf−idf(索引語頻度−文書頻度の逆数)と類似した重みを乗ずる。重みは以下の式により算出される。
【0053】
【数10】

ただしkwiはカタカナ文字列であり、eiはカタカナ文字列kwiに対応する文脈ベクトルの要素であり、f(kwi,ei)はカタカナ文字列kwiに対する要素eiの頻度であり、sf(kwi)はカタカナ文字列kwiを含む文の頻度であり、Nはコーパス内におけるカタカナ文字列の数を表す。
【0054】
文脈類似度simcは以下の式により定義される。
【0055】
【数11】

ただしvec(kw)はカタカナ文字列kwに対する文脈ベクトルを表す。
【0056】
再び図1を参照して、判定処理部58は、編集距離類似度算出部112により算出された編集距離類似度、文字列距離類似度算出部116により算出された文字列距離類似度、および文脈類似度算出部118により算出された文脈類似度に基づいて二つのカタカナ文字列が互いに表記ゆれの関係にあるか否かを判定するための規則を記憶した判定規則記憶部132と、判定規則記憶部132により記憶された規則を適用する際に、上記した類似度と比較されるしきい値などを記憶したしきい値記憶部130と、二つのカタカナ文字列が互いに表記ゆれの関係にないと判定する際に使用する一般的な(電子的に読取可能な)辞書134と、編集距離類似度算出部112、文字列距離類似度算出部116、および文脈類似度算出部118からそれぞれ類似度を受け、しきい値記憶部130および辞書134を参照して判定規則記憶部132に記憶された規則をこれら類似度に適用することにより、二つのカタカナ文字列が互いに表記ゆれの関係にあるか否かを判定し、その結果を表記ゆれ記憶部34に出力するための判定規則適用部136とを含む。
【0057】
図8に、判定規則記憶部132に記憶される判定規則の一例を示す。図8を参照して、カタカナ文字列の長さと、出現頻度と、編集距離類似度simedと、文字列距離類似度simsと、文脈類似度simcとについて、それぞれしきい値THlen、THfreq、THed1およびTHed2、THst1およびTHst2、ならびにTHcos1およびTHcos2との間で判定規則記憶部132に記憶された各規則に適合するか否かの判定が行なわれる。そして、適合する規則があればその規則にしたがって判定される。
【0058】
例えば、図8に示す例でいえば、カタカナ文字列の長さがしきい値THlenより大きく、対象の二つのカタカナ文字列の間の編集距離類似度がしきい値THed1より大きく、文字列距離類似度がしきい値THst1より大きいときには、判定規則記憶部132の第1行めのエントリの条件が充足される。したがってこの規則の判定(「異表記」)にしたがい、二つのカタカナ文字列は互いに異表記(表記のゆれ)の関係にあると判定される。
【0059】
またカタカナ文字列の長さがしきい値THlen以下であり、頻度がしきい値THfreqより大きく、文脈類似度simcがしきい値THcos1より小さいときには、2番目のエントリの条件が充足される。したがってこの規則の判定(「別語」)にしたがい、二つのカタカナ文字列は互いに別の語であると判定される。
【0060】
実際には、最初には第4行目に記載のように、比較対象となる二つのカタカナ文字列がともに図1に示す辞書134にあるか否かを判定し、双方のエントリが存在していれば別の語であると判定する。いずれか一方のエントリ、または双方のエントリとも辞書134にないと判定された後、図8に示す判定規則記憶部132に記載の各規則が適用される。
【0061】
また、図8に示す各しきい値および前述のペナルティPidの値については、予め適切なコーパスを利用して実験により定めておく必要がある。本実施の形態では、出願人において作成したコーパスを用い、上記したのと同様の処理を行なって各類似度を算出する実験を繰返し、その結果F値が最も高くなるようなしきい値等の組を推定した。その値の例は、Pid=2.5、THlen=5、THst1=9.4、THfreq=3、THcos1=0.12、THcos2=0.02、THed1=THed2=0.65、およびTHst2=0.89である。この値はコーパスにより変動する可能性があるが、おおむねこの近辺の値を使用すれば適切な結果が得られると思われる。これらしきい値などの値は予め図1に示すしきい値記憶部130に記憶されており、判定規則適用部136が規則の適用時に読込んで使用する。
【0062】
[動作]
表記ゆれ解消システム20は以下のように動作する。まず、判定規則記憶部132には図8に示す判定規則記憶部132を、しきい値記憶部130にはしきい値を、それぞれ格納しておく。辞書134としては、電子的に読取可能な辞書を準備しておく。
【0063】
入力コーパス30を依存構造解析部70に与える。依存構造解析部70は、入力コーパス30中の各文について図2に示すような依存構造を解析し、依存構造に関する情報を各文に付加した依存構造解析済みコーパス72を作成する。カタカナ文字列抽出部74は、依存構造解析済みコーパス72に格納された各文からカタカナ文字列をその出現個所とともに抽出し、カタカナ文字列記憶部76に記憶させる。
【0064】
文脈ベクトル作成部90は、カタカナ文字列記憶部76に記憶されたカタカナ文字列のリストをもとに、各カタカナ文字列に対し依存構造解析済みコーパス72を参照して文脈ベクトルを作成・更新し、文脈ベクトル記憶部92に格納させる。
【0065】
カタカナ文字列選択部110は、カタカナ文字列記憶部76に記憶されたカタカナ文字列を所定の順番(例えばアイウエオ順)にしたがって一つ読出し、編集距離類似度算出部112、文字列距離類似度算出部116、および文脈類似度算出部118に与える。さらにカタカナ文字列選択部110は、カタカナ文字列記憶部76から所定の順番でカタカナ文字列を順に読出すように比較対象カタカナ文字列選択部111に指示する。比較対象カタカナ文字列選択部111は、この指示に応答して、カタカナ文字列記憶部76から比較対象のカタカナ文字列を一つ読出し、編集距離類似度算出部112、文字列距離類似度算出部116、および文脈類似度算出部118に与える。
【0066】
編集距離類似度算出部112は、カタカナ文字列選択部110から与えられたカタカナ文字列と、比較対象カタカナ文字列選択部111から与えられた比較対象のカタカナ文字列との間で編集距離類似度simedを式(1)にしたがって計算し、判定規則適用部136に与える。文字列距離類似度算出部116は、比較対象カタカナ文字列選択部111から与えられたカタカナ文字列のローマ字表記文字列と、カタカナ文字列選択部110から与えられたカタカナ文字列のローマ字表記文字列との間の文字列距離類似度simsを、t(i,j)テーブル114を参照しながら式(2)〜(4)にしたがって算出し、判定規則適用部136に与える。文脈類似度算出部118は、カタカナ文字列選択部110から与えられたカタカナ文字列の文脈ベクトルと、比較対象カタカナ文字列選択部111から与えられたカタカナ文字列の文脈ベクトルとを文脈ベクトル記憶部92から読出し、式(5)(6)にしたがってそれらの間の文脈類似度simcを算出し判定規則適用部136に与える。
【0067】
判定規則適用部136は、編集距離類似度算出部112、文字列距離類似度算出部116、および文脈類似度算出部118からそれぞれ与えられた類似度simed、sims、およびsimcと、カタカナ文字列選択部110が選択したカタカナ文字列の長さと、そのカタカナ文字列の出現頻度とを用い、判定規則記憶部132に記憶された判定規則、しきい値記憶部130に記憶された各しきい値など、および辞書134を用いて、カタカナ文字列選択部110により選択されたカタカナ文字列と、比較対象カタカナ文字列選択部111により選択された比較対象のカタカナ文字列とが表記ゆれの関係にあるか否かを判定する。
【0068】
より具体的には、判定規則適用部136はまず、カタカナ文字列選択部110により与えられたカタカナ文字列と、比較対象カタカナ文字列選択部111から与えられた比較対象のカタカナ文字列とが、辞書134において別々のエントリとなっているか否かを判定する。別々のエントリとなっていれば、判定規則適用部136は両者は別語であると判定する。別々のエントリとなっていない場合には、図8に示す判定規則と、図7に示すしきい値などとを用い、表記ゆれか否かの判定を行なう。
【0069】
もし二つのカタカナ文字列が表記ゆれであれば、判定規則適用部136は表記ゆれ記憶部34に対しこの二つのカタカナ文字列の組を出力する。
【0070】
判定が終わると判定規則適用部136は比較対象カタカナ文字列選択部111に対し次の比較対象のカタカナ文字列を読出すように指示する。比較対象カタカナ文字列選択部111は、この指示に応答して、カタカナ文字列記憶部76から次の比較対象カタカナ文字列を選択し、編集距離類似度算出部112、文字列距離類似度算出部116、文脈類似度算出部118、および判定規則適用部136に与える。編集距離類似度算出部112、文字列距離類似度算出部116、文脈類似度算出部118および判定規則適用部136は、上述した処理をこの新たな比較対象カタカナ文字列に対して実行する。
【0071】
こうして、比較対象カタカナ文字列選択部111がカタカナ文字列記憶部76に格納されている全てのカタカナ文字列を読出し、それらに対する判定規則適用部136の判定が終了すると、比較対象カタカナ文字列選択部111はカタカナ文字列選択部110に対し次のカタカナ文字列の処理を開始するように指示を送る。カタカナ文字列選択部110は、この指示に応答して、カタカナ文字列記憶部76から次のカタカナ文字列を読出し、編集距離類似度算出部112、文字列距離類似度算出部116、文脈類似度算出部118、および判定規則適用部136に与える。
【0072】
こうして、カタカナ文字列選択部110がカタカナ文字列記憶部76に格納された全てのカタカナ文字列を読出し、それらカタカナ文字列の全てに対してカタカナ文字列記憶部76に記憶された他のカタカナ文字列との間の表記ゆれ判定が終了すると、カタカナ表記検査装置32は入力コーパス30に対する表記ゆれ記憶部34の出力処理を終了する。
【0073】
表記更新部36は、入力コーパス30の各文を読出し、表記ゆれ記憶部34に記憶されている表記ゆれレポートにしたがい、表記ゆれを解消するように各文のカタカナ文字列を書き換え、出力コーパス38を出力する。カタカナ文字列の書換えは、例えば表記ゆれを構成するカタカナ文字列のうちで最も頻度が高かったもので他の表記ゆれのカタカナ文字列を書換えるようにすればよい。
【0074】
このようにして得られた出力コーパス38は、互いに表記ゆれの関係にあるようなカタカナ文字列を含まない。この出力コーパス38中のテキストをコンピュータで処理するにあたり、カタカナ文字列の表記ゆれに起因する不都合の発生が防止できる。
【0075】
なお、上記表記ゆれ解消システム20およびカタカナ表記検査装置32を、コンピュータハードウェアおよびその上で実行される、上記説明に鑑みて適切に作成されたコンピュータプログラムにより実現できることはいうまでもない。
【0076】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味および範囲内でのすべての変更を含む。
【図面の簡単な説明】
【0077】
【図1】本発明の一実施の形態に係る表記ゆれ解消システム20のブロック図である。
【図2】文の依存関係を説明するための模式図である。
【図3】カタカナ文字列記憶部76の構成を示す模式図である。
【図4】文脈ベクトル記憶部92の構成および文脈ベクトルの構成を示す模式図である。
【図5】編集距離の算出方法を模式的に示す図である。
【図6】文字列距離の算出方法を模式的に示す図である。
【図7】文字列距離の算出に用いるt(i,j)テーブル114の模式図である。
【図8】判定規則記憶部132に記憶された判定規則の例を示す図である。
【符号の説明】
【0078】
20 表記ゆれ解消システム、30 入力コーパス、32 カタカナ表記検査装置、34 表記ゆれ記憶部、36 表記更新部、38 出力コーパス、50 カタカナ文字列抽出処理部、52 文脈ベクトル準備処理部、54 判定情報作成部、70 依存構造解析部、72 依存構造解析済みコーパス、74 カタカナ文字列抽出部、76 カタカナ文字列記憶部、90 文脈ベクトル作成部、92 文脈ベクトル記憶部、110 カタカナ文字列選択部、112 編集距離類似度算出部、114 t(i,j)テーブル、116 文字列距離類似度算出部、118 文脈類似度算出部、130 しきい値記憶部、132 判定規則記憶部、134 辞書、136 判定規則適用部

【特許請求の範囲】
【請求項1】
コーパス中のカタカナ文字列に対する表記ゆれの検出方法であって、
コーパス中からカタカナ文字列を抽出し第1の記憶装置に格納するステップと、
前記第1の記憶装置に記憶されたカタカナ文字列の任意の二つの組合せに対し、当該二つのカタカナ文字列および対応するローマ字表記文字列を用い、予め定義された複数通りの類似度を算出するステップと、
前記複数通りの類似度を組合わせた判定規則により、前記第1の記憶装置に記憶されたカタカナ文字列の任意の二つが互いに表記ゆれの関係にあるか否かを判定するステップとを含む、表記ゆれの検出方法。
【請求項2】
前記類似度を算出するステップは、
前記第1の記憶装置に記憶された任意のあるカタカナ文字列に対し、前記第1の記憶装置に記憶された任意の他のカタカナ文字列との間の編集距離に基づいて定義される第1の類似度を算出するステップと、
前記あるカタカナ文字列のローマ字表記に対し、前記他のカタカナ文字列のローマ字表記との間の文字列距離に基づいて定義される第2の類似度を算出するステップとを含み、
前記判定するステップは、前記第1の類似度および前記第2の類似度が所定の判定式を充足するか否かにしたがって、前記あるカタカナ文字列と前記他のカタカナ文字列とが表記ゆれの関係にあるか否かを判定するステップを含む、請求項1に記載の表記ゆれの検出方法。
【請求項3】
前記類似度を算出するステップはさらに、
前記第1の記憶装置に格納されたカタカナ文字列に対し、前記コーパス内における当該カタカナ文字列が出現した個所における文脈を表す文脈ベクトルを作成し、第2の記憶装置に格納するステップと、
前記あるカタカナ文字列に対して前記第2の記憶装置に記憶された文脈ベクトルと、前記他のカタカナ文字列に対して前記第2の記憶装置に記憶された文脈ベクトルとの間に定義される第3の類似度を算出するステップとを含み、
前記判定するステップは、前記第1の類似度、前記第2の類似度、および前記第3の類似度を用いて前記あるベクトルと前記他のベクトルとが互いに表記ゆれの関係にあるか否かを判定し判定結果を出力するステップを含む、請求項2に記載の表記ゆれの検出方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2006−53866(P2006−53866A)
【公開日】平成18年2月23日(2006.2.23)
【国際特許分類】
【出願番号】特願2004−236640(P2004−236640)
【出願日】平成16年8月16日(2004.8.16)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成16年4月1日付け、支出負担行為担当官総務省大臣官房会計課企画官、研究テーマ「ネットワーク・ヒューマン・インターフェースの総合的な研究開発(携帯電話等を用いた多言語自動翻訳システムの研究開発)」に関する委託研究、産業活力再生特別措置法第30条の適用を受ける特許出願
【出願人】(393031586)株式会社国際電気通信基礎技術研究所 (905)
【Fターム(参考)】