[第1の実施形態]
次に、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本実施形態による読みがな割当装置の機能構成を示すブロック図である。同図において、符号1は読みがな割当装置である。図示するように、読みがな割当装置1は、対象文字列入力部31と、対象文字列分割部32と、文字・読みがな対応推定部33と、対訳コーパス格納部34と、機械学習部35と、学習結果格納部36と、文字・読みがな対応候補格納部37と、読みがな入力部38と、読みがな格納部39と、組合せ抽出部40と、未対応位置検出部41と、未対応解消部42と、出力部43とを含んで構成される。なお、これらの各部は、電子回路を用いて実現可能である。また、対訳コーパス格納部34や学習結果格納部36や文字・読みがな対応候補格納部37や読みがな格納部39は、半導体メモリや磁気ディスク装置等の情報記憶手段を用いて実現される。
対象文字列入力部31は、読みがな付与の対象となる文字列(以下では「対象文字列」と呼ぶ)を取得する。対象文字列入力部31は、利用者からのキーボード入力を受け付けたり、記憶媒体から読み取ったりなどといった手段により、外部から対象文字列を取得する。なお、対象文字列は、例えば固有名詞等の単語である。
対象文字列分割部32は、対象文字列入力部31が取得した対象文字列を、1つ1つの文字に分割する。
文字・読みがな対応推定部33は、学習結果格納部36を参照しながら、統計的翻訳手法を援用して、対象文字列分割部32によって分割された個々の文字に対応する読みがなを推定する。学習結果格納部36には、対象文字列に含まれ得る文字と、文字ごとの単数または複数の読みがなと、文字と読みがなの組合せに対応する尤度の数値とが記憶されている。学習結果格納部36のデータの詳細およびその作成方法については、後述する。文字・読みがな対応推定部33による推定処理の結果として、対象文字列に含まれる各文字の読みがなと、文字と読みがなとのそれぞれの組合せに対応する尤度値が、文字・読みがな対応候補格納部37に書き込まれる。
対訳コーパス格納部34は、文字とその読みがなとの関係を表わす大量の情報を保持している。この対訳コーパスは、現実に存在する様々な文書における文字とその読みがなとの対応関係を統計的に反映したものである。なお、例えば、処理対象の単語を地名のみに限定する場合には地名のみに基づくデータを対訳コーパス格納部34に格納しても良い。また、処理対象を人名のみに限定する場合には人名のみに基づくデータを対訳コーパス格納部34に格納しても良い。つまり、問題の領域に応じた対訳コーパスを用いるようにしても良い。
機械学習部35は、対訳コーパス格納部34に含まれているデータを読み出し、機械学習処理により、文字とその読みがなとの統計的関係を分析する。そして、機械学習部35は、文字と、その文字に対応する読みがなと、文字と読みがなとの対応ついての尤度を算出し、その算出結果を学習結果格納部36に書き込む。
学習結果格納部36は、文字と、その文字に対応する読みがなと、文字と読みがなとの対応ついての尤度を記憶する。ここでの尤度は、ある文字を前提としたときの、その文字に対応するある読みがなの出現確率値の対数である。言い換えれば、学習結果格納部36は、文字と、その文字の既知の読みがなと、その読み方がされる度合い(尤度)の情報を格納する。学習結果格納部36の詳細については、後で図面を参照しながら詳述する。
文字・読みがな対応候補格納部37は、対象文字列に含まれる個々の文字と、各文字に対応し得る読みがなと、文字と読みがなとの組合せに対応する尤度値のデータを記憶する。このデータは、前述の通り、文字・読みがな対応推定部33によって書き込まれる。
読みがな入力部38は、対象文字列入力部31によって取得された対象文字列(単語等)に対応する読みがなの文字列を取得する。読みがな入力部38が取得する読みがなは、対象文字列に対応する読みがなの全体であり、ひらがなやカタカナなどで表記され、分割されていない。例えば、対象文字列入力部31が取得した対象文字列が「糸魚川」であるとき、読みがな入力部38が取得する読みがなの文字列は「イトイガワ」である。なお、読みがな入力部38は、利用者からのキーボード入力を受け付けたり、記憶媒体から読み取ったりなどといった手段で読みがなを取得する。対象文字列入力部31によって取得された単語に基づいて、読みがな入力部38が、例えばMeCab(Yet Another Part-of-Speech and Morphological Analyzer)等の形態素解析器から読みがなを取得したり、インターネットを介して辞典情報を提供するウェブサーバーから読みがなを取得するようにしたりしても良い。そして、読みがな入力部38は、取得した読みがなを読みがな格納部39に書き込む。
読みがな格納部39は、読みがな入力部38が取得した読みがなの文字列を記憶する。
組合せ抽出部40は、文字・読みがな対応候補格納部37と読みがな格納部39とからデータを読み出し、対象文字列に含まれる各文字と、読みがなの文字列に含まれる文字との対応付けを試みる。このとき、組合せ抽出部40は、文字・読みがな対応候補格納部37に含まれる読みがなの候補と、読みがな格納部39から読み出した読みがなとのマッチングを行なう。そして、組合せ抽出部40は、文字・読みがな対応候補格納部37から読み出した読みがなごとの尤度に基づいて、文字列全体での尤度が最大となるような組合せを導出する。なお、組合せ抽出部40の処理のためには、例えば、DP(dynamic programming)マッチングの手法を用いる。DPマッチング自体は、既存の技術である。組合せ抽出部によるマッチングの詳細については、後述する。
未対応位置検出部41は、組合せ抽出部40の処理の結果として、対象文字列と読みがなとの間で対応付けされていない箇所の位置を検出する。未対応位置検出部41による処理の対象は、対象文字列と読みがなの両方である。前記の組合せ抽出部40による処理の結果として、対象文字列の一部の文字が読みがなに対応付けされない状態で残っている可能性もある。また、読みがなの文字列のうちの一部の文字が対象文字列に対応付けされない状態で残っている可能性もある。このような未対応の部分を未対応箇所と呼ぶ。未対応箇所は、後の処理によって解消される。
未対応解消部42は、組合せ抽出部40によって出力された、対象文字列と読みがなとの間の対応関係のうち、未対応である箇所を解消する処理を行なう。つまり、未対応解消部42は、対象文字列中において読みがなに対応付けられていない文字を読みがなに対応付けるように、対応関係を変更する処理を行なう。また、未対応解消部42は、読みがなの文字列中の文字のうち対象文字列に対応付けられていない文字を対象文字列に対応付けるように、対応関係を変更する処理を行なう。このような解消のために未対応解消部42は、予め定められたルールに基づく手順の処理を行なう。また、未対応解消部42は、学習結果格納部36のデータを読み出すことができるように構成されており、未対応箇所の解消のために、学習結果格納部36に格納されている尤度のデータを利用する。
出力部43は、未対応解消部42によって未対応箇所が解消された後の、対象文字列と読みがなとの対応関係を出力する。
図2は、学習結果格納部36が記憶するデータの構成を示す概略図である。図示するように、学習結果格納部36が記憶するデータは、文字、読みがな、尤度の項目を含み、これらの項目の相互の関係を表わす。ここで、文字は、対象文字列に含まれる文字である。読みがなは、その文字に対応する読みがなである。1つの文字は、1種類または複数の読みがなに対応する。尤度は、ある文字に対して、所定の読みがなが対応する確からしさ(尤もらしさ)を表わす数値のデータである。なお、本実施形態における尤度は、文字と読みがなとの組合せに対する条件付確率の対数で表わされる(対数尤度)。その確率値は0以上且つ1以下である。したがって、尤度の値は、負数である。また、尤もらしさが高いほど、尤度の数値は大きい。図示するデータ例において、文字「酒」には、「サケ」と「サカ」という2種類の読みがなが対応する。そして、文字「酒」を前提としたときに、読みがなが「サケ」である尤度は「−3.22」であり、読みがなが「サカ」である尤度は「−3.69」である。同様に、文字「愛」に対応する読みがなは、「アイ」、「マナ」、「ア」の3種類であり、それらの尤度はそれぞれ、「−2.99」、「−3.82」、「−6.13」である。つまり、学習結果格納部36は、対象文字列に含まれる文字についての既知の読みがなと当該文字に関する前記の既知の読みがなごとの尤度の情報を保持する。なお、学習結果格納部36は、例えばリレーショナルデータベースやオブジェクト指向データベースを用いて、データを格納する。
ここで、組合せ抽出部40による、対象文字列と読みがなとの対応付けの詳細について説明する。既に述べたように、読みがなを振られる側の文字列を対象文字列と呼ぶ。対象文字列に含まれる文字の典型は漢字である。また読みがなに含まれる文字は、ひらがなや、カタカナや、ローマ字等の、表音文字によるものである。
以下の説明において、対象文字列をc(1)c(2)・・・・・・c(Lc)とする。また、読みがなの文字列をd(1)d(2)・・・・・・d(Ld)とする。ここで、Lcは対象文字列の長さであり、Ldは読みがなの文字列の長さである。c(i)は、対象文字列に含まれる第i番目の文字である(1≦i≦Lc)。また、d(k)は、読みがなの文字列に含まれる第k番目の文字である(1≦k≦Ld)。そして、組合せ抽出部40は、例えばDPマッチングの手法を用いて、以下に述べる条件の制約下において、対象文字列と読みがなとの間の対応関係の尤度が最大になるような解を求める。なお、対数尤度を用いているため、文字列内の各部分における尤度値をすべて加算することにより、文字列全体の尤度が得られる。
その制約条件とは即ち、第1に、対象文字列と読みがなとの間で文字の順序が維持されることである。この第1の制約条件は、言い換えれば、対象文字列に含まれる文字c(i)が読みがなに含まれる文字d(k)に対応し、対象文字列に含まれる文字c(j)が読みがなに含まれる文字d(h)に対応するとき、i<jならばk<hであるということである。また制約条件の第2は、対象文字列におけるある文字に対応付けられる読みがなの文字は連続することである。この第2の制約条件は、言い換えれば、対象文字列に含まれる文字c(i)が読みがなの文字d(k)およびd(k+m−1)に対応付けられるとき(但し、m≧2)、読みがなの文字d(k)d(k+1)・・・d(k+m−1)のすべては上記の文字c(i)に対応付けられているということである。また、制約条件の第3は、読みがなの文字列内の任意の文字d(k)は、対象文字列内の最大で1個の文字に対応付けられる。一方で、対象文字列内の任意の文字c(i)は、読みがなの文字列内の1個または複数の文字に対応付けられ得る。
なお、前にも述べたとおり、組合せ抽出部40による処理の結果の時点では、対象文字列内の一部の文字が読みがなに対応付けられていなくても良く、また、読みがなの文字列内の一部の文字が対象文字列に対応付けられていなくても良い。学習結果格納部36から得られる読みがなと読みがな入力部38が取得する読みがなとの間で不一致がある(マッチングができない)場合に、このような未対応箇所が生じる。
つまり、まとめると、組合せ抽出部40は、入力された対象文字列と入力された読みがなの文字列とを取得し、対象文字列に含まれる文字についての既知の読みがなと当該文字に関する前記既知の読みがなごとの尤度の情報(この情報は、文字・読みがな対応候補格納部37に格納されている。また、必要に応じて学習結果格納部36からも得られる)を参照することにより、前記尤度に基づいて、対象文字列に含まれる文字の少なくとも一部と読みがなの文字列に含まれる文字の少なくとも一部との間の対応関係を決定する。そして、組合せ抽出部40は、決定した対応関係の情報を未対応解消部42に渡す。
組合せ抽出部40による処理の実例を簡単に説明する。入力される対象文字列が「愛菜美」で、入力される読みがなが「マナミ」のときの場合、学習結果格納部36から読み出した対応関係に基づき、次の2通りのマッチングが可能である。その第1は、「愛」が「マナ」に対応し、「菜」に対応する読みがながなく、「美」が「ミ」に対応するパターンである。また、その第2は、「愛」に対応する読みがながなく、「菜」に「ナ」が対応し、「美」が「ミ」に対応するパターンである。この第2のパターンでは、読みがなの先頭の文字「マ」は、対象文字列の文字に対応しない。この2種類の対応関係のうち、組み合わせ抽出部は、両パターンそれぞれにおける文字列全体の尤度を算出し、尤度値が高いほうの第1のパターンをマッチング結果として出力する。
図3、図4、図5、図6のそれぞれは、組合せ抽出部40によって求められた、対象文字列と読みがなとの対応関係を示す概略図である。これらの図においては、対象文字列に含まれる各文字を四角の記号で示し、読みがなに含まれる各文字を丸印の記号で示す。そして、対象文字列に含まれる文字と読みがなに含まれる文字との間で対応付くものを、線で結んで示す。これらの対応関係のそれぞれにおいては、対象文字列と読みがなとの間の未対応箇所が存在しており、未対応箇所のパターンが複数存在する。未対応箇所における文字には、線による結びつきが存在しない。図3、図4、図5に示す未対応箇所のパターンを便宜上、それぞれ、パターンA、B、Cと呼ぶ。また、図6が示す対応関係は、パターンA、B、およびCをすべて含む例である。以下では、これら各図について個別に説明する。
図3は、対象文字列と読みがなとの対応関係が「パターンA」の未対応箇所を含む例を示す。同図において、対象文字列は4文字で構成され、読みがなは8文字で構成される。そして、対象文字列における第1の文字は、読みがなにおける第1および第2の文字に対応する。また、対象文字列における第2の文字は、読みがなにおける第3および第4の文字に対応する。対象文字列における第4の文字は、読みがなにおける第7および第8の文字に対応する。そして、対象文字列における第3の文字は未対応である。また、読みがなにおける第5および第6の文字は未対応である。このように、パターンAでは、対象文字列と読みがなの両方において、未対応の文字が存在し、且つ未対応箇所の位置は一致する。未対応箇所の位置が一致するということは、対象文字列における未対応箇所の前の(図においては左の)部分と、読みがなにおける未対応箇所の前の(同じく左の)部分とが対応付いており、且つ、対象文字列における未対応箇所の後の(図においては右の)部分と、読みがなにおける未対応箇所の後の(同じく右の)部分とが対応付いている状態である。但し、未対応箇所の前に文字がない場合(つまり未対応箇所が文字列の先頭である場合)や、未対応箇所の後に文字がない場合(つまり未対応箇所が文字列の末尾である場合)には、それらの前または後は、対応付いているものとして良い。
図4は、対象文字列と読みがなとの対応関係が「パターンB」の未対応箇所を含む例を示す。同図において、対象文字列は3文字で構成され、読みがなは7文字で構成される。そして、対象文字列における第1の文字が読みがなにおける第1および第2の文字に対応する。また、対象文字列における第2の文字が読みがなにおける第3および第4の文字に対応する。また、対象文字列における第3の文字が読みがなにおける第6および第7の文字に対応する。そして、読みがなにおける第5の文字が未対応である。対象文字列の側には、未対応の文字が存在しない。このように、パターンBでは、読みがなの側だけに未対応箇所が存在し、対象文字列の側には未対応箇所が存在しない。
図5は、対象文字列と読みがなとの対応関係が「パターンC」の未対応箇所を含む例を示す。同図において、対象文字列は4文字で構成され、読みがなは8文字で構成される。そして、対象文字列における第1の文字が読みがなにおける第1および第2の文字に対応する。また、対象文字列における第2の文字が読みがなにおける第3から第5までの文字に対応する。また、対象文字列における第4の文字が読みがなにおける第6から第8までの文字に対応する。そして、対象文字列における第3の文字が未対応である。読みがなの側には、未対応の文字が存在しない。このように、パターンCでは、対象文字列の側だけに未対応箇所が存在し、読みがなの側には未対応箇所が存在しない。
図6は、一対の対象文字列と読みがなにおいて、複数の未対応箇所が存在する例を示す。この例は、パターンA,B,Cの3種類の未対応箇所を含んでいる。図示するように、この例では、対象文字列は6文字で構成され、読みがなは11文字で構成される。両者間の対応関係は、結んだ線で示すとおりである。
[パターンA]そして、対象文字列における第2の文字が未対応箇所であり、また読みがなにおける第3および第4の文字が未対応箇所である。これらの未対応箇所は、前述した「パターンA」に該当する。つまり、これらの未対応箇所の前は、つまり対象文字列における第1の文字と読みがなにおける第1および第2の文字とは、相互に対応付けられている。また、これらの未対応箇所の後は、つまり対象文字列における第3の文字と読みがなにおける第5の文字とは、相互に対応付けられている。
[パターンB]また、読みがなの第6の文字は、対象文字列中の文字と対応付いていない未対応箇所である。この未対応箇所は、前述した「パターンB」に該当する。
[パターンC]また、対象文字列の第5の文字は、読みがな中の文字と対応付いていない未対応箇所である。この未対応箇所は、前述した「パターンC」に該当する。
図6に例示したように、一般に、組合せ抽出部40の処理によって対象文字列と読みがなとの対応付けが行われた結果、対象文字列および読みがなのそれぞれにおいて任意の数(0である場合を含む)の未対応箇所が存在し得る。そして、それらの未対応箇所は、前述したパターンA,B,Cのいずれかに該当する。
次に、未対応箇所を解消するための処理の詳細について説明する。
図7、図8、図9は、未対応解消部42による処理の手順を示すフローチャートである。図7と図8、および図7と図9は、それぞれ、フローチャートの結合子で接続されている。以下、このフローチャートに沿って説明する。
まずステップS1において、未対応解消部42は、与えられた一対の対象文字列と読みがなに、未対応箇所があるか否かを判断する。そして、未対応箇所が1個以上あれば(ステップS1:YES)、次のステップS2に進む。未対応箇所がない場合(ステップS1:NO)には、ステップS14に進む。
次にステップS2に進んだ場合、未対応解消部42は、対象文字列と読みがなの両方に未対応箇所が存在するか否かを判断する。そして、両方に存在する場合(ステップS2:YES)には、次のステップS3に進む。両方には存在しない場合、つまり対象文字列と読みがなのいずれか一方のみに未対応箇所が存在する場合(ステップS2:NO)には、ステップS5に進む。
次にステップS3に進んだ場合、未対応解消部42は、対象文字列と読みがなの両方に存在する未対応箇所のうちその場所が一致するものがあるか否かを判断する。未対応箇所の場所の一致とは、対象文字列における未対応箇所の前の部分と読みがなにおける未対応箇所の前の部分とが相互に対応付いており、且つ、対象文字列における未対応箇所の後の部分と読みがなにおける未対応箇所の後の部分とが相互に対応付いている状態を言う。なおこのとき、対象文字列における未対応箇所が先頭部分であり、且つ、読みがなにおける未対応箇所も先頭部分である場合には、前記の「前の部分」は相互に対応付いているものとみなす。また、対象文字列における未対応箇所が最後部分であり、且つ、読みがなにおける未対応箇所も最後部分である場合には、前記の「後の部分」は相互に対応付いているものとみなす。
対象文字列における未対応箇所の場所と読みがなにおける未対応箇所の場所が一致する場合(ステップS3:YES)には、次のステップS4に進む。対象文字列における未対応箇所と読みがなにおける未対応箇所との間で場所の一致するものがない場合(ステップS3:NO)には、ステップS5に進む。なお、対象文字列における未対応箇所と読みがなにおける未対応箇所との間で、場所が一致するものと一致しないものとがある場合には、場所が一致する対を解消するために、ステップS4に進む(ステップS3では、「YES」と判断する)。
次にステップS4に進んだ場合、未対応解消部42は、対象文字列における未対応箇所と読みがなにおける未対応箇所(ステップS3において、その場所が一致すると判断した一対の未対応箇所)を相互に対応付ける。これにより、未対応解消部42は、組合せ抽出部40の処理では対応付かなかった部分を相互に対応付けることとなる。つまり、未対応解消部42は、その未対応箇所を解消する。本ステップの処理が終了すると、他の未対応箇所があるか否かを判断するためにステップS1に戻る。
次にステップS5に進んだ場合(つまり、対象文字列側と読みがな側の両方で場所の一致する未対応箇所の対がなかった場合)、このステップにおいて未対応解消部42は、対象文字列と読みがなの、どちらの未対応箇所を解消するかを決めるための判断を行なう。つまり、未対応解消部42は、対象文字列の未対応箇所が余っているのか、読みがなの対象文字列が余っているのかを判定する。ここで、もし対象文字列と読みがなの両方の未対応箇所がある場合も、上述したステップS3の処理でそれらの未対応箇所は一致しないことが判定されている。したがって、対象文字列と読みがなの両方の未対応箇所がある場合には、それらのいずれかの未対応箇所について、本ステップにおける判定を行なう。そして、未対応箇所が対象文字列における未対応箇所である場合(ステップS5:YES)には、ステップS6に進む。また、未対応箇所が読みがなにおける未対応箇所である場合(ステップS5:NO)には、ステップS10に進む。
ステップS1からステップS14に進んだ場合、ステップS14において、出力部43が未対応箇所を解消した後の対象文字列と読みがなとの対応関係を出力する。
そして、ステップS14の後、このフローチャート全体の処理を終了する。
図8のステップS6に進んだ場合、未対応解消部42は、以下の処理によって対象文字列における未対応箇所を解消する。
まずステップS6において、未対応解消部42は、対象文字列内の未対応箇所の前と後における、対象文字列と読みがなとの対応の尤度を比較する。そして、未対応箇所の前または後の対応付けのうち、その尤度が低い方の読みがなの文字の一部を当該未対応箇所に対応付けることを決定する。つまり、未対応箇所の前の対応付けの尤度の方が後のそれよりも低い場合には、その前の部分の読みがなの一部を、当該未対応箇所に新たに対応付けし直す。逆に、未対応箇所の後の対応付けの尤度の方が前のそれよりも低い場合には、その後の部分の読みがなの一部を、当該未対応箇所に新たに対応付けし直す。
つまり、未対応解消部42は、尤度の低い方の読みがなを分割することによって新たな対応付けを行なう。尤度の低い方の対応付けにおいて、対象文字列側の文字(1文字)に対して、読みがなの文字が2文字の場合には、分割のしかたとしては、1文字ずつに分割する方法のみが可能である。読みがなの文字が3文字の場合には、前の1文字と後の2文字に分割するか、前の2文字と後の1文字に分割するかの、2通りの分割のしかたが可能である。読みがなの文字が4文字の場合、前の1文字と後の3文字に分割するか、2文字ずつに分割するか、前の3文字と後の1文字に分割するかの、3通りの分割のしかたが可能である。読みがなの文字が5文字以上の場合も同様である。即ち、対象文字列側の文字(1文字)に対して、n文字(n>1)の読みがなが対応付いている場合、(n−1)通りの分割のしかたが可能である。そして、未対応解消部42は、新たな対応付けを行う際、上記のようなすべての分割のしかたを新たな対応付けのための候補とする。なお、対象文字列側の文字(1文字)に対して読みがなも1文字が対応している場合には、未対応解消部42は、これを分割して未対応箇所に割り当て直すことはできない。そのために、未対応解消部42は、次のステップS7の判定を行なう。
ステップS7において、未対応解消部42は、上で特定した、尤度が低い方(前の部分または後ろの部分)の対応付けの読みがなの文字数が2文字以上であるか否かを判定する。そして、2文字以上である場合(ステップS7:YES)には、次のステップS8に進む。また、2文字以上でない場合(ステップS7:NO)には、ステップS9に進む。
次にステップS8に進んだ場合、未対応解消部42は、対象文字列側の未対応箇所への新たな読みがなの対応付けが、既知の対応であるか否かを判断する。ここで、既知の対応であるか否かを判断するためには、未対応解消部42は、前述の学習結果格納部36にアクセスし、学習結果格納部36にその対応関係が存在しているか否かを判定する。そしてこのとき、未対応解消部42は、元の読みがなのすべての分割のしかたについて、本ステップにおける判定を行なう。未対応箇所への新たな対応付け(複数の対応付けの候補がある場合にはそのいずれか)が既知であった場合、つまり、学習結果格納部36に格納されている対応付けであった場合(ステップS8:YES)には、その対応付けを採用する。これにより、未対応解消部42は、組合せ抽出部40の処理では対応付かなかった対象文字列側の未対応箇所を解消する。そして、他の未対応箇所があるか否かを判断するためにステップS1(図7)に戻る。逆に、未対応箇所への新たな対応付け(複数の対応付けの候補がある場合にはそのいずれも)が既知ではなかった場合、つまり、学習結果格納部36に格納されていない対応付けであった場合(ステップS8:NO)には、ステップS9に進む。
ステップS9に進んだ場合、つまり、ステップS7あるいはステップS8のいずれかで「NO」と判定されたには、未対応解消部42は、当該未対応箇所への読みがなの対応付けを中止する。つまり、対象文字列側の未対応箇所の文字のみに読みがなを付与するのではなく、当該未対応箇所の文字と、ステップS6で判定した対応付け尤度が低い側の文字(対象文字列中の文字)とを併せたものに対して、読みがなを付与する。そして、本ステップの処理が終了すると、他の未対応箇所があるか否かを判断するためにステップS1(図7)に戻る。
図9のステップS10に進んだ場合、未対応解消部42は、以下の処理によって読みがなにおける未対応箇所を解消する。
まずステップS10において、未対応解消部42は、読みがな内の未対応箇所の前と後における、対象文字列と読みがなとの対応の尤度を比較する。そして、未対応箇所の前または後の対応付けのうち、その尤度が低い方の読みがなに、当該未対応箇所の余っている読みがなの文字を1文字追加し、これを新たな対応付けとする。つまり、未対応箇所の前の対応付けの尤度の方が後のそれよりも低い場合には、当該未対応箇所の読みがなのうちの最前の1文字を、その前の部分の読みがなに付加する。逆に、未対応箇所の後の対応付けの尤度の方が前のそれよりも低い場合には、当該未対応箇所の読みがなのうちの最後の1文字を、その後の部分の読みがなに付加する。
次にステップS11において、未対応解消部42は、ステップS10において1文字除去した後の未対応箇所の読みがなが、まだ残っているか否かを判定する。未対応箇所の読みがながまだ残っている場合(ステップS11:YES)には、次のステップS12に進む。未対応箇所の読みがながもう残っていない場合(ステップS11:NO)には、次の未対応を解消するためにステップS1(図7)に戻る。
次にステップS12に進んだ場合、直近におけるステップS10の処理の結果として得られた新たな対応付け(つまり、未対応箇所の前または後の部分において得られた新たな対応付け)が、既知の対応関係であるか否かを判定する。ここでも、新たな対応関係が既知の対応であるか否かを判断するためには、未対応解消部42は、前述のステップS8と同様に、学習結果格納部36にその対応関係が存在しているか否かを判定する。そして、新たな対応関係が既知の対応であった場合(ステップS12:YES)には、あらためて未対応箇所の前後のいずれのほうが対応付けの尤度が低いかを判定しなおすために、ステップS10に進む。逆に、新たな対応関係が既知の対応ではなかった場合(ステップS12:NO)には、直近における尤度の判定結果を維持したままさらに読みがなを割り当てなおすために、ステップS13へ進む。
次にステップS13に進んだ場合には、未対応解消部42は、未対応箇所の前または後のうちの、直近で読みがなの文字を追加した側(即ち、直近のステップS10での尤度判定において尤度が低かった側)の文字に、未対応の読みがなをさらに1文字追加する。そして、本ステップの処理が終了すると、ステップS11に進み、前述の処理を繰り返す。
ステップS10からS13までの処理を整理すると次の通りである。ステップS11における判断により、未対応箇所において残っている読みがなの文字がなくなるまで、未対応解消部42は、解消する処理を繰り返して行なう。また、ステップS12:YESの場合には、直近において読みがなに1文字を追加したことにより既知の対応関係が得られているため、ステップS10に戻ることによりあらためて未対応箇所の前後における尤度の比較を行なう。つまり、次の読みがなの文字の追加は、その尤度の比較の結果に基づいて、尤度の低い側に対して行なう。一方で、ステップS12:NOの場合には、直近における読みがなの1文字の追加によって既知の対応関係が得られていないため、新たな尤度比較を行なわずに、前回の尤度比較の結果に基づいて、次の読みがなの文字の追加を行なう。
以上の未対応解消部42による処理をまとめると、対象文字列内の未対応箇所と読みがなの文字列内の未対応箇所との位置が一致する場合(つまり、「パターンA」の未対応箇所)には、当該未対応箇所同士を相互に対応付けることによって未対応箇所を解消する。また、読みがなの文字列内の未対応箇所の位置に一致する対象文字列内の未対応箇所がない場合(つまり、「パターンB」の未対応箇所)には、学習結果格納部36から得られる尤度の情報に基づいて、当該読みがなの文字列内の未対応箇所の文字を、当該未対応箇所の前の部分または後の部分のいずれか一方であって、対象文字列内の文字との対応関係の尤度が低い側に移すように対応付けることによって未対応箇所を解消する。また、対象文字列内の未対応箇所の位置に一致する読みがなの文字列内の未対応箇所がない場合(つまり、「パターンC」の未対応箇所)には、学習結果格納部36から得られる尤度の情報に基づいて、当該対象文字列内の未対応箇所の前の部分または後ろの部分のいずれか一方であって、読みがなの文字列内の文字との対応関係の尤度が低い側に対応付いている読みがなの文字の一部を、当該未対応箇所に対応付けることによって未対応箇所を解消する。
「パターンB」について言い換えれば、対象文字列と読みがなとの間で、読みがなの側が余るパターンの未対応箇所では、未対応解消部42は、より尤度の高い対応付けが損なわれない方に、余っている読みがなの文字を移すことによってその未対応箇所を解消する。「パターンC」について言い換えれば、対象文字列と読みがなとの間で、読みがなの側の文字ガ不足するパターンの未対応箇所では、未対応解消部42は、より尤度の高い対応付けが損なわれない方に、対象文字列内の前後の文字から読みがなを移してくることによってその未対応箇所を解消する。
次に、未対応箇所を解消する処理の実例について説明する。
図10は、前述した「パターンA」の一例を示す。本例では、対象文字列が「糸魚川」(地名)であり、入力された読みがなが「イトイガワ」である。なお、対象文字列における「糸」という文字に対応し得る読みがな候補は「イト」でありその尤度は「−3.77」である。また、対象文字列における「魚」という文字に対応し得る読みがな候補は、「ウオ」(尤度:−4.62)と、「ギョ」(尤度:−4.89)と、「ナ」(尤度:-6.42)である。また、対象文字列における「川」という文字に対応し得る読みがな候補は、「カワ」(尤度:-1.65)と、「ガワ」(尤度:-3.56)と、「ワ」(尤度:−4.61)である。
そして、組合せ抽出部40による両者の対応付けの結果、「糸」と「イト」が対応し、「川」と「ガワ」が対応している。対象文字列における「魚」と、読みがなにおける「イ」が、未対応箇所である。そして、「魚」の前の「糸」と「イ」の前の「イト」が対応付いており、「魚」の後の「川」と「イ」の後の「ガワ」が対応付いているので、この例は「パターンA」に該当する。つまり、図7のステップS3においては、未対応解消部42は、未対応箇所が一致しているという判断をする。したがって、本例に関して、未対応解消部42は、図7のステップS4で説明したとおり、未対応箇所である「魚」と「イ」とを相互に関連付ける。つまり、未対応箇所が解消された後の読みがなの割当は、「糸」に対して「イト」、「魚」に対して「イ」、「川」に対して「ガワ」となる。出力部43は、この読みがな割当結果を出力する。出力部43は、一例として、「((糸,イト),(魚,イ),(川,ガワ))」という形式のデータを出力する。
図11は、前述した「パターンB」の一例を示す。本例では、対象文字列が「眞子」(苗字)であり、入力された読みがなが「マナコ」である。なお、対象文字列における「眞」という文字に対応し得る読みがな候補は、「マサ」(尤度:−3.53)と、「マ」(尤度:−4.18)と、「シン」(尤度:−5.29)である。また、対象文字列における「子」という文字に対応し得る読みがな候補は、「コ」(尤度:−2.53)と、「ウコ」(尤度:−3.92)と、「シ」(尤度:−5.64)である。
そして、組合せ抽出部40による両者の対応付けの結果、「眞」と「マ」が対応し、「子」と「コ」が対応している。読みがなにおける「ナ」が、未対応箇所である。対象文字列における未対応箇所はない。したがって、この例は「パターンB」に該当する。つまり、図7のステップS5においては、未対応解消部42は、未対応箇所で余っているのは読みがなであるという判断をする。したがって、本例に関して、未対応解消部42は、図9のステップS10〜S11に示した処理を実行する。そして、未対応箇所である「ナ」の前後の文字(読みがな側)について、「マ」−「眞」の対応に関する尤度は「−4.18」であり、「コ」−「子」の対応に関する尤度は「−2.53」である。したがって、この両者のうち、尤度が低いほうの文字「眞」に、未対応箇所の読みがな文字「ナ」を追加して対応付ける。本例では、読みがなの未対応箇所の文字は1文字だけであるため、図7のステップS11における判断結果は「NO」となり、未対応解消部42による処理は終了する。つまり、未対応箇所が解消された後の読みがなの割当は、「眞」に対して「マナ」、「子」に対して「コ」となる。出力部43は、この読みがな割当結果を出力する。出力部43は、一例として、「((眞,マナ),(子,コ))」という形式のデータを出力する。
図12は、前述した「パターンC」の一例を示す。本例では、対象文字列が「愛菜美」(人の名前、given name)であり、入力された読みがなが「マナミ」である。なお、対象文字列における「愛」という文字に対応し得る読みがな候補は、「アイ」(尤度:−2.99)と、「マナ」(尤度:−3.82)と、「ア」(尤度:−6.13)である。また、対象文字列における「菜」という文字に対応し得る読みがな候補は、「ナ」(尤度:−3.91)と、「サイ」(尤度:−5.03)と、「イナ」(尤度:−6.00)である。また、対象文字列における「美」に対応し得る読みがな候補は、「ミ」(尤度:−2.13)である。
そして、組合せ抽出部40による両者の対応付けの結果、「愛」と「マナ」が対応し、「美」と「ミ」が対応している。対象文字列における「菜」が未対応箇所である。読みがなにおける未対応箇所はない。したがって、この例は「パターンC」に該当する。つまり、図7のステップS5においては、未対応解消部42は、未対応箇所で余っているのは対象文字列であるという判断をする。したがって、本例に関して、未対応解消部42は、図8のステップS6およびその後の処理を実行する。そして、未対応箇所である「菜」の前後の文字(対象文字列側)について、「マナ」−「愛」の対応に関する尤度は「−3.82」であり、「ミ」−「美」の対応に関する尤度は「−2.13」である。したがって、この両者のうち、尤度が低いほうの読みがな「マナ」のうちの後側の「ナ」を、未対応箇所の文字「菜」に対応付ける(図7のステップS6)。この尤度が低い方の読みがな「マナ」は2文字以上であるため、図7のステップS7の判断結果は「YES」である。また、未対応箇所への新たな対応付けである「ナ」−「菜」は既知の対応であるため、つまり学習結果格納部36に格納されている対応関係であるため、図7のステップS8の判断結果も「YES」である。このように、未対応解消部42による処理は終了する。つまり、未対応箇所が解消された後の読みがなの割当は、「愛」に対して「マ」、「菜」に対して「ナ」、そして「美」に対して「ミ」となる。出力部43は、この読みがな割当結果を出力する。出力部43は、一例として、「((愛,マ),(菜,ナ),(美,ミ))」という形式のデータを出力する。
このように、本実施形態によれば、対象文字列に含まれる文字ごとに読みがなを割り当てることができる。また、対訳コーパス等から取得した既知の読み方に対応しない読み方が含まれていても、即ち組合せ抽出部40による対応付けの段階では未対応箇所が存在していても、未対応解消部42の処理により、それらの未対応箇所を解消することができる。
[第2の実施形態]
次に、本発明の第2の実施形態について説明する。なお、前述の実施形態と同様の機能ブロックについては同じ符号を付すとともに説明を省略する。以下では、本実施形態に特有の事項を中心に説明する。
図13は、第2の実施形態による読みがな割当装置の機能構成を示すブロック図である。図示するように、この読みがな割当装置2は、ペナルティー付与部51を備えている点が、前実施形態の構成と異なる部分である。そして、前実施形態における組合せ抽出部40に代わって、本実施形態の組合せ抽出部50はペナルティー付与部51によって付与されたペナルティーを加味しながら、対象文字列と読みがなとの対応付けを行なう。前実施形態と同様に、組合せ抽出部50は、例えばDPマッチングの手法を用いる。
本実施形態におけるペナルティーの付与とその利用について説明する。ペナルティー付与部51は、組合せ抽出部50が対象文字列と読みがなとの間の対応付けを行う際に、読みがなの文字列に関して、直前において対応付けられている文字からの距離に応じたペナルティーを付与する。ここで、距離は、読みがなの文字数によるものである。距離がgのとき、ペナルティー付与部51が付与するペナルティーの値pは、下の式(1)通りである。
p=(g−1)×α ・・・ (1)
ここで、αは、適宜決定すべき係数である。予備実験を行った結果、αの値として適している数値のひとつは、0.5である。そして、組合せ抽出部50は、対象文字列と読みがなとの間のマッチングを行なう際に、読みがなの文字列に含まれる各文字の尤度に、上記のペナルティーpを減じて処理を行なう。
ここで、ペナルティーを適用する処理の実例を説明する。本例では、入力される対象文字列は「吉田美」(人名)、入力される読みがなは「ヨシダタダシ」である。そして、学習結果格納部36には、次のデータが格納されている。即ち、文字「吉」に対応する読みがな「ヨシ」の尤度は「−2.04」である。また、文字「田」に対応する読みがな「タ」の尤度は「−3.39」である。また、文字「田」に対応する読みがな「ダ」の尤度は「−3.67」である。組合せ抽出部50の処理により、「吉」と「ヨシ」が対応付けられたとき、ペナルティー付与部51は、読みがなにおける「ヨシ」よりも後の各文字に対してペナルティーを付与する。つまり、読みがなの第2文字目の「シ」までが直前に対応付けられている。したがって、この「シ」と読みがなの第3文字目の「ダ」との間の距離gは1である。また、前記「シ」と読みがなの第4文字目の「タ」との間の距離gは2である。よって、この状況において式(1)による計算の結果、読みがなの第3文字目の「ダ」に付与されるペナルティーpは0である。また、読みがなの第4文字目の「タ」に付与されるペナルティーはpは0.5である。
そして、組合せ抽出部50は、文字「田」と読みがなとのマッチングを図るときに、ペナルティー付与部51によって付与された上記のペナルティーを用いる。つまり、文字「田」と読みがなの第3文字目の「ダ」と対応については、学習結果格納部36から読み出される尤度が「−3.67」からペナルティー値「0」を減じて、「−3.67」というスコアを用いる。また、文字「田」と読みがなの第4文字目の「タ」と対応については、学習結果格納部36から読み出される尤度が「−3.39」からペナルティー値「0.5」を減じて、「−3.89」というスコアを用いる。したがって、これらのペナルティー適用後の尤度を用いて、組合せ抽出部50は、文字「田」を、第4文字目の「タ」ではなく、第3文字目の「ダ」に対応させる結果を出力する。つまり、ペナルティー付与部51が付与したペナルティーの作用により、第3文字目の「ダ」と第4文字目の「タ」の尤度が逆転した。
つまり、本実施形態では、直前のマッチング状況に応じて、ペナルティー付与部51が、読みがなに含まれる各文字にペナルティー値を付与する。具体的には、ペナルティー付与部51は、対象文字列に含まれる文字と読みがなの文字列に含まれる文字との間の対応関係を決定する際の、決定済みの対応関係を有する箇所からの距離に応じて、その距離が大きいほど大きな値となるペナルティー値を付与する。そして、前記組合せ抽出部50は、ペナルティー付与部51によって付与されたペナルティー値を前記尤度から減じることによって、対象文字列に含まれる文字の少なくとも一部と読みがなの文字列に含まれる文字の少なくとも一部との間の対応関係を決定する。これにより、読みがな割当装置2は、精度の高い割り当てを行なうことができる。
[第3の実施形態]
次に、本発明の第3の実施形態について説明する。なお、前述の実施形態と同様の機能ブロックについては同じ符号を付すとともに説明を省略する。以下では、本実施形態に特有の事項を中心に説明する。
図14は、第3の実施形態による読みがな割当装置および組合せ抽出装置の機能構成を示すブロック図である。図示するように、本実施形態による読みがな割当装置3は、未対応解消部52と出力部43を含んで構成される。そして、組合せ抽出装置4は、第1の実施形態における読みがな割当装置1が備えていた機能のうちの、対象文字列入力部31と、対象文字列分割部32と、文字・読みがな対応推定部33と、対訳コーパス格納部34と、機械学習部35と、学習結果格納部36と、文字・読みがな対応候補格納部37と、読みがな入力部38と、読みがな格納部39と、組合せ抽出部40と、未対応位置検出部41とを備える。
本実施形態の読みがな割当装置3において、未対応解消部52は、前述の実施形態における未対応解消部42と同様の機能を備えている。しかしながら、未対応解消部52は、対象文字列と読みがなとの間の対応関係(DPマッチング等によるマッチングの結果)を装置の外部から取得する。この点が、未対応解消部52が未対応解消部42と異なる点である。組合せ抽出装置4は、前述の実施形態での説明と同様の方法により、対象文字列と読みがなとの対応関係を出力し、また未対応箇所の位置を検出する。未対応解消部52は、組合せ抽出装置4の組合せ抽出部40から、対象文字列と読みがなとの対応関係、および未対応箇所の位置の情報を受け取る。その情報を元に、未対応解消部52は、未対応箇所を解消する処理を行なう。出力部43は、未対応解消部52によって解消済みの対応関係を外部に出力する。
[第3の実施形態の変形例]
第3の実施形態の第1の変形例として、図14に示した組合せ抽出装置4が、第2の実施形態で説明したペナルティー付与部51の機能を備えるようにしても良い。このとき、組合せ抽出部40は、第2の実施形態で説明した方法と同様に、ペナルティー付与部51によって付与されたペナルティーを適用して、即ち尤度からペナルティー値を減じながら、対象文字列と読みがなとの間の対応関係を決定する。
また、第3の実施形態の第2の変形例として、図14に示した組合せ抽出装置4の代わりに、組合せ抽出部40によって出力されたデータを記憶する記憶装置を設けるようにしても良い。この記憶装置は、磁気ディスク装置や半導体メモリ等を備えることにより前記データを記憶する。そして、未対応解消部52は、この記憶装置から読み出した対象も実と読みがなの文字列とその両者間の対応関係、および必要に応じて未対応箇所の位置に関する情報を元に、前述の通り、未対応箇所を解消する処理を行なう。
なお、上述した実施形態における読みがな割当装置や組合せ抽出装置が有する機能をコンピューターで実現するようにしても良い。その場合、これらの機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態およびその変形例について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。