(57)【特許請求の範囲】
【請求項１】
概念間の関係の有無を表す概念マップデータを読み込み、ある概念と他の概念との間の関係を表すリンクの数が少ないほど当該概念について大きな値となるような前記概念の重みの値を算出する概念重み算出部と、
前記概念マップデータにおいて、ある概念と他の概念との間を前記リンクで連結させてなるパスについて、当該パス上に含まれる概念についての前記概念の重みの値に応じた当該パスの重みの値を算出するパス重み算出部と、
ある概念と他の概念との間を結ぶパスについての前記パスの重みの値に応じた、当該概念と当該他の概念との間の関連度を算出する関連度算出部と、
を具備することを特徴とする概念処理装置。
【請求項２】
前記パス重み算出部は、前記パス上に含まれる各々の概念についての前記概念の重みの値の調和平均または相乗平均を取ることによって当該パスの重みの値を算出する、
ことを特徴とする請求項１に記載の概念処理装置。
【請求項３】
前記概念重み算出部は、前記概念から前記他の概念との間の前記リンクの数の逆数の対数を計算することにより前記概念の重みの値を算出する、
ことを特徴とする請求項１または２のいずれかに記載の概念処理装置。
【請求項４】
前記関連度算出部は、前記ある概念と前記他の概念との間を前記リンクで連結させてなるパスが複数存在する場合に、それら複数のパスの数に、それら複数のパスの重みの値のうちの最大の前記パスの重みの値を乗じることによって、当該概念と当該他の概念との間の関連度を算出するか、またはそれら複数のパスの重みの総和を関連度として算出する、
ことを特徴とする請求項１から３までのいずれか一項に記載の概念処理装置。
【請求項５】
概念間の類似度を表す類似度データを取得する類似度取得部を具備し、
前記パス重み算出部は、前記パスについて、当該パス上に含まれるリンクが結ぶ概念の対に関する類似度を前記類似度データから取得し、取得した前記類似度にも応じて前記パスの重みの値を算出する、
ことを特徴とする請求項１から４までのいずれか一項に記載の概念処理装置。
【請求項６】
コンピューターを、請求項１から５までのいずれか一項に記載の概念処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概念を処理するための概念処理装置およびプログラムに関する。本発明は、特に、概念間の関連度を求めるための概念処理装置およびプログラムに関する。
【背景技術】
【０００２】
情報検索処理や、自然言語を用いた知識処理などにおいて、概念間の関係を利用することにより、より高度な処理を行えるようにすることが期待されている。また、概念間の関係を、人手に依らずに効率よく収集できるようにすることが期待されている。
【０００３】
概念間の関係を表す情報としては、概念間の関係名や、概念間の関連の強さを表す数値などが考えられる。この中でも、概念間の関連の強さを、精度よく且つ効率よく収集することができれば、上で述べた情報検索処理や知識処理などの高度化への貢献を期待できる。
【０００４】
非特許文献１には、係り受けの大規模な確率的クラスタリングの結果を用いて、大規模な類似語リストを生成する技術が述べられている。この技術は、大規模な言語資源の分析を前提としている。そして、この技術は、意味的に似た語は似た文脈で出現するという分布仮説に基づいて、ある語の周辺に出現する語や係り受け関係にある語で文脈を定義し、その語との共起頻度などを分析する。
【０００５】
非特許文献２では、大量の文章を解析し、同一の文で共通して現れる頻度を求めることにより、単語間の関連度を計算したデータベースが公開されている旨が記載されている。共起スコアとしては、共起頻度、Ｄｉｃｅ係数、ディスカウンティング相互情報量の３種類が用いられている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】風間淳一，Stijn De Saeger，鳥澤健太郎，村田真樹，「係り受けの確率的クラスタリングを用いた大規模類似語リストの作成」，言語処理学会，第１５回年次大会  発表論文集，２００９年３月，ｐ．８４−８７，［online］，［平成２７年４月１日検索］，インターネット＜URL：http://www.anlp.jp/proceedings/annual_meeting/2009/pdf_dir/C1-6.pdf＞
【非特許文献２】ALAGIN  言語資源・音声資源サイト，「（Ａ−５）単語共起頻度データベース」，［online］，［平成２７年４月１０日検索］，インターネット＜URL：https://alaginrc.nict.go.jp/resources/nict-resource/li-info/li-outline.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献１による方法では、例えば「パエリヤ」と「あさり」という概念対のように、料理と材料の関係にある対に対して高い関連度を設定することができない。このため、非特許文献１の手法をそのまま、概念マップにおける関連度に適用しても、良い性能は得られない。
【０００８】
また、非特許文献２による方法は、例えば料理と材料のような概念対の関係には効果的であるが、例えば「サッカー」と「野球」という概念対のように、似たような使い方をされる対でありながら、同じ文脈で使われることの少ない単語対には、高い値を与えることができない。よって、やはり概念マップにおける関連度としてこの手法をそのまま適用することは難しい。
【０００９】
また、非特許文献１による手法も、非特許文献２による手法も、大規模な言語資源を分析しなければならない。
【００１０】
本発明は、これらの課題認識に基づいて行なわれたものであり、概念マップに基づいて、概念間の関連の強さを表す指標（関連度）を求めることのできる、概念処理装置およびプログラムを提供しようとするものである。
【課題を解決するための手段】
【００１１】
上記の課題を解決するため、本発明の一態様による概念処理装置は、概念間の関係の有無を表す概念マップデータを読み込み、ある概念と他の概念との間の関係を表すリンクの数が少ないほど当該概念について大きな値となるような前記概念の重みの値を算出する概念重み算出部と、前記概念マップデータにおいて、ある概念と他の概念との間を前記リンクで連結させてなるパスについて、当該パス上に含まれる概念についての前記概念の重みの値に応じた当該パスの重みの値を算出するパス重み算出部と、ある概念と他の概念との間を結ぶパスについての前記パスの重みの値に応じた、当該概念と当該他の概念との間の関連度を算出する関連度算出部と、を具備することを特徴とする。
【００１２】
また、本発明の一態様は、上記の概念処理装置において、前記パス重み算出部は、前記パス上に含まれる各々の概念についての前記概念の重みの値の調和平均または相乗平均を取ることによって当該パスの重みの値を算出する、ことを特徴とする。
【００１３】
また、本発明の一態様は、上記の概念処理装置において、前記概念重み算出部は、前記概念から前記他の概念との間の前記リンクの数の逆数の対数を計算することにより前記概念の重みの値を算出する、ことを特徴とする。
【００１４】
また、本発明の一態様は、上記の概念処理装置において、前記関連度算出部は、前記ある概念と前記他の概念との間を前記リンクで連結させてなるパスが複数存在する場合に、それら複数のパスの数に、それら複数のパスの重みの値のうちの最大の前記パスの重みの値を乗じることによって、当該概念と当該他の概念との間の関連度を算出するか、またはそれら複数のパスの重みの総和を関連度として算出する、ことを特徴とする。
【００１５】
また、本発明の一態様は、上記の概念処理装置において、概念間の類似度を表す類似度データを取得する類似度取得部を具備し、前記パス重み算出部は、前記パスについて、当該パス上に含まれるリンクが結ぶ概念の対に関する類似度を前記類似度データから取得し、取得した前記類似度にも応じて前記パスの重みの値を算出する、ことを特徴とする。
【００１６】
また、本発明の一態様は、コンピューターを、上記のいずれかに記載の概念処理装置として機能させるためのプログラムである。
【発明の効果】
【００１７】
本発明によれば、概念マップに基づいて概念間の関連度を求めることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１実施形態による概念処理装置の概略機能構成を示したブロック図である。
【図２】同実施形態による概念マップ記憶部が保持する概念マップの一例を示す概略図である。
【図３】同実施形態において計算する概念の重みを説明するための概略図であり、概念マップの一部分を示している。
【図４】同実施形態による作業記憶部内の記憶領域に置かれ、概念の重み等を保持するためのデータの構成を示す概略図である。
【図５】同実施形態において計算するパスの重みを説明するための概略図であり、概念マップの一部分を示している。
【図６】同実施形態による作業記憶部内の記憶領域に置かれるデータであり、パス重み算出部が概念マップを探索する際に一時的に記憶すべき情報を格納する手段を示す概略図である。
【図７】同実施形態による作業記憶部内の記憶領域に置かれるデータであり、パス重み算出部が概念マップを探索する際に、各概念へのパスに関連する情報を記憶する手段を示す概略図である。
【図８】同実施形態による概念処理装置の処理の手順を示すフローチャートの第１である。
【図９】同実施形態による概念処理装置の処理の手順を示すフローチャートの第２である。
【図１０】同実施形態において用いるデータであり、図４に示した記憶領域が保持する値の一例を示す概略図である。
【図１１】同実施形態において用いるデータであり、図６に示した記憶領域が保持する値の推移の一例を示す概略図である。
【図１２】同実施形態において用いるデータであり、図７に示した記憶領域が保持する値の推移の一例（その１）を示す概略図である。
【図１３】同実施形態において用いるデータであり、図７に示した記憶領域が保持する値の推移の一例（その２）を示す概略図である。
【図１４】同実施形態において用いるデータであり、図７に示した記憶領域が保持する値の推移の一例（その３）を示す概略図である。
【図１５】本発明の第２実施形態による概念処理装置の概略機能構成を示すブロック図である。
【図１６】同実施形態における類似度取得部が外部から取得する、概念間の類似度を表す類似度データの構成を示す概略図である。
【発明を実施するための形態】
【００１９】
次に、本発明の実施形態について、図面を参照しながら説明する。
［第１実施形態］
図１は、第１実施形態による概念処理装置の概略機能構成を示すブロック図である。図示するように、概念処理装置１は、概念重み算出部１２と、パス重み算出部１４と、関連度算出部１６と、パラメーター設定部１８と、概念マップ記憶部２０と、作業記憶部２２と、関連度記憶部３０と、を含んで構成される。これらの各部は、例えば電子回路（コンピューターを含む）を用いて実現される。また、概念マップ記憶部２０と作業記憶部２２と関連度記憶部３０とは、情報を記憶するための手段として例えば磁気ハードディスク装置や半導体メモリー等を用いて実現される。
【００２０】
概念重み算出部１２は、概念間の関係の有無を表す概念マップデータを概念マップ記憶部２０から読み込み、ある概念と他の概念との間の関係を表すリンクの数が少ないほど当該概念について大きな値となるような前記概念の重みの値を算出する。
また、概念重み算出部１２は、特に、前記概念から前記他の概念との間の前記リンクの数の逆数の対数を計算することにより前記概念の重みの値を算出する。
【００２１】
パス重み算出部１４は、前記概念マップデータにおいて、ある概念と他の概念との間を前記リンクで連結させてなるパスについて、当該パス上に含まれる概念についての前記概念の重みの値に応じたパスの重みの値を算出する。
また、パス重み算出部１４は、特に、前記パス上に含まれる各々の概念についての前記概念の重みの値の調和平均や相乗平均を取ることによって当該パスの重みの値を算出する。
また、パス重み算出部１４は、特に具体的な手順として、計算対象の概念から開始して、前記概念マップデータを探索する探索処理を行いながら、前記計算対象の概念と、前記探索処理において到達する概念との間のパスについて前記パスの重みの値を算出し、当該パスについて算出された前記パスの重みの値が、前記計算対象の概念と当該到達した概念との間を連結させる他のパスについて既に算出していたパスの重みの値よりも大きい場合に、前記算出されたパスの重みの値を、前記計算対象の概念と当該到達した概念との間の最大重みのパスについての重みの値として記憶手段に書き込む。
【００２２】
関連度算出部１６は、ある概念と他の概念との間を結ぶパスについての前記パスの重みの値に応じた、当該概念と当該他の概念との間の関連度を算出する。
また、関連度算出部１６は、特に、前記ある概念と前記他の概念との間を前記リンクで連結させてなるパスが複数存在する場合に、それら複数のパスの数に、それら複数のパスの重みの値のうちの最大の前記パスの重みの値を乗じることによって、当該概念と当該他の概念との間の関連度を算出する。
【００２３】
パラメーター設定部１８は、作業記憶部２２内に記憶されるパラメーターを設定する。具体的には、パラメーター設定部１８は、後述するパラメーターMAX_Distanceの値を、適宜、設定する。
【００２４】
概念マップ記憶部２０は、概念間の関係の有無を表す概念マップデータを記憶する。なお、概念マップデータの詳細については、後述する。
【００２５】
作業記憶部２２（ワークメモリー。以下において単に「メモリー」と呼ぶ場合もある。）は、記憶手段であり、処理中の作業用の情報を記憶する領域を持っている。また、作業記憶部２２は、処理用のパラメーターを記憶しておく領域を持っている。
【００２６】
関連度記憶部３０は、関連度算出部１６によって算出された概念間の関連度を記憶する。関連度記憶部３０が記憶している関連度のデータは、適宜、他の装置等から参照可能となっている。
【００２７】
次に、概念マップ記憶部２０が記憶する概念マップのデータについて説明する。概念マップは、ある概念と他の概念との間に関係があるか否かを表すデータである。概念マップを表す一つの形態は、ノードとリンクで構成されるグラフである。個々の概念は、このグラフにおけるノードに対応する。また、概念間の関係は、グラフにおけるリンクに対応する。ある概念と他の概念との間においては、関係が有るか無いかのいずれかである。概念間に関係がある場合には、それらの概念の間には、リンクが存在する。概念間に関係がない場合には、それらの概念の間には、リンクが存在しない。なお、概念と概念の間の有無を表す情報を含んでいれば、概念マップのデータの形態はここに説明したもの以外でも良い。なお、ここで使用する概念マップのデータとして、既に構築されている概念マップをそのまま用いても良いし、また新たに概念マップを構築しても良い。概念マップを構築する方法の一例は、膨大な量の言語資源に出現する概念を分析することである。ここで用いる言語資源は、たとえばインターネットを介して収集可能なウェブのテキストである。また、出現する概念の分析方法は、例えば、所定の構文における複数の概念の出現を分析したり、同一文脈において出現する複数の概念を分析したりすることである。また、ウェブサイトからダウンロードできるデータが、複数の概念間の関係を直接表している場合には、そこで得られる関係を直接用いるようにしても良い。例えば、Wikipedia（URL  https://ja.wikipedia.org/）などといった事典サイトは、概念間の関係をダウンロード可能な携帯で提供している。概念マップの実例については、次に説明する。
【００２８】
図２は、概念マップ記憶部２０が保持する概念マップの例を示す概略図である。実際の概念マップは非常に大規模なデータであり、その概念マップに含まれる概念の数は、数十万、数百万、あるいはそれ以上である。しかし、同図では、説明を簡単にするために、７個の概念からなる概念マップを例示している。図示するように、概念マップは、無向グラフで表される。そして、グラフの各ノードが１つの概念に対応する。また、グラフの各リンクは、概念間に直接の関係があることを表している。図示している概念マップに含まれている概念は、「病気」、「高血圧」、「成人病」、「糖尿病」、「風邪」、「発熱」、「インフルエンザ」の７個である。また、図示している概念マップに含まれるリンクを、そのリンクが結ぶ概念の対で表すと、「病気−高血圧」、「病気−成人病」、「病気−糖尿病」、「高血圧−成人病」、「糖尿病−成人病」、「病気−風邪」、「病気−インフルエンザ」、「風邪−発熱」、「インフルエンザ−発熱」の９個である。
【００２９】
概念マップ記憶部２０は、処理しやすいデータ形式で、概念マップの情報を保持する。概念マップ記憶部２０は、一例としては、ノードの識別子とそのノードが表す概念とを対応付ける表データと、リンクの識別子とそのリンクが結ぶ２個のノードの識別子の対とを対応付ける表データとして、概念マップの情報を保持する。なお、この例に限らず、一般にグラフを表現するために用いられるデータ形式を適用するようにしても良い。
【００３０】
次に、概念処理装置１が計算する概念間の関連度について説明する。
本実施形態において、概念間の関連度は、概念マップにおけるそれらの概念間のつながり方に応じて算出される。概念処理装置１による処理において、概念は既に述べたようにグラフ上のノードに対応している。また、概念間はリンクで結ばれている場合と結ばれていない場合とがある。１本のリンクは、隣接する概念同士をつなぐものであり、且つそれら隣接する概念同士のみをつなぐものである。ある概念から他のある概念に、概念マップ上を辿って到達できるとき、それら概念は互いに連結の状態にある。概念間が連結の状態にあることの条件は、その一方の概念から他方の概念に、１本以上のリンクを辿って到達できることである。そのときに辿るルートを、ここではパスと呼ぶ。パスは、１本または複数本のリンクによって成る。リンクが複数本の場合、パスは、それらのリンクを直列に連結させてなるものである。ある概念と他の概念が連結の状態にあるとき、それら両概念をつなぐパスは1本とは限らない。複数の異なるパスを通って、辿りつくこともできる場合もある。なお、１本のパスは、同じ概念を２度以上通らない。つまり、パスが途中で閉路を形成したり、後戻りしたりすることはない。本実施形態では、概念の重みに基づいて、その概念を含むパスの重みが算出される。また、パスの重みに基づいて、概念間の関連度が算出される。概念間の関連度は、また、当該概念間をつなぐパスの本数によっても決まる。
【００３１】
まず、概念処理装置１は、概念マップに含まれる各概念の重みを計算する。概念の重みは、関連度を計算する上でのその概念の重要性を表す数値である。概念の重みは、その概念から他の概念につながるリンクの本数に応じて算出される。そのリンクの数が少ないほど、その概念の重みの値は大きい。これは、ある概念からつながるリンクの本数が少ないほうがその概念は貴重な概念であるという前提による。より具体的には、概念の重みは、その概念からつながる他の概念へのリンクの本数の逆数の対数によって算出される。ただし、概念の重みの値を正規化するためには、概念マップ上の全概念数を上記のリンク本数で除した数値の対数を、その概念の重みとする。対数の底は、適宜定めて良い。
【００３２】
次に、概念処理装置１は、パスの重みを計算する。前述の定義にしたがうと、パス上には、複数の概念が存在する。パスの両端もまたそれぞれ概念である。パスの重みは、そのパスが含む各々の概念の重みによって算出される。より具体的には、パスの重みは、そのパスが含む各々の概念の重みの何らかの平均によって算出される。ここで、何らかの平均とは、例えば、単純な相加平均や、調和平均や、相乗平均などである。より具体的には、概念処理装置１は、各々の概念の重みの調和平均の値を、そのパスの重みの値として算出する。これは、実際の概念マップを用いた実験により、調和平均を用いることで最も好適なパスの重みが算出できることがわかったことによる。
【００３３】
次に、概念処理装置１は、パスの重みの値に基づき、概念間の関連度を算出する。本実施形態による概念間の関連度は、その概念間のパスの重みのうちの、最大の重みの値と、当該概念間に存在するパスの本数との積として算出される。
【００３４】
なお、現実的な計算量で概念間の関連度を算出するための手順については、後で説明する。その手順においては、妥当な計算量で概念マップを探索するために、探索する距離（＝１本のパスに含まれる直列なリンクの数）に上限を設ける。この上限の値はパラメーターとして設定することができる。なお、この手順を用いた場合の概念間の関連度は、有向的である。即ち、概念Ａから概念Ｂへの関連度の値と、逆の概念Ｂから概念Ａへの関連度の値とは、異なる場合がある。
【００３５】
整理すると、次の通りである。
このように概念処理装置１が算出する概念間の関連度は、当該概念間に存在するパスの本数に応じて求められる。つまり、パスの本数が多いほど、関連度の値は大きい。これは、様々なパスでつながっている概念同士は、互いに関連が高いという想定に整合する。
また、概念処理装置１が算出する概念間の関連度は、パスの重み（の最大値）に応じて求められる。つまり、パスの重みの最大値が大きいほど、関連度の値は大きい。これは、重要性の高いパスによってつながっている概念同士は、互いに関連が高いという想定に整合する。
また、概念処理装置１が算出するパスの重みは、そのパスが含む概念の重みに応じて求められる。概念の重みが大きいほど、パスの重みは大きい。パスの重みとして、概念の重みの調和平均を用いることが好ましいが、概念の重みの相乗平均を用いても良い。
【００３６】
ここで、概念重み算出部１２によって計算される概念の重みについて、説明する。
図３は、概念の重みを説明するための概略図であり、概念マップの一部分を示している。同図において、「Ａ」、「Ｃ」、「Ｄ」、「Ｅ」というラベルが付けられた丸印は、それぞれ概念に相当するノードである。また、ノードから伸びる線は、ノード間のリンクであり、概念と概念との間の直接の関係を表している。同図では、概念マップの一部分のみを示しているが、実際の概念マップは同図に示す範囲外にも伸びている。
【００３７】
同図では、概念マップの一部分のみを示しているが、この概念マップ全体のノード数（概念数）をＮとする。Ｎは正整数であり、例えば、Ｎ＝１００００である。概念の重みを説明するために、一例として、同図に示す「Ｃ」でラベル付けされたノードに着目する。このノード「Ｃ」からは、ノード「Ａ」、「Ｄ」、「Ｅ」への直接のリンクがつながっている。なお、このノード「Ｃ」からは、これらノード「Ａ」、「Ｄ」、「Ｅ」以外のノードへの直接のリンクはつながっていない。つまり、このノード「Ｃ」から直接つながる他のノードへのリンクの数は３である。
【００３８】
本実施形態における概念の重みは、次の式によって計算される。
概念の重み＝ｌｏｇ（Ｎ／ｎ）
ここで、Ｎは、上記の通り、概念マップ全体に含まれる全概念数である。また、ｎは、当該概念に直接つながる概念の数である。なお、対数の底は適宜定めればよいが、ここでは底を１０とする。図示した例において、ノード「Ｃ」に直接つながる他のノードの数は３（ｎ＝３）であり、概念マップに含まれる全ノード数は１００００（Ｎ＝１００００）である。よって、上の式により、ノード「Ｃ」に相当する概念の重みは、次のように計算される。
ノード「Ｃ」の概念の重み＝ｌｏｇ１０（１００００／３）＝３．５２
ただし、小数点第３位を四捨五入して丸めている。
【００３９】
図４は、概念の重みを保持するためのデータの構成を示す概略図である。このデータは、作業記憶部２２の所定の領域内に設けられる。図示するデータは、表形式のデータであり、ノードＩＤ、概念（ノードに対応した概念）、つながる概念、重みの各項目を有している。この表の１行が、１つの概念、即ち１つのノードに対応する。ノードＩＤは、概念マップ内のノードをユニークに識別するＩＤである。図示する例では、ノードＩＤとして整数値を用いている。概念の項目には、その概念を表す言葉が格納される。つながる概念の項目には、当該概念から直接のリンクによって連結されている概念のノードＩＤのリストが格納される。重みの項目には、当該概念について計算された重みの値が格納される。
【００４０】
同図では、表全体のうちの一部の値を示している。そのノードＩＤは、９８から１０２までの範囲である。また、それら各ノードの概念は、Ａ，Ｂ，Ｃ，Ｄ，Ｅである。ここで概念Ｃ（ノードＩＤは１００）に着目すると、その概念Ｃからつながる概念のノードＩＤは、９８，１０１，１０２の３個である。つまり、概念Ｃは、概念ＡとＤとＥとに、直接のリンクでつながっている（図３に例示した通り）。また、概念Ｃの重みとして、３．５２という値が格納されている。
【００４１】
ここで、パス重み算出部１４によって計算されるパスの重みについて、説明する。
図５は、パスの重みを説明するための概略図であり、概念マップの一部分を示している。同図において、「１」、「２」、「３」、「４」、「５」というラベルが付けられた丸印は、それぞれ概念に相当するノードである。また、ノードから伸びる線は、ノード間のリンクであり、概念と概念との間の直接の関係を表している。同図では、概念マップの一部分のみを示しているが、実際の概念マップは同図に示す範囲外にも伸びている。
【００４２】
パスとは、ある概念からある概念までのルートである。例えば同図において、ノード「１」からノード「５」までのパスは、少なくとも２つある。その第１のパスは、ノードの列として「１−２−３−５」と表される。また第２のパスは、同様にノードの列として「１−２−４−５」と表される。このように、両端のノードを含んで、パス上のノードを列として並べることにより、パスを表すことができる。そして、本実施形態では、パスの重みを、そのパス上の各ノード（両端のノードを含む）の重みの調和平均として定義する。
【００４３】
一般に、Ｍ個の数値ｗ１，ｗ２，・・・，ｗＭの調和平均は、次の式で表される。即ち、Ｍ／（１／ｗ１＋１／ｗ２＋・・・＋１／ｗＭ）である。
【００４４】
したがって、ノード「１」から「５」までの重み（つまり、概念の重み）が計算済であり、そのそれぞれをｗｎ１，ｗｎ２，・・・，ｗｎＭとしたとき、上記の第１のパスの重みと、第２のパスの重みは、それぞれ、次の式で表される。
（第１のパスの重み）＝４／（１／ｗｎ１＋１／ｗｎ２＋１／ｗｎ３＋１／ｗｎ５）
（第２のパスの重み）＝４／（１／ｗｎ１＋１／ｗｎ２＋１／ｗｎ４＋１／ｗｎ５）
【００４５】
図６は、作業記憶部２２が保持するデータの構成の一部を示す概略図である。同図に示すデータは、主に、パス重み算出部１４が概念マップ記憶部２０を参照しながら概念マップを探索する際に、一時的に記憶すべき情報を格納するための手段である。同図に含まれる各データ項目の意味は、次の通りである。
【００４６】
データ項目「計算対象の概念」は、概念マップの中でその時点で１個選ばれている概念であり、関連度を計算する対象となっている概念である。例えば、計算対象の概念が図２に示した概念マップにおける「病気」であるとき、概念処理装置１は、この概念「病気」から他の各概念への関連度を計算する。なお、計算対象の概念を、以下において便宜上、「概念Ａ」と呼ぶことがある。
データ項目「起点概念の配列」は、計算対象の概念から所定の距離（変数Ｄによって保持される値の距離）のパスを探索するときに起点となる概念を要素として持つ配列である。
データ項目「辿った概念数」は、その時点での計算対象の概念からの距離を保持するデータであり、上記の変数Ｄに対応するものである。
【００４７】
データ項目「起点の概念」は、その時点で起点として選択されている概念である。データ項目「起点の概念」には、上記の起点概念の配列の中から選択された１つの概念が格納される。なお、起点の概念を、以下において便宜上、「概念Ｃ」と呼ぶことがある。
データ項目「隣接概念の配列」は、上記の起点の概念に隣接する概念を要素として持つ配列である。ここで、概念が「隣接する」とは、ある概念と他の１つの概念とが、単一のリンクを隔ててつながっていることを意味する。例えば、図２で示した概念マップの例において、概念「病気」と概念「高血圧」とは互いに隣接する概念である。また、概念「発熱」と概念「風邪」とは互いに隣接する概念である。また、概念「糖尿病」と概念「風邪」とは、リンクによって直接つながっている関係にないため、これら両者は互いに隣接する概念ではない。なお、隣接概念（つまり、隣接概念の配列の一要素）を、以下において便宜上、「概念Ｂ」と呼ぶことがある。
【００４８】
なお、図６に示した各データ領域の使用例については、後で、処理実例として説明する。
【００４９】
図７は、作業記憶部２２が保持するデータの構成の一部を示す概略図である。同図に示すデータは、主に、パス重み算出部１４が概念マップ記憶部２０を参照しながら概念マップを探索する際に、各概念の関連度を算出するための数値等を記憶するものである。具体的には、パス重み算出部１４は、後で説明する処理手順により、計算対象の概念（概念Ａ）と各概念との間のパス（特に、複数のパスがある場合には、重みが最大となるパス）についての、情報を順次更新していく。なお、このデータは表形式のデータであり、この表の各行が、１つの概念に対応する。同図に含まれる各データ項目の意味は、次の通りである。
【００５０】
データ項目「概念」は、その概念を表す言葉のデータを格納する。例えば、図２で示した概念マップの例において、「高血圧」や「成人病」などといった言葉であって、その概念をユニークに特定する情報を、このデータ項目は格納する。また、パス重み算出部１４の処理手順に関連付けて言うと、このデータ項目によって表される概念は、前記の「概念Ｂ」に当たるものである。
【００５１】
データ項目「MAX_Weight」は、計算対象の概念（概念Ａ）から当該概念（概念Ｂ）までのパスの重みのうちの、最大の重みの値を保持する。一般的に、概念Ａと概念Ｂとの間が、所定の距離（MAX_Distance）内において連結されているとき、両概念相互間のパス（辿り得るルート）の数は１以上である。パス重み算出部１４は、これらのパスのうち、既に計算されたパスの重みの中の最大の値によってデータ項目「MAX_Weight」を更新する。
データ項目「MAX_Path」は、上記の「MAX_Weight」に対応するパスの情報を格納する。つまり、データ項目「MAX_Path」は、概念Ａと概念Ｂとの間のパスのうち、既に計算された重みが最大であるパスの情報を保持するためのものである。具体的には、データ項目「MAX_Path」は、そのパス上に含まれる概念（パスの両端の概念を含む）の列を、そのパスの情報として保持する。このような、パス上に含まれる概念の列の情報は、概念マップ上におけるパスをユニークに特定する。
【００５２】
データ項目「NUM_Path」は、概念Ａから概念Ｂまでのパスの数を格納するものである。なお、パス重み算出部１４が概念マップを探索するとき、このNUM_Pathの値は、次のように計算される。つまり、Ｄ＝ｎ（ただし、０≦ｎ＜MAX_Distance−１）のときの、概念Ａから概念Ｂまでのパスの数をNUM_PathＤ＝ｎ（Ａ，Ｂ）とする。また、Ｄ＝ｎのときの、概念Ａから概念Ｃまでのパスの数をNUM_PathＤ＝ｎ（Ａ，Ｃ）とする。ここで、NUM_PathＤ＝ｎ（Ａ，Ｂ）には、概念Ｃを通るパスの数は含まれていない。そして、Ｄ＝ｎ＋１において概念Ｃから概念Ｂへの直接のリンクによるパスを探索したとき（つまり、このＤ＝ｎ＋１において概念Ｃを経由して概念Ａから概念Ｂに至るパスが探索された）、次の式が成り立つ。
【００５３】
NUM_PathＤ＝ｎ＋１（Ａ，Ｂ）＝（NUM_PathＤ＝ｎ（Ａ，Ｂ））＋（NUM_PathＤ＝ｎ（Ａ，Ｃ））
【００５４】
次に、概念処理装置１による処理の手順について説明する。
図８および図９は、概念処理装置１による処理の手順を示すフローチャートである。これら両図は、フローチャートの結合子によって互いに結合されている。以下、このフローチャートに沿って、手順を説明する。
【００５５】
まずステップＳ１０（図８）において、パラメーター設定部１８は、最大距離（MAX_Distance）をパラメーターの値として付与する。具体的には、パラメーター設定部１８は、MAX_Distanceの設定値を、作業記憶部２２内の所定の領域に書き込む。付与されるMAX_Distanceの値は正整数である。このMAX_Distanceの値は、概念マップにおいて、概念から概念へとたどるときの最大距離を規定する。例えば、ある概念とある概念とが直接のリンクによって結ばれているとき、そのルートによる当該概念間の距離は１である。また、ある概念とある概念とが、途中に１個だけの中間概念を介してリンクによって間接的に結ばれているとき、そのルートによる当該概念間の距離は２である。つまり、ある概念とある概念とが１つまたは複数の中間概念を介してリンクによって間接的に結ばれているとき、そのルートをたどるときのリンク数が、当該概念間の距離である。
【００５６】
次にステップＳ２０において、概念重み算出部１２は、概念マップに含まれる各概念について、その概念と直接のリンクによって結ばれている概念を列挙した、概念のリストを作成する。概念重み算出部１２は、その概念のリストを、図４に示した表の中の、つながる概念の欄に書き込む。また、概念重み算出部１２は、そのつながる概念のリストに基づいて、各概念の重みを計算する。計算方法は、既に述べたようにｌｏｇ（Ｎ／ｎ）の数式による。概念重み算出部１２は、各概念について計算した値を、図４に示した表の中の重みの欄に書き込む。
【００５７】
次のステップＳ３０から、Ｓ９０およびＳ１００までの処理は、パス重み算出部１４が概念マップを辿りながら、パスの重みを算出し、更新していく処理である。
【００５８】
ステップＳ３０において、パス重み算出部１４は、計算対象となる概念（概念Ａと呼ぶ）を起点概念の配列に格納する。つまり、計算対象となる概念が、起点概念の初期値である。また、パス重み算出部１４は、辿る距離をカウントするための変数であるＤの値を０に初期化する。この変数Ｄは、概念マップにおいて、概念から概念へとたどるときの、その時点でのパスの長さ（パスに含まれるリンク数）の値を記憶する。この変数Ｄのあたいと、上述したパラメーターであるMAX_Distanceの値との関係によって、概念処理装置１は、概念マップの探索の終了条件を判断する。
【００５９】
次にステップＳ４０において、パス重み算出部１４は、起点概念の配列からひとつ選んだ概念を、起点の概念（概念Ｃと呼ぶ）とする。パス重み算出部１４は、メモリー内の起点の概念を格納する領域に、その選ばれた概念を書き込む。そして、パス重み算出部１４は、その起点の概念（概念Ｃ）から直接のリンクでつながる先の概念のすべてを、隣接概念の配列に書き込む。このとき、パス重み算出部１４は、概念マップ記憶部２０を参照して概念Ｃにつながる概念を得ても良く、また既に作成した図４のデータを参照することによって概念Ｃにつながる概念を得ても良い。
【００６０】
次にステップＳ５０において、パス重み算出部１４は、隣接概念の配列の中の各概念（概念Ｂと呼ぶ）について、概念Ａから概念Ｃを経由して概念Ｂまでのパスの重みを算出する。そして、そのパスについて計算された重みが、既に計算済の概念Ａから概念Ｂまでのパスの重み（MAX_Weight（Ａ，Ｂ）として計算済の重みの値）よりも大きい場合には、そのMAX_Weight（Ａ，Ｂ）を更新するとともに、そのパスの情報をMAX_Path（Ａ，Ｂ）の値として記録する。そのパスとは、MAX_Path（Ａ，Ｃ）に既に記録されているパスを延長して概念Ｂまで伸ばしたものである。言い換えれば、そのパスとは、MAX_Path（Ａ，Ｃ）に既に記録されているパスに概念Ｂを連結したものである。
なお、MAX_Weight（Ａ，Ｂ）として計算済の値がまだなかった場合には、今回計算された値を、パスの重み値MAX_Weight（Ａ，Ｂ）として記憶するようにする。また、その重みに対応するパスを、MAX_Path（Ａ，Ｂ）として記憶するようにする。
【００６１】
なお、上のステップＳ５０の処理において、隣接概念の配列から取り出した概念（概念Ｂ）が、計算対象の概念（概念Ａ）自身である場合には、パス重み算出部１４は、そのパスの重みを計算したり、そのパスをMAX_Pathとして記録したりしない。
【００６２】
次にステップＳ６０において、上のステップＳ５０で処理対象とした概念Ｂの各々について、概念Ａから概念Ｂへのパス数を更新する。つまり、それまでのNUM_Path（Ａ，Ｂ）の値にNUM_Path（Ａ，Ｃ）の値を加え、その加算の結果を新たなNUM_Path（Ａ，Ｂ）の値とする。これは、概念Ａから概念Ｃを経由して概念Ｂに至るパスが新たに探索されたことに対応する。
【００６３】
次にステップＳ７０において、パス重み算出部１４は、起点概念の配列の中に未計算の概念が残っているか否かを判断する。起点概念の配列の中に未計算の概念が残っている場合（ステップＳ７０：ＹＥＳ）には、パス重み算出部１４は、次の起点概念についての計算を行うためにステップＳ４０に戻る。起点概念の配列の中に未計算の概念が残っていない場合（ステップＳ７０：ＮＯ）には、パス重み算出部１４は、次のステップＳ８０に進む。
【００６４】
図９に移り、ステップＳ８０において、パス重み算出部１４は、距離をカウントするための変数であるＤの値をインクリメントする。
【００６５】
そして、ステップＳ９０において、パス重み算出部１４は、変数Ｄの値がパラメーター値MAX_Distanceに達したか否かを判断する。具体的には、Ｄ＜MAX_Distanceの不等式を満たすか否かを判断する。Ｄ＜MAX_Distanceであるとき、即ち、探索しているパスの距離がまだ設定された最大値MAX_Distanceに達していないとき（ステップＳ９０：ＹＥＳ）は、ステップＳ１００に移り、パス重み算出部１４による処理を続ける。つまりこの場合、パス重み算出部１４は、ステップＳ８０でインクリメントされた新たなＤの値についてパスを探索してパスの重みを算出する処理を続ける。一方、Ｄ＜MAX_Distanceではないとき、即ち、探索しているパスの距離が設定された最大値MAX_Distanceに達したとき（ステップＳ９０：ＮＯ）は、ステップＳ１１０の関連度算出部１６による処理に移る。
【００６６】
そして、ステップＳ１００に移った場合、同ステップにおいて、パス重み算出部１４は、ステップＳ５０とＳ６０で処理した各概念（概念Ｂ）を、起点概念の配列（図６を参照）に書き込む。そして、次にステップＳ４０（図８）に制御を戻し、処理を繰り返す。
【００６７】
そして、ステップＳ１１０に移った場合、同ステップにおいて、関連度算出部１６は、ここまでの処理で計算されたパスの重み、およびパスの数に基づいて、概念間の関連度を計算する。具体的には、関連度算出部１６は、元の計算対象の概念（概念Ａ）からパラメーターMAX_Distanceに設定された範囲内で辿り着くルートが２個以上ある概念（概念Ｂ）について、次に示す式による関連度を計算する。即ち；
（１）概念Ａから概念Ｂへの関連度は、概念Ａから概念ＢへのMAX_Weightの値に、概念Ａから概念Ｂへのパスの数NUM_Pathの値を乗じたものとする。つまり、概念Ａから概念Ｂへの関連度は、MAX_Weight（Ａ，Ｂ）×NUM_Path（Ａ，Ｂ)とする。
（２）ただし、上記（１）で算出される関連度を、次のように正規化する。つまり、正規化後の概念Ａから概念Ｂへの関連度は、上記（１）の式で計算された概念Ａから概念Ｂへの関連度を、概念Ａから各概念への関連度の総和で除したものとする。つまり、この正規化後の関連度は、｛MAX_Weight（Ａ，Ｂ）×NUM_Path（Ａ，Ｂ)｝／（概念Ａから概念マップ上の各概念への関連度の総和）である。このように正規化することにより、概念マップのサイズに依存しない値を算出することができる。
【００６８】
なお、上記のステップＳ１１０の処理において元の計算対象の概念（概念Ａ）からパラメーターMAX_Distanceに設定された範囲内で辿り着くルートが２個以上ある概念（概念Ｂ）に限定して関連度を計算した理由は、次の通りである。即ち、概念Ａから概念Ｂへ辿り着くルートが１個しかないような概念Ｂは、概念Ａとの関連度は充分に小さく、関連がないものと見なしてしまって差し支えないためである。
【００６９】
次に、ステップＳ１２０において、概念処理装置１は、計算対象の概念であって且つ未計算の概念があるか否かを判定する。未計算の概念がある場合（ステップＳ１２０：ＹＥＳ）には、次の計算対象の概念についての処理に移るために、ステップＳ３０（図８）に戻る。未計算の概念がある場合（ステップＳ１２０：ＮＯ）には、このフローチャート全体の処理を終了する。
【００７０】
［処理の実例］
次に、処理の実例について説明する。なお、以下の説明の中で、図１１，図１２，図１３，図１４に言及する。これらの図面は、下で述べる処理実例の過程におけるメモリー（作業記憶部２２）の状態を示す概略図である。図１１は、図６で説明した記憶領域が保持する値の推移を示すものである。また、図１２，図１３，図１４は、図７で説明した記憶領域が保持する値の推移を示すものである。
【００７１】
本例の処理が対象とする概念マップは、図２に示したものである。同図に示す概念マップの例には、「病気」、「高血圧」、「糖尿病」、「成人病」、「風邪」、「インフルエンザ」、「発熱」という７つの概念が含まれる。これらの概念の各々は、概念マップのグラフにおけるノードに対応する。そして、ノード間を結ぶリンクが、概念間の関係に対応している。同図に例示するグラフには、病気−高血圧、病気−成人病、病気−糖尿病、病気−風邪、病気−インフルエンザ、成人病−高血圧、成人病−糖尿病、風邪−発熱、インフルエンザ−発熱というリンクが含まれている。
【００７２】
以下に処理手順にしたがって、処理例を説明する。なお、以下の処理例の説明において言及するステップ番号は、図８および図９のフローチャートで示した手順におけるステップ番号である。
ステップＳ１０：まず、概念処理装置１のパラメーター設定部１８は、パラメーターMAX_Distanceの値を、本処理例では、２に設定する。
【００７３】
ステップＳ２０：次に、概念重み算出部１２は、概念マップに含まれる各概念について、直接つながっている概念を列挙したリストを作成するとともに、重みを計算する。
【００７４】
図１０は、このステップＳ２０で作成された、各概念に関する情報を保持するテーブルの実例を示す概略図である。図示するように、このテーブルは表形式の構造を有しており、その各行が概念マップに含まれる概念（ノード）に対応する。そして、各桁は、データ項目（属性）に対応しており、ノードＩＤ、概念（ノード）、つながる概念（ノード）、重みの各桁が存在する。
【００７５】
ノードＩＤは、各概念に対して便宜的に付与された識別情報である。図示する例では、１から７までの数値がノードＩＤとして付与されている。
概念（ノード）は、その概念を表す言葉である。本例では、「病気」、「成人病」などといった言葉がこの欄に格納されている。
つながる概念（ノード）は、当該概念から直接のリンクでつながっている先の概念（ノード）のリストである。例えば、ノード「病気」から直接のリンクでつながるノードは５個あり、それらは、「高血圧」、「成人病」、「糖尿病」、「風邪」、「インフルエンザ」である。概念「病気」についての、つながる概念の欄には、これら５個のリンク先の概念が列挙されたリストが格納されている。
重みは、当該概念（ノード）についての重みの値を格納する。この概念マップに現れる全概念数が７であるため、例えば、概念「病気」（直接つながる先の概念数が５）についての重みは、前述の定義ｌｏｇ（Ｎ／ｎ）により、ｌｏｇ（７／５）、つまり０．１５（小数点第３位を四捨五入して丸めている）である。また例えば、概念「高血圧」（直接つながる先の概念数が５）についての重みは、同様に、ｌｏｇ（７／２）、つまり０．５４である。他の概念についての重みも同様である。
【００７６】
［Ｄ＝０，起点の概念が「病気」］
ステップＳ３０：次に、パス重み算出部１４は、計算対象の概念を１個選び、その概念を、メモリー内の、計算対象の概念の領域に格納する。また、概念処理装置１は、起点からの距離として、辿った概念数の値を初期化する。即ち、メモリー内の辿った概念数の領域に、Ｄ＝０という値を書き込む。また、概念処理装置１は、ここで選択された計算対象の概念のみを、メモリー内の起点概念の配列の要素として格納する。
ステップＳ４０：次に、パス重み算出部１４は、メモリー内の起点概念の配列からひとつ選んだ概念を、起点の概念とする。そして、概念処理装置１は、その選ばれた概念をメモリー内の起点の概念の領域に書き込む。現在、起点概念の配列に書き込まれている要素は「病気」のみであるため、概念処理装置１は、メモリー内の起点の概念の領域に「病気」を書き込む。さらに、概念処理装置１は、その起点の概念から直接つながる概念をすべて、隣接概念の配列に書き込む。具体的には、「病気」から直接つながる概念は、「高血圧」、「成人病」、「糖尿病」、「風邪」、「インフルエンザ」の５個であるので、概念処理装置１は、これら５個の概念を隣接概念の配列の領域に書き込む。
上記のステップＳ３０およびＳ４０の処理を終えた時点でのメモリー内の状態は、図１１のａの行に示すとおりである。
【００７７】
次に、パス重み算出部１４は、隣接概念の配列に格納されている各概念について、下の通り、ステップＳ５０とステップＳ６０の処理を、順次行う。つまり、概念処理装置１は、図１１の起点概念の配列に格納されている概念の各々を起点の概念として、計算対象の概念（現状況では、「病気」）と、隣接概念の配列に格納されている要素である概念との間の関連度を計算する。関連度は、現在辿っているパス上の各概念（パスの両端の概念を含む）の重みの調和平均として算出される。また、ここで計算した関連度が、既に計算されている関連度よりも大きい場合には作業記憶部２２に記憶されている情報（図７に示したテーブル）を更新するが、現状況では関連度を計算する初回であるため、各概念についてパスの重み（各概念についてのMAX_Weight）を更新する。また、このパスの重みを更新する際には、あわせて、その関連度が算出されたときのパスを記録する（各概念についてのMAX_Pathを更新）。
【００７８】
（１）隣接概念の配列から、まず、概念Ｂとして「高血圧」を取り出す。
ステップＳ５０：計算対象の概念「病気」と、隣接概念の配列に格納されている要素である概念（概念Ｂ）「高血圧」との間の関連度は、「病気」の重みである０．１５（図１０を参照。以下においても同様。）と、「高血圧」の重みである０．５４との調和平均として求められる。そして、その値は０．２３（小数点第３位を四捨五入して丸めている。以下においても同様。）である。また、この関連度に対応するパスは、病気−高血圧というパスである。つまり、概念「高血圧」に関しては、MAX_Weight＝０．２３であり、MAX_Path＝「病気，高血圧」である。
ステップＳ６０：ここで、パス数（NUM_Path）を更新する。Ｄ＝０の場合のみ特殊であり、ここでは、NUM_Path（Ａ，Ｃ）＝NUM_Path（病気，病気）＝１として計算する。つまり、概念「高血圧」に関して、NUM_Pathの値は１に更新される。
【００７９】
（２）隣接概念の配列から、次に概念Ｂとして「成人病」を取り出す。
ステップＳ５０：計算対象の概念「病気」と、隣接概念の配列から選んだ概念Ｂである「成人病」との間の関連度は、「病気」の重みである０．１５と、「成人病」の重みである０．３７との調和平均として求められる。そして、その値は０．２１である。また、この関連度に対応するパスは、病気−成人病というパスである。つまり、概念「成人病」に関しては、MAX_Weight＝０．２１であり、MAX_Path＝「病気，成人病」である。
ステップＳ６０：上記の「高血圧」の場合と同様に、Ｄ＝０の場合のみ特殊であり、NUM_Path（Ａ，Ｃ）＝NUM_Path（病気，病気）＝１として計算する。つまり、「成人病」についても、NUM_Pathの値は１に更新される。
【００８０】
（３）隣接概念の配列から、次に概念Ｂとして「糖尿病」を取り出す。
ステップＳ５０：計算対象の概念「病気」と、隣接概念の配列から選んだ概念Ｂである「糖尿病」との間の関連度は、「病気」の重みである０．１５と、「糖尿病」の重みである０．５４との調和平均として求められる。そして、その値は０．２３である。また、この関連度に対応するパスは、病気−糖尿病というパスである。つまり、概念「糖尿病」に関しては、MAX_Weight＝０．２３であり、MAX_Path＝「病気，糖尿病」である。
ステップＳ６０：上記の「高血圧」の場合と同様に、Ｄ＝０の場合のみ特殊であり、NUM_Path（Ａ，Ｃ）＝NUM_Path（病気，病気）＝１として計算する。つまり、「糖尿病」についても、NUM_Pathの値は１に更新される。
【００８１】
（４）隣接概念の配列から、次に概念Ｂとして「風邪」を取り出す。
ステップＳ５０：計算対象の概念「病気」と、隣接概念の配列から選んだ概念Ｂである「風邪」との間の関連度は、「病気」の重みである０．１５と、「風邪」の重みである０．５４との調和平均として求められる。そして、その値は０．２３である。また、この関連度に対応するパスは、病気−風邪というパスである。つまり、「風邪」に関しては、MAX_Weight＝０．２３であり、MAX_Path＝「病気，風邪」である。
ステップＳ６０：上記の「高血圧」の場合と同様に、Ｄ＝０の場合のみ特殊であり、NUM_Path（Ａ，Ｃ）＝NUM_Path（病気，病気）＝１として計算する。つまり、「風邪」についても、NUM_Pathの値は１に更新される。
【００８２】
（５）隣接概念の配列から、次に概念Ｂとして「インフルエンザ」を取り出す。
ステップＳ５０：計算対象の概念「病気」と、隣接概念の配列から選んだ概念Ｂである「インフルエンザ」との間の関連度は、「病気」の重みである０．１５と、「インフルエンザ」の重みである０．５４との調和平均として求められる。そして、その値は０．２３である。また、この関連度に対応するパスは、病気−インフルエンザというパスである。つまり、「インフルエンザ」に関しては、MAX_Weight＝０．２３であり、MAX_Path＝「病気，インフルエンザ」である。
ステップＳ６０：上記の「高血圧」の場合と同様に、Ｄ＝０の場合のみ特殊であり、NUM_Path（Ａ，Ｃ）＝NUM_Path（病気，病気）＝１として計算する。つまり、「インフルエンザ」についても、NUM_Pathの値は１に更新される。
【００８３】
以上、Ｄ＝０の段階として、計算対象の概念である「病気」と、辿っている概念（隣接概念の配列に格納されている要素であった各概念）との間の関連度が計算された。
図１２は、この段階での各概念についての計算結果を格納するテーブル（図７に示したテーブル）の状態を示す概略図である。図示するように、１行目の「高血圧」、２行目の「成人病」、３行目の「糖尿病」、４行目の「風邪」、５行目の「インフルエンザ」のそれぞれについて、MAX_Weightと、MAX_Pathと、NUM_Pathの値が格納されている。
【００８４】
ステップＳ８０：次に、Ｄがインクリメントされ、Ｄ＝１となる。
ステップＳ９０：MAX_Distance＝２と設定されているため、Ｄ＜MAX_Distanceの条件を満たす。よって、ステップＳ１００に進む。
【００８５】
ステップＳ１００：パス重み算出部１４は、ステップＳ５０，Ｓ６０，Ｓ７０のループを繰り返した際に計算した各概念を起点概念の配列に格納する。つまり、図１１のｂに示すように、起点概念の配列に、「高血圧」、「成人病」、「糖尿病」、「風邪」、「インフルエンザ」の各要素を格納する。次に、ステップＳ４０の処理に戻る。
【００８６】
ステップＳ４０：パス重み算出部１４は、起点概念の配列から、まず概念「高血圧」を選び、この「高血圧」を起点の概念（概念Ｃ）とする。そして、この概念Ｃからつながる先の概念（概念Ｃに隣接する概念）をすべて隣接概念の配列に格納する。具体的には、隣接概念の配列に、「成人病」、「病気」の各要素を格納する。このときが、図１１のｂに示す状態である。
【００８７】
隣接概念の配列内の「成人病」について、ステップＳ５０，Ｓ６０の処理を行う。
ステップＳ５０：パス重み算出部１４は、辿って来た「病気−高血圧−成人病」というパスについて重みを計算する。それは０．１５（概念「病気」の重み）と０．５４（概念「高血圧」の重み）と０．３７（概念「成人病」の重み）の調和平均であり、その値は０．２７である。
この０．２７という値は、これまでに計算した「病気」から「成人病」までの重みである０．２１（図１２の第２行目を参照）よりも大きい（重い）ので、MAX_Weight（Ａ，Ｂ）を更新する。また、合わせて、MAX_Pathを、この０．２７という新たな重みに対応するパスで更新する。つまり、MAX_Weight＝０．２７とし、MAX_Path＝「病気，高血圧，成人病」とする。
図１３は、このときのテーブル（図７に示したテーブル）の状態を示す概略図である。図示するように、概念「成人病」について、MAX_WeightとMAX_Pathが更新されている。
【００８８】
ステップＳ６０：パス重み算出部１４は、NUM_Pathの値（パス数）を更新し、NUM_Path＝２とする。つまり、Ｄ＝１におけるNUM_Path（病気→成人病）は、Ｄ＝０におけるNUM_Path（病気→成人病）の値と、Ｄ＝０におけるNUM_Path（病気→高血圧）の値とを足し算したものである。つまり、Ｄ＝０におけるNUM_Path（Ａ，Ｂ）に、Ｄ＝０におけるNUM_Path（Ａ，Ｃ）を加えている。
図１４は、このときのテーブル（図７に示したテーブル）の状態を示す概略図である。図示するように、概念「成人病」について、NUM_Pathも更新されている。
【００８９】
なお、概念「病気」は、計算対象の概念そのものであるので、「病気−高血圧−病気」というパスについては計算を行わない。
【００９０】
以下、詳細な説明を省略するが、起点概念の配列に格納されている概念であって、重みの計算が未だ完了していない概念について、ステップＳ５０，Ｓ６０の計算手順を繰り返す。つまり、「成人病」、「糖尿病」、「風邪」、「インフルエンザ」の各概念について、ステップＳ５０，Ｓ６０の計算手順を繰り返す。この過程で、概念「病気」から上記各概念への、Ｄ＝１の時点でのMAX_PathおよびNUM_Pathを求める。
【００９１】
ステップＳ８０：次に、Ｄがインクリメントされ、Ｄ＝２となる。
ステップＳ９０：MAX_Distance＝２と設定されているため、Ｄ＜MAX_Distanceの条件を満たさない。よって、ステップＳ１１０に進む。
【００９２】
ステップＳ１１０：関連度算出部１６は、概念「病気」から各概念までの関連度を、MAX_Weight×NUM_Pathにより計算し、またその値を正規化する。但し、この計算をするのは、概念「病気」から辿り着くルートが２個以上ある概念に限る。
そして、概念処理装置１は、上記の乗算MAX_Weight×NUM_Pathによって計算された、概念「病気」と各概念との間の関連度（正規化済）を出力する。
これで、計算対象の概念「病気」についての処理を終えた。
なお、関連度算出部１６は、算出した関連度の情報を、関連度記憶部３０に書き込む。
【００９３】
ステップＳ１２０：未計算の計算対象の概念（つまり、上記の「病気」以外の計算対象の概念）があるかどうかを判定する。ある場合には、ステップＳ３０に移って処理を続ける。ない場合には、図８および図９示したフローチャート全体の処理を終了する。
【００９４】
なお、以上述べた方法によって算出される関連度は、有向なものである。言い換えれば、算出される関連度の値は概念から概念への向きに依存する。例えば、概念「病気」から概念「風邪」への関連度の値と、概念「風邪」から概念「病気」への関連度の値とは、異なる。
【００９５】
以上、説明したように、第１実施形態の概念処理装置１によれば、概念マップのデータから、ある概念から他の概念への関連度を算出することができる。このとき、実際の文章例からなる言語資源等のデータを必要とせず、概念処理装置は、概念マップのデータのみから、上記の関連度を算出することができる。
また、第１実施形態の概念処理装置１によれば、現実的に妥当な限られた計算量で、上記の関連度を算出することができる。その要因の一つは、概念マップを探索する際の距離の上限（MAX_Distance）を設けていることである。
また、第１実施形態の概念処理装置１が算出する概念間の関連度は、現実の概念マップに適用したときに良好な値として計算される。これは、算出のための処理手順や計算方法を特に工夫したことによる。
【００９６】
また、第１実施形態として記載した技術によると、広い概念（例えば、概念「日本のスポーツ」など）については、隣接する概念数が多いため、概念の重みが小さくなる。よって、このような広い概念が関わる関連度の値は小さくなる。また、狭すぎる概念（例えば、特定の放送局による特定の番組を表す「ＮＨＫサンデースポーツ」など）については、そのような概念が含まれるパスの総数が少なくなるため、そういう概念が関わる関連度の値は、やはり小さくなる。つまり、両極端な概念については、関連度を低くする作用を有する。つまり、ノイズに関しては低い関連度を算出することができる。つまり、概念におけるノイズの影響を軽減しながら、情報検索等の処理を行うことができるようになる。
【００９７】
［第２実施形態］
次に、本発明の第２実施形態について説明する。なお、前述の実施形態と共通する事項については説明を省略する場合があり、本実施形態特有の事項を中心に説明する。
図１５は、本実施形態による概念処理装置の概略機能構成を示すブロック図である。図示するように、概念処理装置２は、概念重み算出部１１２と、パス重み算出部１１４と、関連度算出部１１６と、パラメーター設定部１８と、概念マップ記憶部２０と、作業記憶部２２と、関連度記憶部３０と、類似度取得部１４０と、を含んで構成される。
本実施形態の特徴は、類似度取得部１４０を備えている点と、重みの計算方法および関連度の計算方法が第１実施形態と異なる点である。
【００９８】
本実施形態による概念処理装置２では、類似度取得部１４０が、外部から概念間の類似度を表す類似度データを取得する。そして、パス重み算出部１１４は、類似度取得部１４０が取得した類似度データを参照することによって概念間の類似度を用いながら、パスの重みを算出する。つまり、パス重み算出部１１４は、概念マップ記憶部２０に記憶された概念マップを辿るパスの重みを求める際に、外部から与えられた類似度の値を、初期値として利用する。つまり、パス重み算出部１１４は、前記パスについて、当該パス上に含まれるリンクが結ぶ概念の対に関する類似度を前記類似度データから取得し、取得した前記類似度にも応じて前記パスの重みの値を算出する。
【００９９】
図１６は、類似度取得部１４０が取得する類似度データの構成を示す概略図である。図示するように類似度データは表形式のデータであり、項目として、概念１、概念２、類似度を有している。概念１と概念２は、それぞれ、概念マップ内に含まれる概念に対応する。そして、データ項目「類似度」は、概念１と概念２との間の類似度の値を保持する。なお、類似度データが情報として概念間の類似度の値を含むものであれば、データの形式等については図示したデータと異なるものであっても良い。
【０１００】
類似度の値は、外部から供給されるものであり、各種手法を用いることによって概念間の類似度を与えることができる。概念間の類似度の一例は、文脈類似度である。文脈類似度を求める方法自体は、既存技術である。文脈類似度を求めるためには、大量の文章からなる言語資源を取得し、言語資源に含まれる各文の構文解析を行い、語が出現する文脈についての統計的な分析を行う。ここで、語は、概念に対応する。また、ここで言う文脈とは、言語資源に含まれる文章において、ある概念（語）が出現するときのその概念の周りの概念（語）の統計的な特徴や、ある概念（語）が出現するときの構文における位置付け等である。周りの概念（語）の統計的な特徴は、一例として、周りの概念（語）に基づく単語ベクトルで表される。この単語ベクトルは、各要素が語に対応する多次元（例えば、数万ないしは数十万次元）のベクトルであり、各要素はその語がその文脈において出現しているか否かを表す。そして、似たような文脈において出現しやすい傾向にある概念（語）同士は、その傾向が強いほど文脈類似度が高い。これは、ある概念（語）はその周囲の概念や構文等の文脈によって特徴づけられる、という前提に基づく。
【０１０１】
本実施形態による重みの求め方は、次の通りである。
概念重み算出部１１２は、次の式により、概念の重みを算出する。
（概念の重み）＝ｌｏｇ（N／ｎ）
ここで、ｎは当該概念から他の概念に直接つながるリンク数である。また、Ｎは概念マップ内に含まれる全概念数である。
【０１０２】
そして、パス重み算出部１１４は、次の式（Ａ１），（Ａ２），（Ａ３）のいずれかにより、隣接する概念ＡおよびＢの間のパスの重みを算出する。
式（Ａ１）：  （隣接する概念間のパスの重み）＝ｓｉｍ（Ａ，Ｂ）×（概念Ａの重み＋概念Ｂの重み）
式（Ａ２）：  （隣接する概念間のパスの重み）＝ｓｉｍ（Ａ，Ｂ）×（概念Ａの重み×概念Ｂの重み）
式（Ａ３）：  （隣接する概念間のパスの重み）＝ｓｉｍ（Ａ，Ｂ）×ｍｉｎ（概念Ａの重み，概念Ｂの重み）
なお、パス重み算出部１１４は、上の式（Ａ１），（Ａ２），（Ａ３）のいずれかを用いるが、これらいずれかのうち選択された式を一貫して用いる。つまり、概念間の関連度を算出するときに、途中で概念間のパスの重みの計算式を変更することはない。
【０１０３】
ここで、ｓｉｍ（Ａ，Ｂ）は、概念Ａと概念Ｂの間の類似度であり、前記の類似度取得部１４０が取得した類似度データで、その値を参照することができる。
また、ｍｉｎ（概念Ａの重み，概念Ｂの重み）は、引数の中の最小値を返す最小値関数を、各重みに適用したものである。つまり、ｍｉｎ（概念Ａの重み，概念Ｂの重み）は、概念Ａの重みと概念Ｂの重みのいずれか小さいほうの値を返す。
【０１０４】
パス重み算出部１１４は、ある概念（Ａ）から他の概念（Ｂ）への関連度を計算する際に、それら両概念が隣接している場合には、上記の式（Ａ１），（Ａ２），（Ａ３）のいずれかで得られる値をそのまま、その重みとする。
【０１０５】
また、ある概念（Ａ）から、直接つながっていない（隣接していない）他の概念（Ｂ）への重みを計算する際には、パス重み算出部１１４は、次の計算を行う。即ち、それら両概念間をつなぐパスに含まれる各リンクについての重み（式（Ａ１），（Ａ２），（Ａ３）のいずれか）の、調和平均（Ｂ１）または相乗平均（Ｂ２）を算出する。
例えば、距離が２の概念間の重みは、下の式（Ｂ１），（Ｂ２）のいずれかによって計算される。
【０１０６】
式（Ｂ１）：  （概念ＡからＢへの重み）＝（２×概念ＡからＣへの重み×概念ＣからＢへの重み）／（概念ＡからＣへの重み＋概念ＣからＢへの重み）
式（Ｂ２）：  （概念ＡからＢへの重み）＝ＳＱＲＴ（概念ＡからＣへの重み×概念ＣからＢへの重み）
なお、パス重み算出部１１４は、上の式（Ｂ１），（Ｂ２）のいずれかを用いるが、これらいずれかのうち選択された式を一貫して用いる。つまり、概念間の関連度を算出するときに、途中でこの重みの計算式（調和平均か相乗平均のいずれか）を変更することはない。
【０１０７】
ここで、概念ＡからＣへは直接のリンクでつながっており、概念ＣからＢへは直接のリンクでつながっている。つまり、概念ＡとＢとの間の距離は２であり、概念Ｃを間に介している。
また、上の式（Ｂ２）におけるＳＱＲＴ（）は、引数の平方根を返す関数である。
概念Ａから概念Ｂの距離が２より大きい場合にも、パス重み算出部１１４は、上記の式（Ｂ１）または（Ｂ２）をそれぞれ拡張して、調和平均または相乗平均により、パスの重みを算出する。
【０１０８】
関連度算出部１１６は、次の（Ｃ１）または（Ｃ２）のいずれかの方法により、概念ＡからＢへの関連度を求める。
（Ｃ１）パス重み算出部１１４が算出した概念ＡからＢへのパスの重みを、そのまま概念ＡからＢへの関連度として出力する（関連度記憶部３０に書き込む）。なお、概念ＡからＢへのパスが複数存在するときには、次のいずれかの方法により、代表のパスを選択する。
（Ｃ１−１）最も短いパスを採用する。
（Ｃ１−２）重み（パスの重み）が最も大きいパスを採用する。
【０１０９】
（Ｃ２）概念ＡからＢへのパスの重みのうちの最大の重み（パスの重み）と、概念ＡからＢへのパスの数とを乗算し、その結果を概念ＡからＢへの関連度として出力する（関連度記憶部３０に書き込む）。なお、この（Ｃ２）の方法を採る場合には、第１実施形態におけるフローチャートで説明した処理手順（概念マップを探索するための手順）を利用することもできる。
なお、関連度算出部１１６は、上の（Ｃ１），（Ｃ２）のいずれかの方法を用いる（（Ｃ１）の場合にはさらに（Ｃ１−１），（Ｃ１−２）のいずれかの方法を用いる）が、これらのうち選択された方法を一貫して用いる。つまり、概念間の関連度を算出するときに、途中でこの関連度の求め方を変更することはない。
【０１１０】
第２実施形態の概念処理装置２によれば、外部から取得する概念間の類似度のデータを使って、また、概念の重みやパスの重みなど（あるいはその両方）に応じて、概念間の関連度を算出することができる。既に類似度のデータが外部から提供されている場合には、そのデータを良好に反映した関連度を得ることができる。
【０１１１】
［第３実施形態］
次に、本発明の第３実施形態について説明する。なお、前述の実施形態と共通する事項については説明を省略する場合があり、本実施形態特有の事項を中心に説明する。
本実施形態による概念処理装置の機能構成を示すブロック図は、図１として示したブロック図と同様である。
第１実施形態の概念処理装置は、概念間のパスの重みの最大値（複数あるパスのうちの、重みが最大であるパスの重み）と、当該概念間のパスの数とを乗算することによって当該概念間の関連度を算出した。これに対して、本実施形態では、概念Ａから概念Ｂに至るパスが複数存在する場合、それら各々のパスの重みの総和に基づいて関連度を求める。
【０１１２】
具体的には、次の通りである。
本実施形態の、概念重み算出部１２は、第１実施形態と同様の方法により、各概念の重みを計算する。
次に、パス重み算出部１４は、概念Ａと概念Ｂとの間のすべてのパスについて、それぞれパスの重みを計算する。ある一つのパスの重み自体は、第１実施形態と同様に、そのパスに含まれるすべての概念（両端の概念を含む）の重みの調和平均である。なお、ここで計算対象としている概念Ａと概念Ｂとの間のパスは、途中で同じ概念を２度以上通らないようなパスである。つまり、パスの一部に閉路を含んだり、パスの途中での後戻りを含んだりしない。
なお、概念マップのサイズが有限である（概念マップに含まれる概念の数が有限である）とき、概念Ａと概念Ｂとの間のパスの数は有限である。
また、ここで計算対象とする概念Ａと概念Ｂとの間のパスに関して、その長さに制約を設けるようにしても良い。つまりこのとき、パラメーター設定部１８によって設定されるパラメーターMAX_Distanceの値のリンク数で辿り着かないようなパスについては、計算から除外する。
【０１１３】
そして、関連度算出部１６は、概念Ａと概念Ｂとの間の各パスの重みの総和を求め、その総和を概念Ａから概念Ｂへの関連度として出力する。具体的には、関連度算出部１６は、算出された関連度を関連度記憶部３０に書き込む。
【０１１４】
この第３の実施形態によれば、重みが最大であるパスによって概念Ａと概念Ｂとの間のパスを代表させるのではなく、各パスが持つ重みを反映した関連度を求めることができる。なお、概念マップのサイズが大きい場合、長い距離を探索する処理のためには多くの計算量を要する場合もある。必要に応じて並列処理を導入することにより、より短い時間で多くの計算量を処理することもできる。
【０１１５】
なお、上述した各実施形態における概念処理装置の機能の一部または全部をコンピューターとプログラムとで実現するようにしても良い。その場合、各機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０１１６】
以上、この発明の複数の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【実施例１】
【０１１７】
現実の概念マップ（図面に例示した簡略版のマップとは別のもの）を用いて、第１実施形態に記載した方法により、概念「病気」と他の概念との間の関連度を計算した。その結果、関連度の値における上位１０位までの概念は、次の通りである。なお、ここでは、小数点第５位までの数値を求めている。
【０１１８】
１位  関連度：０．００３５８  概念：体
２位  関連度：０．００３２５  概念：炎症
３位  関連度：０．００３１４  概念：薬
４位  関連度：０．００３０９  概念：風邪
５位  関連度：０．００３０７  概念：身体
６位  関連度：０．００３００  概念：感染症
７位  関連度：０．００２９６  概念：ガン
８位  関連度：０．００２７８  概念：感染
９位  関連度：０．００２６７  概念：アレルギー
１０位  関連度：０．００２５８  概念：癌
【産業上の利用可能性】
【０１１９】
本発明は、概念と概念との間の関連度を利用した各種情報処理に利用可能である。一例としては、情報検索や、テレビ番組等のコンテンツを利用者に推薦するための番組推薦などといった分野に、本発明を利用可能である。
【符号の説明】
【０１２０】
１，２  概念処理装置
１２，１１２  概念重み算出部
１４，１１４  パス重み算出部
１６，１１６  関連度算出部
１８  パラメーター設定部
２０  概念マップ記憶部
２２  作業記憶部
３０  関連度記憶部
１４０  類似度取得部
【図１】
0006501398.tif 000002
【図２】
0006501398.tif 000003
【図３】
0006501398.tif 000004
【図４】
0006501398.tif 000005
【図５】
0006501398.tif 000006
【図６】
0006501398.tif 000007
【図７】
0006501398.tif 000008
【図８】
0006501398.tif 000009
【図９】
0006501398.tif 000010
【図１０】
0006501398.tif 000011
【図１１】
0006501398.tif 000012
【図１２】
0006501398.tif 000013
【図１３】
0006501398.tif 000014
【図１４】
0006501398.tif 000015
【図１５】
0006501398.tif 000016
【図１６】
0006501398.tif 000017