"アイテムの属するカテゴリの階層構造における、複数のアイテムで構成されるリスト内の各アイテムの属するカテゴリ間の距離の合計を当該リストの多様性と定義し、当該多様性が最大となる前記リストを出力するアイテム推薦方法であって、複数のアイテムから構成される推薦リストと圏外リストを入力するステップと、蓄積手段に格納された前記階層構造を参照し、前記推薦リストの多様性を算出するとともに、前記推薦リスト内のアイテムと前記圏外リスト内のアイテムを入れ替えた場合の前記推薦リストの多様性を算出するステップと、前記推薦リストの多様性とアイテムを入れ替えた場合の前記推薦リストの多様性を比較し、前記多様性が最大となる組み合わせで前記推薦リスト内のアイテムと前記圏外リスト内のアイテムを入れ替えるステップと、入れ替えた前記推薦リストを出力するステップと、を有することを特徴とするアイテム推薦方法。前記算出するステップは、前記圏外リストから前記推薦リストへ入れる第1のアイテムを選び、当該第1のアイテムのカテゴリから前記推薦リスト内の各アイテムのカテゴリへの距離の合計である第1のホップ数を算出するステップと、前記推薦リスト内の各アイテムについて、当該アイテムのカテゴリから前記第1のアイテムを前記推薦リストに入れた場合の前記推薦リスト内の各アイテムのカテゴリへの距離の合計である第2のホップ数を算出するステップと、前記第2のホップ数が最小となる第2のアイテムを選択するステップと、前記推薦リストの第1の多様性を算出するとともに、前記推薦リストに前記第1のアイテムを入れて前記第2のアイテムをはずした場合の第2の多様性を算出するステップと、を有し、前記入れ替えるステップは、前記第2の多様性が前記第1の多様性よりも大きい場合に、前記推薦リスト内の前記第2のアイテムと前記第1のアイテムとを入れ替えることを特徴とする請求項1記載のアイテム推薦方法。前記第2のアイテムを選択するステップは、前記推薦リスト内の各アイテムの属するカテゴリ数毎に前記第2のアイテムを選択し、前記第2の多様性を算出するステップは、前記カテゴリ数毎に選択した第2のアイテムそれぞれの場合について前記第2の多様性を算出し、前記入れ替えるステップは、前記第2の多様性のうち最大のものが前記第1の多様性よりも大きい場合に、前記最大となる第2の多様性を与える前記第2のアイテムと前記第1のアイテムとを入れ替えることを特徴とする請求項2記載のアイテム推薦方法。請求項1乃至3のいずれかに記載のアイテム推薦方法をコンピュータに実行させることを特徴とするアイテム推薦プログラム。しかしながら、現在のタクソノミに基づく推薦アイテムの多様化の技術では、アイテムかタクソノミ上で幅広く分布しているかどうかを、推薦リスト内のアイテムと推薦リスト外のアイテムを逐次入れ替えて分布をチェックし、分布が最大となるものを選択する、組み合わせ総当り処理を行っているため、推薦リスト内のアイテムの多様化に計算コストがかかり、実用化を阻害している。本発明は、上記に鑑みてなされたものであり、ユーザに提示する推薦リスト内のアイテムを多様化することを目的とする。第1の本発明に係るアイテム推薦方法は、アイテムの属するカテゴリの階層構造における、複数のアイテムで構成されるリスト内の各アイテムの属するカテゴリ間の距離の合計を当該リストの多様性と定義し、当該多様性が最大となる前記リストを出力するアイテム推薦方法であって、複数のアイテムから構成される推薦リストと圏外リストを入力するステップと、蓄積手段に格納された前記階層構造を参照し、前記推薦リストの多様性を算出するとともに、前記推薦リスト内のアイテムと前記圏外リスト内のアイテムを入れ替えた場合の前記推薦リストの多様性を算出するステップと、前記推薦リストの多様性とアイテムを入れ替えた場合の前記推薦リストの多様性を比較し、前記多様性が最大となる組み合わせで前記推薦リスト内のアイテムと前記圏外リスト内のアイテムを入れ替えるステップと、入れ替えた前記推薦リストを出力するステップと、を有することを特徴とする。上記アイテム推薦方法において、前記算出するステップは、前記圏外リストから前記推薦リストへ入れる第1のアイテムを選び、当該第1のアイテムのカテゴリから前記推薦リスト内の各アイテムのカテゴリへの距離の合計である第1のホップ数を算出するステップと、前記推薦リスト内の各アイテムについて、当該アイテムのカテゴリから前記第1のアイテムを前記推薦リストに入れた場合の前記推薦リスト内の各アイテムのカテゴリへの距離の合計である第2のホップ数を算出するステップと、前記第2のホップ数が最小となる第2のアイテムを選択するステップと、前記推薦リストの第1の多様性を算出するとともに、前記推薦リストに前記第1のアイテムを入れて前記第2のアイテムをはずした場合の第2の多様性を算出するステップと、を有し、前記入れ替えるステップは、前記第2の多様性が前記第1の多様性よりも大きい場合に、前記推薦リスト内の前記第2のアイテムと前記第1のアイテムとを入れ替えることを特徴とする。上記アイテム推薦方法において、前記第2のアイテムを選択するステップは、前記推薦リスト内の各アイテムの属するカテゴリ数毎に前記第2のアイテムを選択し、前記第2の多様性を算出するステップは、前記カテゴリ数毎に選択した第2のアイテムそれぞれの場合について前記第2の多様性を算出し、前記入れ替えるステップは、前記第2の多様性のうち最大のものが前記第1の多様性よりも大きい場合に、前記最大となる第2の多様性を与える前記第2のアイテムと前記第1のアイテムとを入れ替えることを特徴とする。第2の本発明に係るアイテム推薦プログラムは、上記アイテム推薦方法をコンピュータに実行させることを特徴とする。本発明によれば、ユーザに提示する推薦リスト内のアイテムを多様化することができる。以下、本発明の実施の形態について図面を用いて説明する。本実施の形態では、ユーザの興味に基づいて抽出されたアイテムについて、ユーザに推薦するアイテムのリスト上位リストLの多様度が最大となるように上位リストL内のアイテムと圏外リストM内のアイテムを入れ替える。多様度以下、Diversityと称するとは、推薦リスト内のインスタンスアイテムがオントロジ上でどれだけ幅広く分布しているかを示す値である。本実施の形態では、Diversityの計算式を次式1と定義する。ここで、Hiは、アイテムiから見た上位リストL内の他アイテムへのホップ数、|Ci|は、アイテムiの所属するクラス数である。ホップ数とは、タクソノミクラス構造上での最短距離である。図1に、タクソノミの例を示す。同図では、7つのクラスカテゴリC1~C7を有する階層構造のタクソノミ、および6つのインスタンスアイテムIa~Ic,Ix~Izを示している。クラスは、他のクラスと親子関係で結ばれて階層構造を構成し、インスタンスは、クラスを親とするノードである。例えば、クラスC2は、クラスC1を親クラス、クラスC4,C5を子クラスとする。インスタンスであるアイテムIaは、クラスC4を親クラスとする。アイテムIbのように、複数のクラスC5,C6を親クラスするアイテムもあり、このときのアイテムIbのクラス数|CIb|は、2である。ホップ数は、あるアイテムからクラスを最短で辿って他アイテムへ到達するときに辿るクラスを数えることで求まる。例えば、アイテムIaからアイテムIxへは、クラスC4-C2-C1-C3-C7と辿ることができるのでホップ数は4となる。このとき、アイテムIaの親クラスC4はホップ数に含めない。アイテムIa,Ib,Icが上位リストLに含まれる場合のDiversityは次式で求められて21となる。122121例えば、左辺の第1項は、アイテムIaから見たアイテムIb,Icへのホップ数の合計をアイテムIaの所属するクラス数で割ったものである。アイテムIbは、複数のクラスC5,C6に属しているので、それぞれ別アイテムとして計算する。したがって、左辺の第1項は、アイテムIaからクラスC4-C2-C5を辿ってアイテムIbへ到達するホップ数2と、アイテムIaからクラスC4-C2-C1-C3-C6を辿ってアイテムIbへ到達するホップ数4と、アイテムIaからクラスC4-C2-C1-C3を辿ってアイテムIcへ到達するホップ数3とを合計したものをアイテムIaの所属するクラス数1で割ったものとなる。左辺の第2項は、クラスC5に属しているアイテムIbから見たアイテムIa,Icへのホップ数を合計したものをアイテムIbの所属するクラス数2で割ったもの、左辺の第3項は、クラスC6に属しているアイテムIbから見たアイテムIa,Icへのホップ数を合計したものをアイテムIbの所属するクラス数2で割ったものである。左辺の第4項は、アイテムIcから見たアイテムIa,Icへのホップ数を合計したものである。次に、本実施の形態におけるアイテム推薦装置について説明する。図2は、本実施の形態におけるアイテム推薦装置の構成を示す機能ブロック図である。同図に示すアイテム推薦装置1は、入力部11、算出部12、入替部13、タクソノミ蓄積部14、および推薦アイテム蓄積部15を備える。アイテム推薦装置1が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムはアイテム推薦装置1が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。入力部11は、推薦アイテム情報を入力し、入力した推薦アイテム情報を上位リストLと圏外リストMに分割して推薦アイテム蓄積部15に蓄積させる。算出部12は、上位リストLのDiversityおよび上位リストLのアイテムと圏外リストMのアイテムを入れ替えたときのDiversityを算出する。Diversity算出の際には、Diversityが同じ、もしくは小さくなると見込まれる入れ替えの組合せはスキップする。Diversity算出の詳細については後述する。入替部13は、算出部12が算出したDiversityが最大になるように、上位リストLのアイテムと圏外リストMのアイテムを入れ替える。タクソノミ蓄積部14は、タクソノミ情報を蓄積する。図3に、タクソノミ情報の例を示す。タクソノミ情報には、タクソノミを構成するクラスの情報が含まれる。クラスの情報として、クラスを識別するクラスID、子クラス、親クラスの情報を有する。推薦アイテム蓄積部15は、推薦アイテム情報を蓄積する。図4に、推薦アイテム情報の例を示す。推薦アイテム情報は、アイテムのデータを含み、アイテムのデータは、アイテムを識別するアイテムID、親クラスの情報を有する。推薦アイテム蓄積部15は、アイテムのデータを上位リストL、圏外リストMに分けて蓄積する。次に、本実施の形態のアイテム推薦装置の処理の流れについて説明する。ここでは、図1に示す例、つまり図3に示すタクソノミ情報がタクソノミ蓄積部14に蓄積され、図4に示す推薦アイテム情報を入力する例を用いて説明する。図5は、本実施の形態におけるアイテム推薦装置1の処理の流れを示すフローチャートである。まず、入力部11が推薦アイテム情報を入力しステップS101、入力した推薦アイテム情報を上位リストLと圏外リストMに分割して推薦アイテム蓄積部15に蓄積させるステップS102。具体的には、アイテム推薦装置1内のメモリ等に保存した初期設定ファイルからリスト内アイテム数、圏外リストアイテム数を取得し、リスト内アイテム数と圏外リストアイテム数を合わせた数の推薦アイテム情報をユーザに推薦する度合いの高い順に入力する。そして、リスト内アイテム数を閾値として、取得した推薦アイテム情報の1番目から閾値までを上位リストL、閾値1以降を圏外リストMとして推薦アイテム蓄積部15に蓄積させる。例えば、リスト内アイテム数、圏外リストアイテム数がともに3の場合、つまり、上位リストLのアイテム数、圏外リストMのアイテム数はともに3の場合、6つのアイテムIa~Ic,Ix~Izを入力し、アイテムIa~Icを上位リストL、アイテムIx~Izを圏外リストMとして推薦アイテム蓄積部15に蓄積させる。なお、推薦アイテム情報は、別の推薦アイテム抽出処理により、ユーザの興味に基づいて、ユーザが興味を示すと思われる順にアイテムを並べて抽出される。推薦アイテム情報の入力が終了すると、圏外リストM内のすべてのアイテムについて圏外リストMの1番目から順に以下の処理を繰り返す。以下、ii番目初期値ii=1のアイテムMiiが処理対象の圏外リストMのアイテムとして説明する。まず、算出部12は、タクソノミ蓄積部14を参照して、上位リストLに圏外リストMのii番目のアイテムMiiを追加した場合の、ホップ数HL、クラス数C{Mii}を算出するステップS103,S104。上位リストLに圏外リストMのii番目のアイテムを追加したリストを{LMii}と表す。ホップ数HLは、アイテムMiiから見た、上位リストL内の他のアイテムとのホップ数の合計である。クラス数C{Mii}は、アイテムMiiが属するクラスの数である。例えば、アイテムIa~Icが上位リストLに存在し、圏外リストMのアイテムIxを上位リストLに追加した場合、アイテムIxからアイテムIaへのホップ数は4、アイテムIxからアイテムIbへのホップ数は4と2、アイテムIxからアイテムIcへのホップ数は1であり、ホップ数の合計は11となる。アイテムIxのクラス数は1である。続いて、算出部12は、除去するアイテムをLiとし、i=1から順に、リスト{LMii}から上位リストLのi番目のアイテムLiを除去した場合の、アイテムLiから見たリスト{LMii-Li}の各アイテムへのホップ数の合計H{LMii-Li}、クラス数C{Li}を算出するステップS105,S106。この処理を上位リストL内のすべてのアイテムについて処理を行うステップS107。例えば、アイテムIa~Icが上位リストLに存在し、圏外リストMのアイテムIxを上位リストLに追加したときに、各アイテムIa~Icを順にLiとして除去した場合の、アイテムLiから見たリスト{LMii-Li}内の各アイテムへのホップ数の合計、Liのクラス数は次表1となる。そして、上位リストLのアイテムのクラス数ごとにホップ数の合計が最小のものをピックアップするステップS108。例えば上記の表1の場合、クラス数が1のアイテムでホップ数が最小のものはアイテムIcであり、クラス数が2のアイテムはアイテムIbのみであるので、アイテムIb,Icがピックアップされる。なお、クラス数、ホップ数が同じ場合は、ランクが高いもの、つまりユーザに推薦する度合いが高いものをピックアップする。ここで、ピックアップした全てのアイテムについて、HL=<H{LMii-Li}、かつ、C{Mii}>=C{Li}が成り立つ場合は、iiを1つ進めてステップS103に戻るステップS109。上記の条件を満たすアイテムLiを圏外リストMのアイテムiiと入れ替えた場合は、Diversityが小さくなることは明らかである。したがって、ピックアップした全てのアイテムが上記の条件を満たす場合は、Diversityを計算することなく、iiを1つ進めて次の圏外リストM内のアイテムMiiについて処理する。そして、算出部12は、上位リストLのDiversity{L}、アイテムMiiとステップS108でピックアップしたアイテムLiとを入れ替えた場合のDiversity{LMii-Li}を算出するステップS110。なお、ステップS109の条件を満たしたアイテムLiはDiversity{LMii-Li}算出の対象外とする。例えば、アイテムIa,アイテムIb,アイテムIcが上位リストLに含まれる場合のDiversity{L}は21となる。アイテムIxとアイテムIbを入れ替えた場合、アイテムIxとアイテムIcを入れ替えた場合それぞれのDiversityは次表2となる。ここで、Diversity{L}が、算出したDiversity{LMii-Li}のうちの最大のものよりも大きい場合は、iiを1つ進めてステップS103に戻り、次のアイテムMiiについて処理を行うステップS111。そして、入替部13は、算出したDiversity{LMii-Li}が最大となるアイテムLiをアイテムMiiと入れ替えるステップS112。上記表2では、アイテムIcを入れ替えた場合のDiversityが最大であり、Diversity{L}=21よりも大きいので、上位リストLからアイテムIcをはずしてアイテムIxを入れて、推薦アイテム蓄積部15の情報を更新する。上位リストLからはずしたアイテムは推薦対象としないため、上位リストL、圏外リストMのいずれにも戻さない。この時点で、上位リストLは、アイテムIa,Ib,Ixからなり、圏外リストMは、アイテムIy,Izからなる。圏外リストMにまだアイテムが残っている場合は、iiを1つ進めてステップS103に戻り、次のアイテムMiiについて処理を行うステップS113。圏外リストMの全てのアイテムについて処理した場合は、上位リストLのアイテムをユーザに推薦する推薦アイテムとして出力する。以上説明したように、本実施の形態によれば、複数のアイテムで構成されるリストのDiversityの計算式を、アイテムの属するクラスから別のアイテムの属するクラスへのタクソノミ上の距離の合計を表す式1のように定義し、上位リストL内のアイテムと圏外リストM内のアイテムとをDiversityが最大となるように入れ替えることにより、ユーザに多様性のあるおすすめアイテムを提示することが可能となる。その結果、サービスを利用するユーザがそのサービスの提示する様々なアイテムを知るきっかけを与えることができ、ユーザのサービスへの飽きを抑えられる。また、多様なアイテムを推薦できるので、ユーザの購買意欲を高め売上げを増加させることができる。本実施の形態によれば、圏外リストM内のアイテムMiiを上位リストLのアイテムLiと入れ替えた場合のDiversityの算出において、上位リストLのアイテムLiを圏外リストM内のアイテムMiiとを入れ替えた場合の、アイテムLiから見たリスト{LMii-Li}の各アイテムへのホップ数の合計を算出し、アイテムLiのクラス数ごとに、ホップ数の合計が最小のものだけについてDiversityを算出し、算出したDiversityのうち最大のものと上位リストLのDiversityと比較して、アイテムMiiと入れ替えるか否かを判定することにより、すべての組合せについてDiversityを算出することなく、Diversityが最大となるようにアイテムの入れ替えが可能となる。"