説明

データ処理装置、方法、及びプログラム

【課題】データ入力の利便性を向上させる技術を提供する。
【解決手段】データ入力装置10は、有向グラフのノード又はエッジに与えられた重みを保持する第1重み保持部44と、特定の2以上のエッジ、3以上のノード、又は連続しない2つのノードの組合せについて、第1重み保持部44に保持されている重みとは異なる重みが与えられる場合に、その重みを保持する第2重み保持部45と、組合せに含まれるノード又はエッジを全て含む対象経路に含まれるノードのうち、そのノードに至る経路として対象経路以外の経路が存在するノードを複製し、そのノードに至る経路が対象経路に含まれるノードと、含まれないノードとが区別されるように、有向グラフを変形する有向グラフ変形部42と、変形された有向グラフにおける第1ノードから第2ノードへ至る経路を、重みに基づいて評価する評価部43と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理技術に関し、特に、重み付き有向グラフの経路を評価するデータ処理装置、方法、及びプログラムに関する。
【背景技術】
【0002】
日本語の文字列を入力する際に、ユーザが入力した読みを漢字に変換して入力するプログラムが広く利用されている(例えば、特許文献1参照)。
【特許文献1】特開2004−139402号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
本発明者らは、ユーザから入力された文章の読みを漢字交じりの文章に変換する際の精度を向上させるために、漢字変換辞書を参照して、入力された文章の読みから漢字交じりの単語により構成される有向グラフを作成し、有向グラフのノード、すなわち単語と、ノード間のエッジ、すなわち単語のつながり方に対してスコアを付与し、重み付き有向グラフの最適経路問題を解くことにより最適な変換候補を選択する技術を開発している。
【0004】
より早く、より精確な変換候補を選択するために、重み付き有向グラフの最適経路をより効率良く計算する技術が求められている。
【0005】
本発明はこうした状況に鑑みてなされたものであり、その目的は、データ入力の利便性を向上させる技術を提供することにある。
【課題を解決するための手段】
【0006】
本発明のある態様は、データ処理装置に関する。このデータ処理装置は、有向グラフのノード又は2つのノードの間のエッジに与えられた重みを保持する第1重み保持部と、特定の2以上のエッジ、3以上のノード、又は連続しない2つのノードの組合せについて、前記組合せに含まれるノード又はエッジのうち少なくとも1つに、前記第1重み保持部に保持されている重みとは異なる重みが与えられる場合に、前記組合せに含まれるノード又はエッジに与えられた重みを保持する第2重み保持部と、前記有向グラフに前記組合せが含まれる場合、前記組合せに含まれるノード又はエッジを全て含む対象経路に含まれるノードのうち、そのノードに至る経路として前記対象経路以外の経路が存在するノードを複製し、そのノードに至る経路が前記対象経路に含まれるノードと、そのノードに至る経路が前記対象経路に含まれないノードとが区別されるように、前記有向グラフを変形する有向グラフ変形部と、前記有向グラフ変形部により変形された有向グラフにおける第1ノードから第2ノードへ至る経路を、前記第1重み保持部及び前記第2重み保持部から読み出された重みに基づいて評価する評価部と、を備えることを特徴とする。
【0007】
前記有向グラフ変形部は、複製したノードのうち一方のノードについては、そのノードに至るエッジのうち前記対象経路に含まれないエッジを削除し、他方のノードについては、そのノードに至るエッジのうち前記対象経路に含まれるエッジを削除してもよい。
【0008】
前記第1重み保持部に保持されている重みとは異なる重みは、前記対象経路の最後のノードに与えられてもよい。
【0009】
前記有向グラフ変形部は、前記組合せに含まれるノード又はエッジを全て含む対象経路に含まれるノードを複製し、そのノードに至る経路が前記対象経路に含まれるノードと、そのノードに至る経路が前記対象経路に含まれるが、そのノードに続く経路が前記対象経路に含まれないノードと、そのノードに至る経路が前記対象経路に含まれないノードとが区別されるように、前記有向グラフを変形してもよい。
【0010】
前記有向グラフ変形部は、前記組合せに含まれるノード又はエッジを全て含む対象経路に含まれるノードを複製し、そのノードに続く経路が前記対象経路に含まれるノードと、そのノードに続く経路が前記対象経路に含まれるが、そのノードに至る経路が前記対象経路に含まれないノードと、そのノードに続く経路が前記対象経路に含まれないノードとが区別されるように、前記有向グラフを変形してもよい。
【0011】
本発明の別の態様は、データ処理方法に関する。このデータ処理方法は、有向グラフを取得するステップと、前記有向グラフのノード又は2つのノードの間のエッジに重みを付与するステップと、特定の2以上のエッジ、3以上のノード、又は連続しない2つのノードの組合せについて、前記組合せに含まれるノード又はエッジのうち少なくとも1つに、前記付与するステップで与えられた重みとは異なる重みが与えられている場合、前記有向グラフに前記組合せが含まれるか否かを判定するステップと、前記有向グラフに前記組合せが含まれる場合、前記組合せに含まれるノード又はエッジを全て含む対象経路に含まれるノードのうち、そのノードに至る経路として前記対象経路以外の経路が存在するノードを複製し、そのノードに至る経路が前記対象経路に含まれるノードと、そのノードに至る経路が前記対象経路に含まれないノードとが区別されるように、前記有向グラフを変形するステップと、経路が追加された有向グラフにおける第1ノードから第2ノードへ至る経路を、前記重みに基づいて評価するステップと、を備えることを特徴とする。
【0012】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0013】
本発明によれば、データ入力の利便性を向上させる技術を提供することができる。
【発明を実施するための最良の形態】
【0014】
有向グラフのノードや、2つのノードの間のエッジに重みが与えられた重み付き有向グラフの最適経路問題は、乗物の乗換案内、ワークフローの管理、自然言語処理など、多くの分野で重要な技術的意義を有している。重み付き有向グラフの最適経路問題を解くためのアルゴリズムに、ビタビ(Viterbi)アルゴリズムがある。
【0015】
図1は、有向グラフの例を示す。以降の説明を分かりやすくするために、図1に示した有向グラフは、出発駅である第1ノードXから到着駅である第2ノードYへ至る電車の経路を示し、ノードA〜Jは乗継駅を示すものとする。
【0016】
図2は、図1に示した有向グラフの各ノード及び各エッジに与えられた重みを示す。この例では、各エッジの重みとして、駅間の所要時間が、各ノードの重みとして、乗継駅における乗り継ぎに要する時間が、それぞれ与えられている。ここで、出発駅Xから到着駅Yへ至る経路のうち、最も所要時間の短い最短経路を判別する方法について説明する。
【0017】
図3は、図2に示した重み付き有向グラフの最適経路をビタビアルゴリズムにより解く方法について説明するための図である。ビタビアルゴリズムでは、出発駅に近いノードから順に、出発駅から各乗継駅へ至る最短経路を段階的に求めていく。
【0018】
まず、出発駅であるX駅からA駅へ至る経路は1通りしかないので、X駅からA駅へ至る最短経路が決定される。この最短経路を通過したときのX駅からA駅までの所要時間は、「4」分である。同様に、X駅からB駅へ至る経路も1通りしかないので、X駅からB駅へ至る最短経路が決定され、所要時間は「3」分となる。
【0019】
次に、X駅からC駅へ至る最短経路を算出する。C駅を終点とするエッジは、A−CとB−Cの2本ある。X駅からA駅を経由してC駅へ至る経路の最短所要時間は、X駅からA駅までの最短所要時間「4」分に、A駅での乗り継ぎ時間「1」分と、A駅からC駅までの所要時間「8」分とを加算した「13」分である。同様に、X駅からB駅を経由してC駅へ至る経路の最短所要時間は、X駅からB駅までの最短所要時間「3」分に、B駅での乗り継ぎ時間「2」分と、B駅からC駅までの所要時間「6」分を加算した「11」分である。したがって、X駅からC駅へ至る最短経路は、B駅を経由する経路であり、その所要時間は「11」分である。
【0020】
X駅からD駅へ至る最短経路は、D駅を終点とするエッジが1本しかないので、そのエッジの始点であるA駅を経由する経路であり、その所要時間は「11」分である。同様に、X駅からE駅へ至る最短経路は、B駅を経由する経路であり、その所要時間は「12」分である。
【0021】
このように、ある駅までの最短経路は、そのノードを終点とする1以上のエッジの中から、それぞれのエッジの始点の駅までの最短所要時間と、エッジの始点の駅における乗り継ぎ時間と、エッジの始点の駅から当該駅までの所要時間とを加算した所要時間が最も短いものを選択することにより得られる。
【0022】
同様にして、到着駅Yまでの全ての駅について最短経路と最短所要時間を求めることができる。最後に、到着駅Yを終点とするエッジの中から最短経路を与えるエッジを求めると、直前の駅はJ駅となるので、J駅、H駅、G駅、E駅、B駅、X駅と直前の駅を順に辿っていくことにより、最短経路が判明する。
【0023】
以上のような方法により、X駅からY駅へ至る全ての経路の所要時間を算出して最短経路を判定する方法に比べて、計算量を飛躍的に低減することができる。特に、漢字変換や形態素解析などの自然言語処理の分野では、文章の長さが長くなると、文章を構成する単語の候補、すなわちノードの数が膨大になるので、このような方法を採用することによる計算量の低減が不可欠である。
【0024】
ビタビアルゴリズムは、あるノードまでの最適経路は、そのノードの直前のノードまでの最適経路とは独立に決定可能であることを前提としている。つまり、あるノードまでの最適経路は、過去に遡ることなく、直前の最適結果に基づいて決まる場合に適用可能である。
【0025】
ところが、現実には、ある特定のエッジやノードの組合せに対して、例外的な条件が設定される場合がある。例えば、D駅からG駅を経由してH駅へ至る路線には急行電車が運行されており、D駅からG駅を経由してH駅へ至る経路の所要時間は、D駅からG駅への所要時間とG駅からH駅への所要時間との単純な合計よりも短くなるという条件があるとする。このような例外的な条件は、図2に示した重み付き有向グラフでは表現できない。
【0026】
このように、連続する2つのノードの組合せに対して、ノードやエッジの重みが与えられるだけでなく、3以上のノードの組合せなどに対して、例外的な重みが与えられる場合、その組合せに対する例外的な重みを設定可能とするために、その組合せを通過する経路を別に設ける必要がある。
【0027】
図4は、連続する3つのノードの組合せに対して例外的な重みが与えられることを考慮して生成された有向グラフの例を示す。図2の有向グラフでは、例えばFへ至る経路として、A−C−Fという経路とB−C−Fという経路は区別しない。これは、Cまでは最短経路を通っていることが前提となっており、Aを経由したかBを経由したかは、Fまでの最短経路を決定する際に考慮しないからである。これに対し、図4の有向グラフでは、A−C−Fという経路とB−C−Fという経路を別の経路として表現するために、C及びFのノードを2つ設けている。これにより、A及びCを経由してFへ至る経路と、B及びCを経由してFへ至る経路を区別し、異なる重みを与えることができる。同様にして、他のノードについても、2つ前のノードが異なる経路を区別するために複数のノードを設けている。
【0028】
図5は、連続する4つのノードの組合せに対して例外的な重みが与えられることを考慮して生成された有向グラフの例を示す。図4の有向グラフでは、A−C−F−HとB−C−F−Hという経路は区別していなかったが、図5の有向グラフでは、3つ前のノードが異なっている経路も区別するので、A−C−F−Hに対応するHとB−C−F−Hに対応するHを設けている。
【0029】
図4及び図5に示した有向グラフでは、連続する3以上のノードの組合せに対して与えられた例外的な重みを考慮して最適経路を求めることができるが、例外的な重みが与えられる組合せに、連続するいくつのノードが含まれるかが予め分かっていないと、有向グラフを生成することができない。例えば、連続する3つのノードの組合せを考慮すると、図5に示した有向グラフを生成すればよいが、連続する4つのノードの組合せに対して新たに例外的な重みが与えられた場合は、図5に示した有向グラフを生成し直す必要がある。
【0030】
また、自然言語処理に応用する場合など、元の有向グラフの規模が大きい場合には、追加すべき経路の数が膨大になり、計算量が飛躍的に増大して、計算速度が低下するおそれがある。
【0031】
本実施の形態では、重み付き有向グラフにおいて、2以上のエッジ、3以上のノード、連続しない2つのノードなどの組合せに対して例外的な重みが与えられる場合に、効率良く最適経路を求める技術を提案する。
【0032】
図6は、図1に示した有向グラフにおいて、連続する3つのノードの組合せに対して例外的な重みが与えられた場合に、ビタビアルゴリズムにより最適経路を求めるための有向グラフを示す。図6では、D−G−Hという連続する3つのノードの組合せに対して例外的な重みを与えるために、D−G−Hという経路を有向グラフにもう1つ追加している。具体的には、D−G−Hという組合せの最初のノードDから分岐して、途中のノードGを経由し、最後のノードHまで至る経路を複製する。
【0033】
図7は、図6に示した有向グラフの各エッジ及びノードに重みを付与し、ビタビアルゴリズムにより最適経路を求めた様子を示す。図7では、D駅−G駅−H駅という経路には急行列車が運行されているため、D駅−G駅−H駅という経路を通過する場合には、D駅−G駅間の所要時間が4分から1分に短縮される例が示されている。図中、2つあるノードHのうち、上側のノードHは例外的な重みを考慮せずにノードHまでの最適経路を求めた結果を示し、下側のノードHは経路D−G−Hに対して与えられた例外的な重みを考慮した場合のノードHまでの最適経路を求めた結果を示す。
【0034】
図8は、2つのエッジの組合せに対して与えられた例外的な重みを考慮した有向グラフを示す。図8では、エッジA−DとエッジH−Jの組合せに対して例外的な重みが与えられている。例えば、A駅からD駅までの路線とH駅からJ駅までの路線が同一の主体により運営されているために、これらの路線を使うと割引料金が適用されるような例が想定される。この場合、エッジA−DとエッジH−Jを含む経路を元の有向グラフから抽出し、抽出した経路を有向グラフに追加する。これにより、エッジA−DとエッジA−Jの両方を通過する経路を有向グラフの中に新たに設け、その経路に対して例外的な重みを付与することができる。
【0035】
図9は、連続しない2つのノードの組合せに対して与えられた例外的な重みを考慮した有向グラフを示す。図9では、ノードDとノードHの組合せに対して例外的な重みが与えられている。例えば、ひらがなで入力された文章を漢字仮名交じり文に変換するときに、「鳥」という単語が先行する場合は「とぶ」というひらがなに対応する変換候補として「飛ぶ」という候補のスコアを高くするなどといった共起用例が想定される。この場合、ノードDとノードHの間の経路を元の有向グラフから抽出し、抽出した経路を有向グラフに追加する。これにより、ノードDの存在を考慮しないノードHのスコアと、ノードDが先行する場合のノードHのスコアを区別して表現することができる。
【0036】
このようにして、重み付き有向グラフに、例外的な重みが与えられた経路を追加することにより、計算量の増大を最小限に抑えつつ、直前のノードではなく過去のノードまで遡って参照しなければならないような例外的な条件をも考慮して最適経路を求めることができる。
【0037】
上記の例では、例外的な重みが与えられた経路を有向グラフに追加したが、この場合、実質的に同じ経路が有向グラフ中に重複して存在することになる。最適経路を探索する際には、このことは問題にならないが、2番目以降の経路を算出する際に、実質的には同じ経路であるのに別の経路として報告してしまうことがあるため、n−ベスト探索のアルゴリズムが破綻するおそれがある。したがって、n−ベスト探索を行う際には、ノード又はエッジを追加しても、経路の総数を変えない経路の組み替えが必要となる。このようなアルゴリズムについて更に説明する。
【0038】
有向グラフを変形する際に、述語論理に基づいたプログラミング言語等を利用してもよい。この場合、例外的な重みは、ノードに対する条件要請として与えられる。この条件要請は、ノードを引数として真偽値又は別の述語を返す手続き(述語)の形で与えられる。
【0039】
例えば、図10に示した重み付き有向グラフにおいて、「A−C−E」という連続する3つのノードの組合せに対して例外的な重みが与えられるものとする。このとき、「「A−C−E」というノードの並び」を検出するために、「「A−C−E」の順に並んでいるノードであるか」という条件要請が与えられる。この条件要請は、ノードE以外のノードでは成立し得ないので、ノードE以外のノードは、この条件要請に対して偽を返す。ノードEは、この条件要請に対して、「先行するノードは「A−C」の順に並んでいるノードであるか」という別の述語を返す。ノードEに先行するノードのうち、ノードDはこの条件要請を満たさないので偽を返す。ノードCはこの条件要請を満たし、この条件要請に対して、「先行するノードは「A」の順に並んでいるノードであるか」という述語を返す。ノードCに先行するノードのうち、ノードAはこの条件要請を満たし、ノードBは満たさない。
【0040】
ノードEが返した条件要請を満たしたノードCは複製され、ノードC自身が返した述語の条件要請を満たすCと、満たさないCに区別される。すなわち、「A」が先行するC(C1)と「A」が先行しないC(C2)が区別される。このとき、ノードC1については、ノードC1に至るエッジのうち「A」が先行しない「B−C1」が削除され、ノードC2については、「A」が先行する「A−C2」が削除される。さらに、同様にして、「A−C」が先行するE(E1)と「A−C」が先行しないE(E2)が区別される。このときも、ノードE1については、「A−C」が先行しない「D−E1」が削除される。ノードE2については、「C2−E」も「D−E」も「A−C」が先行しないので削除されない。こうして組み替えられた有向グラフを図11に示す。
【0041】
このようなアルゴリズムにより、経路の総数を変えることなく、「A−C」が先行するEと「A−C」が先行しないEを区別して、異なる重みを与えることができる。この場合、「A−C−E」という連続する3つのノードの組合せに対して与えられる例外的な重みは、組合せの最後のノード「E2」の重みとして与えられる。
【0042】
このようなアルゴリズムによれば、「A−?−E」(ただし、?は任意の1ノード)という組合せに例外的な重みが与えられる場合も適切に有向グラフを組み替えることができる。この場合、ノードEが「「A−?−E」の順に並んでいるノードであるか」という条件要請に対して、「先行するノードは「A−?」の順に並んでいるノードであるか」という述語を返し、この条件要請に対しては、Eに先行する任意のノードが「先行するノードは「A」の順に並んでいるノードであるか」という述語を返すようにすればよい。
【0043】
また、「A−*−E」(ただし、*は任意の数のノード)という組合せに例外的な重みが与えられる場合、ノードEが「「A−*−E」の順に並んでいるノードであるか」という条件要請に対して、「先行するノードは「A−*」の順に並んでいるノードであるか」という述語を返し、この条件要請に対しては、「A」以外の任意のノードが「先行するノードは「A−*」の順に並んでいるノードであるか」という述語を再び返すようにすればよい。このようなワイルドカードを用いた条件要請は、結果として無限長の組合せを生み出すため、最初に一定の長さ限界を設定する従来の方法では扱うことができないが、本実施の形態の技術によれば、適切に扱うことができる。
【0044】
上記の例では、先行する経路が条件を満たすか否かによってノードを区別したが、さらに、後続の経路が条件を満たすか否かによってノードを区別してもよい。すなわち、経路を順方向に解析する場合は、(1)先行する経路も後続の経路も条件を満たすノード、(2)先行する経路は条件を満たすが、後続の経路が条件を満たさないノード、(3)先行する経路が条件を満たさないノードの3つに区別し、経路を逆方向に解析する場合は、(1)後続の経路も先行する経路も条件を満たすノード、(2)後続の経路は条件を満たすが、先行する経路が条件を満たさないノード、(3)後続の経路が条件を満たさないノードの3つに区別する。
【0045】
例えば、上記の例と同様に、図10に示した有向グラフにおいて、「A−C−E」という連続する3つのノードの組合せに対して例外的な重みが与えられる場合について考える。有向グラフの先頭から順方向に解析すると、まず、後続の経路がC−Eを含むA(A1)と、後続の経路がC−Eを含まないA(A2)が区別される。さらに、Aが先行しEが後続するC(C1)と、Aが先行するがEが後続しないC(C2)と、Aが先行しないC(C3)が区別される。さらに、A−Cが先行するE(E1)と、A−Cが先行しないE(E3)が区別される。こうして組み替えられた有向グラフを図12に示す。同様に、有向グラフの最後から逆方向に解析して組み替えられた有向グラフを図13に示す。
【0046】
このようなアルゴリズムにより、経路の総数を変えることなく、「A−C−E」という経路を他の経路と分離して、異なる重みを与えることができる。この場合、「A−C−E」という連続する3つのノードの組合せに対して与えられる例外的な重みは、組合せに含まれる任意のノード又はエッジに与えられてもよい。
【0047】
図14は、実施の形態に係るデータ入力装置10の構成を示す。データ入力装置10は、ユーザインタフェイス20、想起ユニット30、データ処理装置の一例である選択ユニット40を備える。想起ユニット30は、入力データ受付部32、有向グラフ生成部34、及び辞書保持部36を含む。選択ユニット40は、有向グラフ取得部41、有向グラフ変形部42、評価部43、第1重み保持部44、第2重み保持部45、及び有向グラフ保持部46を含む。これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのCPU、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【0048】
入力データ受付部32は、ユーザがユーザインタフェイス20を介して入力した文章の読みのデータを受け付ける。有向グラフ生成部34は、入力データ受付部32が受け付けた読みのデータから、辞書保持部36に保持された辞書データを参照して、漢字仮名交じりの文章の有向グラフを生成する。辞書保持部36は、単語の読み、品詞、対応する漢字があれば漢字を対応付けて格納した辞書を保持する。
【0049】
図15は、有向グラフ生成部34が生成した有向グラフの例を示す。図15は、「じんこうのあさがおせんせいのないしんそざいとして」という読みが入力されたときに生成される有向グラフの例を示す。実際には、もっと多くのノードを含むグラフが生成されることになるが、ここでは説明の簡略化のために省略している。
【0050】
有向グラフ生成部34は、入力された文章の読みの先頭から順に、「じ」、「じん」、「じんこ」、「じんこう」という読みで辞書を検索し、辞書に読みが登録されている単語を抽出してその単語の品詞を取得し、対応する漢字があれば漢字に変換して、ノードを生成する。この例では、「じんこう」という読みで、「人工」、「人口」、「沈香」、「神幸」の4つの名詞が登録されているため、それぞれに対応する4つのノードが生成される。つづいて、次の「の」という読みで、助詞の「の」が登録されているため、それに対応するノードが生成される。このようにして、先頭から順に単語を抽出してノードを生成していく。
【0051】
ノードの重みとして、一般的な文章における単語の使用頻度に基づいたスコアが用いられてもよい。また、ユーザの変換履歴が反映されるように、ユーザが使用した単語のスコアを増加させてもよい。また、エッジの重みとして、一般的な文章における単語同士のつながり方の使用頻度に基づいたスコアが用いられてもよい。一般的な文章における品詞同士のつながり方の妥当性に基づいてスコアが与えられてもよい。
【0052】
いったん有向グラフが生成されれば、あとは前述した最適経路問題を解けば、最適な変換候補を選択することができる。以降は、説明を分かりやすくするために、前述した電車の経路を示す有向グラフの例に戻って説明を続ける。
【0053】
第1重み保持部44は、有向グラフのノード又は2つのノードの間のエッジに与えられた重みを保持する。図16は、第1重み保持部44の内部データの例を示す。第1重み保持部44には、エッジ欄70、重み欄71、ノード欄72、重み欄73が設けられており、エッジに与えられた重みと、ノードに与えられた重みが保持される。ノードやエッジの重みは、有向グラフが生成される際に与えられてもよい。この場合、ノードやエッジの重みは、辞書保持部36などに保持されていてもよい。
【0054】
第2重み保持部45は、2以上のエッジ、3以上のノード、又は連続しない2つのノードの組合せに対して、第1重み保持部44に保持されているそれぞれのノード又はエッジに与えられた重みから算出される重みとは異なる重みが与えられる場合に、その組合せに与えられた重みを保持する。図17は、第2重み保持部45の内部データの例を示す。第2重み保持部45には、組合せ欄74、重み欄75が設けられており、ノードやエッジの組合せに対して例外的に与えられた重みが保持される。
【0055】
有向グラフ取得部41は、有向グラフ生成部34により生成された有向グラフを取得する。有向グラフ保持部46は、有向グラフ取得部41が取得した有向グラフを保持する。図18は、有向グラフ保持部46の内部データの例を示す。有向グラフ保持部46には、ノード欄80、重み欄81、入力エッジ欄82、出力エッジ欄83、及び最適経路欄84が設けられている。ノード欄80には、有向グラフを構成するノードを識別する情報が格納される。重み欄81には、ノードに与えられた重みが格納される。入力エッジ欄82は、始点欄85と重み欄86の組を複数含み、該当ノードを終点とするエッジの始点と、そのエッジの重みが格納される。出力エッジ欄83は、終点欄87と重み欄88を複数含み、該当ノードを始点とするエッジの終点と、そのエッジの重みが格納される。前述したように、それぞれの重み欄には、有向グラフ生成部34が有向グラフを生成したときに該当するノードやエッジの重みが格納されてもよいし、有向グラフ取得部41が有向グラフ生成部34から有向グラフを取得して有向グラフ保持部46に格納するときに第1重み保持部44を参照して該当するノードやエッジの重みを格納してもよい。最適経路欄84は、始点欄89及び重み欄90を含み、評価部43により選択された該当ノードまでの最適経路の直接先行ノードと、該当ノードまでの最適経路の重みが格納される。
【0056】
有向グラフ変形部42は、有向グラフ保持部46に保持された有向グラフに、第2重み保持部45に例外的な重みが保持されたノード又はエッジの組合せが含まれる場合、その組合せに含まれるノード又はエッジを経由する経路と、それ以外の経路とが区別されるように、有向グラフを変形する。有向グラフを変形するアルゴリズムは、上述した通りである。
【0057】
評価部43は、有向グラフ変形部42により経路を追加された有向グラフにおける第1ノードから第2ノードへ至る経路を、第1重み保持部44及び第2重み保持部45から読み出された重みに基づいて評価する。評価部43は、第1ノードから第2ノードへ至る複数の経路の中から、重みに基づいて最適な経路を選択する。
【0058】
評価部43は、図3で説明したように、ビタビアルゴリズムに基づき、第1ノードから第2ノードへ至る経路に含まれるそれぞれのノードについて、第1ノードに近いノードから順に、第1ノードからそのノードへ至る最適な経路を重みに基づいて選択していくことにより、第1ノードから第2ノードへ至る最適な経路を選択する。
【0059】
評価部43は、第1ノードからあるノードへ至る最適な経路を選択する際に、該当ノードを終点とする1以上のエッジの中から、それぞれのエッジに与えられた重みと、第1ノードからそれぞれのエッジの始点のノードへ至る最適な経路の重みとに基づいて、第1ノードから該当ノードへ至る最適な経路を与えるエッジを選択する。そして、第1ノードから選択されたエッジの始点のノードへ至る最適な経路の重みと、選択されたエッジ又は該当ノードに与えられた重みに基づいて、第1ノードから該当ノードへ至る最適な経路の重みを算出する。経路の重みは、例えば、その経路に含まれるエッジとノードに与えられた重みを加算したものであってもよい。また、その他の算術式により重みが算出されてもよい。
【0060】
本実施の形態の方法によれば、有向グラフを生成した後であっても、例外的な重みが与えられたエッジやノードの組合せを有向グラフに追加することができるので、柔軟に条件を設定することができる。また、例外的な条件が与えられる場合であっても、ビタビアルゴリズムにより最適経路を求めることができるので、計算量や計算時間を大幅に軽減することができる。経路の変形は、有向グラフ生成部34が有向グラフを生成している途中に行ってもよいし、評価部43が経路の重みを評価している途中に行ってもよい。
【0061】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【0062】
【図1】有向グラフの例を示す図である。
【図2】図1に示した有向グラフの各ノード及び各エッジに与えられた重みを示す図である。
【図3】図2に示した重み付き有向グラフの最適経路をビタビアルゴリズムにより解く方法について説明するための図である。
【図4】連続する3つのノードの組合せに対して例外的な重みが与えられることを考慮して生成された有向グラフの例を示す図である。
【図5】連続する4つのノードの組合せに対して例外的な重みが与えられることを考慮して生成された有向グラフの例を示す図である。
【図6】図1に示した有向グラフにおいて、連続する3つのノードの組合せに対して例外的な重みが与えられた場合に、ビタビアルゴリズムにより最適経路を求めるための有向グラフを示す図である。
【図7】図6に示した有向グラフの各エッジ及びノードに重みを付与し、ビタビアルゴリズムにより最適経路を求めた様子を示す図である。
【図8】2つのエッジの組合せに対して与えられた例外的な重みを考慮した有向グラフを示す図である。
【図9】連続しない2つのノードの組合せに対して与えられた例外的な重みを考慮した有向グラフを示す図である。
【図10】有向グラフの例を示す図である。
【図11】実施の形態に係るアルゴリズムにより変形された有向グラフの例を示す図である。
【図12】実施の形態に係るアルゴリズムにより変形された有向グラフの例を示す図である。
【図13】実施の形態に係るアルゴリズムにより変形された有向グラフの例を示す図である。
【図14】実施の形態に係るデータ入力装置の構成を示す図である。
【図15】有向グラフ生成部が生成した有向グラフの例を示す図である。
【図16】第1重み保持部の内部データの例を示す図である。
【図17】第2重み保持部の内部データの例を示す図である。
【図18】有向グラフ保持部の内部データの例を示す図である。
【符号の説明】
【0063】
10 データ入力装置、20 ユーザインタフェイス、30 想起ユニット、32 入力データ受付部、34 有向グラフ生成部、36 辞書保持部、40 選択ユニット、41 有向グラフ取得部、42 有向グラフ変形部、43 評価部、44 第1重み保持部、45 第2重み保持部、46 有向グラフ保持部。

【特許請求の範囲】
【請求項1】
有向グラフのノード又は2つのノードの間のエッジに与えられた重みを保持する第1重み保持部と、
特定の2以上のエッジ、3以上のノード、又は連続しない2つのノードの組合せについて、前記組合せに含まれるノード又はエッジのうち少なくとも1つに、前記第1重み保持部に保持されている重みとは異なる重みが与えられる場合に、前記組合せに含まれるノード又はエッジに与えられた重みを保持する第2重み保持部と、
前記有向グラフに前記組合せが含まれる場合、前記組合せに含まれるノード又はエッジを全て含む対象経路に含まれるノードのうち、そのノードに至る経路として前記対象経路以外の経路が存在するノードを複製し、そのノードに至る経路が前記対象経路に含まれるノードと、そのノードに至る経路が前記対象経路に含まれないノードとが区別されるように、前記有向グラフを変形する有向グラフ変形部と、
前記有向グラフ変形部により変形された有向グラフにおける第1ノードから第2ノードへ至る経路を、前記第1重み保持部及び前記第2重み保持部から読み出された重みに基づいて評価する評価部と、
を備えることを特徴とするデータ処理装置。
【請求項2】
前記有向グラフ変形部は、複製したノードのうち一方のノードについては、そのノードに至るエッジのうち前記対象経路に含まれないエッジを削除し、他方のノードについては、そのノードに至るエッジのうち前記対象経路に含まれるエッジを削除することを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記第1重み保持部に保持されている重みとは異なる重みは、前記対象経路の最後のノードに与えられることを特徴とする請求項1又は2に記載のデータ処理装置。
【請求項4】
前記有向グラフ変形部は、前記組合せに含まれるノード又はエッジを全て含む対象経路に含まれるノードを複製し、そのノードに至る経路が前記対象経路に含まれるノードと、そのノードに至る経路が前記対象経路に含まれるが、そのノードに続く経路が前記対象経路に含まれないノードと、そのノードに至る経路が前記対象経路に含まれないノードとが区別されるように、前記有向グラフを変形することを特徴とする請求項1又は2に記載のデータ処理装置。
【請求項5】
前記有向グラフ変形部は、前記組合せに含まれるノード又はエッジを全て含む対象経路に含まれるノードを複製し、そのノードに続く経路が前記対象経路に含まれるノードと、そのノードに続く経路が前記対象経路に含まれるが、そのノードに至る経路が前記対象経路に含まれないノードと、そのノードに続く経路が前記対象経路に含まれないノードとが区別されるように、前記有向グラフを変形することを特徴とする請求項1又は2に記載のデータ処理装置。
【請求項6】
有向グラフを取得するステップと、
前記有向グラフのノード又は2つのノードの間のエッジに重みを付与するステップと、
特定の2以上のエッジ、3以上のノード、又は連続しない2つのノードの組合せについて、前記組合せに含まれるノード又はエッジのうち少なくとも1つに、前記付与するステップで与えられた重みとは異なる重みが与えられている場合、前記有向グラフに前記組合せが含まれるか否かを判定するステップと、
前記有向グラフに前記組合せが含まれる場合、前記組合せに含まれるノード又はエッジを全て含む対象経路に含まれるノードのうち、そのノードに至る経路として前記対象経路以外の経路が存在するノードを複製し、そのノードに至る経路が前記対象経路に含まれるノードと、そのノードに至る経路が前記対象経路に含まれないノードとが区別されるように、前記有向グラフを変形するステップと、
経路が追加された有向グラフにおける第1ノードから第2ノードへ至る経路を、前記重みに基づいて評価するステップと、
を備えることを特徴とするデータ処理方法。
【請求項7】
有向グラフを取得する機能と、
前記有向グラフのノード又は2つのノードの間のエッジに重みを付与する機能と、
特定の2以上のエッジ、3以上のノード、又は連続しない2つのノードの組合せについて、前記組合せに含まれるノード又はエッジのうち少なくとも1つに、前記付与する機能で与えられた重みとは異なる重みが与えられている場合、前記有向グラフに前記組合せが含まれるか否かを判定する機能と、
前記有向グラフに前記組合せが含まれる場合、前記組合せに含まれるノード又はエッジを全て含む対象経路に含まれるノードのうち、そのノードに至る経路として前記対象経路以外の経路が存在するノードを複製し、そのノードに至る経路が前記対象経路に含まれるノードと、そのノードに至る経路が前記対象経路に含まれないノードとが区別されるように、前記有向グラフを変形する機能と、
経路が追加された有向グラフにおける第1ノードから第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

【図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


【公開番号】特開2010−44637(P2010−44637A)
【公開日】平成22年2月25日(2010.2.25)
【国際特許分類】
【出願番号】特願2008−208916(P2008−208916)
【出願日】平成20年8月14日(2008.8.14)
【出願人】(390024350)株式会社ジャストシステム (123)
【Fターム(参考)】