(57)【特許請求の範囲】
【請求項１】
コンピュータ処理により、プロジェクトのトラブル発生の確率を推定するシステムであって、
プロジェクトのトラブル発生の予測に使用する表現パターンと、該表現パターンに関連づけられたトラブル発生確率のデータを記憶するデータ記憶部と、
トラブル発生を予測すべきプロジェクトの状況を記述するテキスト文を構文解析して、表現パターンを取り出す、テキスト解析部と、
前記データ記憶部に記憶されている表現パターンと、前記プロジェクトの状況を記述するテキスト文から取り出された表現パターンを照合して、それらが一致することに応答して、該表現パターンに関連して前記データ記憶部に記憶されているトラブル発生確率を用いて、前記プロジェクトのトラブル発生確率を予測する予測部とを有する、
トラブル発生確率予測システム。
【請求項２】
前記データ記憶部に記憶されている表現パターンは、過去の複数のプロジェクトの状況を記述するテキスト文を構文解析して取り出され、前記トラブル発生確率は、前記プロジェクトがトラブルを起こした時間と、そのトラブルに関連する表現パターンの頻度を統計処理することによって計算されたものである、請求項１のトラブル発生確率予測システム。
【請求項３】
前記トラブル発生確率は、表現パターン毎の、プロジェクト全体の発生件数で正規化された、該表現パターン毎の発生件数と発生時間の累積ヒストグラムによって計算される、請求項２のトラブル発生確率予測システム。
【請求項４】
前記予測部は、前記トラブル発生を予測すべきプロジェクトの開始時間に基づき、前記累積ヒストグラムの累積開始時点を決定することによって、前記プロジェクトのトラブル発生確率を予測する、請求項３のトラブル発生確率予測システム。
【請求項５】
前記予測部は、前記トラブル発生を予測すべきプロジェクトの状況を記述するテキスト文から複数の表現パターンが取り出されることに応答して、前記データ記憶部に記憶されている表現パターンと照合し、一致する表現パターンに関連付けられた最大のトラブル発生確率を用いて、前記プロジェクトのトラブル発生確率を予測する、請求項１のトラブル発生確率予測システム。
【請求項６】
コンピュータ処理により、プロジェクトのトラブル発生の確率を推定する方法であって、
過去の複数のプロジェクトの状況を記述するテキスト文を構文解析して、トラブル発生に関連する表現パターンを取り出すステップと、
前記表現パターン毎に、前記過去の複数のプロジェクトの状況に基づき、トラブル発生件数を時系列的に記録するステップと、
トラブル発生を予測すべきプロジェクトの状況を記述するテキスト文を構文解析して、表現パターンを取り出すステップと、
前記記録されている表現パターンと、前記プロジェクトの状況を記述するテキスト文から取り出された表現パターンを照合して、それらが一致することに応答して、該表現パターンに関連する時系列データに基づき、前記プロジェクトのトラブル発生確率を予測するステップとを有する、
プロジェクトのトラブルの確率を推定する方法。
【請求項７】
前記予測するステップは、前記トラブル発生を予測すべきプロジェクトの開始時間に基づき、前記表現パターンに関連する時系列データの開始時点を決定することによって、前記プロジェクトのトラブル発生確率を予測する、請求項６の方法。
【請求項８】
前記予測するステップは、前記トラブル発生を予測すべきプロジェクトの状況を記述するテキスト文から複数の表現パターンが取り出されることに応答して、前記記録されている表現パターンと照合し、一致する表現パターンに関連付けられた最大のトラブル発生確率を用いて、前記プロジェクトのトラブル発生確率を予測する、請求項７の方法。
【請求項９】
コンピュータ処理により、プロジェクトのトラブル発生の確率を推定するプログラムであって、
前記コンピュータをして、
過去の複数のプロジェクトの状況を記述するテキスト文を構文解析して、トラブル発生を示唆する表現パターンを取り出すステップと、
前記表現パターン毎に、前記過去の複数のプロジェクトの状況に基づき、トラブル発生件数を時系列的に記録するステップと、
トラブル発生を予測すべきプロジェクトの状況を記述するテキスト文を構文解析して、表現パターンを取り出すステップと、
前記記録されている表現パターンと、前記プロジェクトの状況を記述するテキスト文から取り出された表現パターンを照合して、それらが一致することに応答して、該表現パターンに関連する時系列データに基づき、前記プロジェクトのトラブル発生確率を予測するステップとを実行させる、
プログラム。
【請求項１０】
前記予測するステップは、前記トラブル発生を予測すべきプロジェクトの開始時間に基づき、前記表現パターンに関連する時系列データの開始時点を決定することによって、前記プロジェクトのトラブル発生確率を予測する、請求項９のプログラム。
【請求項１１】
前記予測するステップは、前記トラブル発生を予測すべきプロジェクトの状況を記述するテキスト文から複数の表現パターンが取り出されることに応答して、前記記録されている表現パターンと照合し、一致する表現パターンに関連付けられた最大のトラブル発生確率を用いて、前記プロジェクトのトラブル発生確率を予測する、請求項１０のプログラム。
【請求項１２】
コンピュータ処理により、プロジェクトのトラブル発生の確率を推定するシステムであって、
過去の複数のプロジェクトの状況を記述するテキスト文を構文解析して、トラブルを示唆する表現パターンを取り出す手段と、
前記表現パターン毎に、前記過去の複数のプロジェクトの状況に基づき、トラブル発生件数を時系列的に記録する手段と、
トラブル発生を予測すべきプロジェクトの状況を記述するテキスト文を構文解析して、表現パターンを取り出す手段と、
前記記録されている表現パターンと、前記プロジェクトの状況を記述するテキスト文から取り出された表現パターンを照合して、それらが一致することに応答して、該表現パターンに関連する時系列データに基づき、前記プロジェクトのトラブル発生確率を予測する手段とを有する、
システム。
【請求項１３】
前記予測する手段は、前記トラブル発生を予測すべきプロジェクトの開始時間に基づき、前記表現パターンに関連する時系列データの開始時点を決定することによって、前記プロジェクトのトラブル発生確率を予測する、請求項１２のシステム。
【請求項１４】
前記予測する手段は、前記トラブル発生を予測すべきプロジェクトの状況を記述するテキスト文から複数の表現パターンが取り出されることに応答して、前記記録されている表現パターンと照合し、一致する表現パターンに関連付けられた最大のトラブル発生確率を用いて、前記プロジェクトのトラブル発生確率を予測する、請求項１３のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ソフトウェア開発、製品開発などのプロジェクト管理において、トラブル発生を予測するための技術に関するものである。
【背景技術】
【０００２】
ソフトウェア開発などのプロジェクト管理において、トラブルをできる限り早く認識することは非常に重要である。トラブルの存在を知るのが遅れるほど対策が難しくなったり余分なコスト・労力を必要とするようになる。典型的なプロジェクト進捗管理では、プロジェクトリーダーがプロジェクトの情報を定期的に報告し、管理職が、その情報をもとにプロジェクト状態を評価する。通常、管理職は多数のプロジェクトを管理する必要があるため、全ての報告を時間をかけて吟味することは難しい。そのため、現実のプロジェクト進捗管理においては、あらかじめ定められた基準に基づいてプロジェクトが問題に陥っているかどうか、具体的には例えばスケジュール遅延、コスト超過などの事実があるかどうかをチェックすることでトラブルの発生を認識する。そのため、例えば、報告書で定型チェック項目をチェックし、そのチェック結果のスコアとして記述される。これらは、実際にトラブルが発生した後でそれを確実に認識するのには役立つものの、トラブルのより早期な認識には使えない。さらに、一般的に、プロジェクトリーダーの心理として、トラブルを上位管理職に知らせるのを可能なら避けたいという傾向があるため、トラブルはギリギリまで管理職に認識されないということが、起こりがちである。
【０００３】
一方、プロジェクト情報の報告には、上記のような定型チェック項目を補足するものとして、自然言語で記述されたテキスト情報も含まれることも多い。そして、熟練したプロジェクト管理担当者なら、これを読むことで文章の内容や表現の特徴などから、今後トラブルが発生しそうかどうかの目星をつけることができるといわれている。怪しそうなプロジェクトについては事前に注意してチェックすることで、未然にトラブルを防いだり早期に対策を講じたりすることが可能になるため、この情報は非常に有用なものである。但し、プロジェクト数が増えると全てのテキストを、人間が目で読むことには限界があり、結果としてトラブル予測は困難な問題となっている。
【０００４】
従って、プロジェクトの進捗管理におけるテキスト情報を自動的に解析し、それに基づいてトラブルになりそうなプロジェクトの絞り込みを行うことが望まれている。
【０００５】
特開平１０−２４０７１５号公報は、定量的な属性からなる複数の事例から新たな問題について予測・推定を行う手法に関するものであり、具体的には例えば、製品の「設計属性値」の集合から「品質特性」を推定する場合において、 (1) 各事例と新たな問題とで設計属性値の類似度を求め、 (2) 新たな問題と類似度が高い事例を選び、それぞれについて品質特性の予測分布を求め、(3) 得られた複数の予測分布を合成して最終的な予測値を求める、というステップを開示する。
【０００６】
特開２００４−２５２８９３号公報は、オペレーショナルリスクを計量化するための手法に関して、特に過去の実績から損失額を予測する際のリスク値の妥当性・安定性を向上させるためのものであり、具体的には推定に用いる取引金額分布を特定の方法で平滑化してから用いることを開示する。
【０００７】
特開２００５−０１８３０４号公報は、時系列データの予測方法に関するものであり、(1)予測に使用する時系列データを部分集合に分割し、(2)それぞれの部分集合について値の頻度分布ヒストグラムを作成し、(3)ヒストグラム群から予測対象の属性に対応するヒストグラムの累積度をもとに予測値を求めることを開示する。
【０００８】
特開２００５−１５７７５５号公報は、医療事故の記録を行うシステムに関するものであり、事故の記録に加えて事故の報告・判断をする者の個人属性を内的要因として記録することを開示している。特に、個人属性は事故記録の報告記述文を言語解析を行いて解析することで内的価値観を要因として取り出すことを開示する。
【０００９】
しかし、上記どの従来技術も、プロジェクトの進捗管理におけるテキスト情報を自動的に解析し、それに基づいてトラブルになりそうなプロジェクトの絞り込みを行うことを、十分な信頼性で遂行し得るものではない。
【特許文献１】特開平１０−２４０７１５号公報
【特許文献２】特開２００４−２５２８９３号公報
【特許文献３】特開２００５−０１８３０４号公報
【特許文献４】特開２００５−１５７７５５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
この発明の目的は、プロジェクト管理において、トラブルの発生を、早期に且つ高い尤度で認識する技法を提供することにある。
この発明の別の目的は、プロジェクトの進捗管理におけるテキスト情報を自動的に解析し、それに基づいてトラブルになりそうなプロジェクトの絞り込みを行うことを、十分な信頼性で実行することを可能ならしめる技法を提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明は、好適には、下記の構成を有する。
1. プロジェクト・トラブルの予測に使用する表現パターンの集合を管理する、表現パターン管理部
2. プロジェクト情報に含まれるテキストを解析し、指定された表現パターンの中でテキストに出現したものを出力する、テキスト解析部
3. 過去プロジェクト情報と出現表現パターンから、表現パターンの特性を計算する、パターン特性計算部
4. 出現表現パターンと表現パターン特性を用いて、プロジェクトのトラブル発生の警告を出力する、出力部
【００１２】
上記において特に、プロジェクト情報とは、個々のプロジェクトで定期的に作られるプロジェクト状態の報告であり、少なくともプロジェクト状態を記述したテキストと、プロジェクトがトラブル状態に陥った場合に、そのことを示す情報から構成される。表現パターンとは、自然言語処理上の特定の言語表現を指定するような一つ以上の定義記述である。表現パターン特性とは、ある表現パターンがプロジェクト情報中のテキストに出現した時点を基準としたプロジェクト・トラブルの発生確率分布、および分布を表現する統計量である。
【発明の効果】
【００１３】
この発明によれば、プロジェクト情報を記述する表現パターンに基づき、それがプロジェクト情報中のテキストに出現した時点を基準としたプロジェクト・トラブルの発生確率分布、および分布を表現する統計量によって、トラブルが発生する確率と時期を推定することができるので、従来できなかったような高い尤度で、トラブルになりそうなプロジェクトの絞り込みを行うことが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して、本発明の一実施例の構成及び処理を説明する。以下の記述では、特に断わらない限り、図面に亘って、同一の要素は同一の符号で参照されるものとする。なお、ここで説明する構成と処理は、一実施例として説明するものであり、本発明の技術的範囲をこの実施例に限定して解釈する意図はないことを理解されたい。
【００１５】
図１を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図１において、システム・パス１０２には、ＣＰＵ１０４と、主記憶（ＲＡＭ）１０６と、ハードディスク・ドライブ（ＨＤＤ）１０８と、キーボード１１０と、マウス１１２と、ディスプレイ１１４が接続されている。ＣＰＵ１０４は、好適には、３２ビットまたは６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＰｅｎｔｉｕｍ（商標）  ４、Ｃｏｒｅ（商標）  ２  ＤＵＯ、ＡＭＤ社のＡｔｈｌｏｎ（商標）などを使用することができる。主記憶１０６は、好適には、２ＧＢ以上の容量をもつものである。ハードディスク・ドライブ１０８は、好適には、２００ＧＢ以上の容量をもつものである。
【００１６】
ハードディスク・ドライブ１０８には、個々に図示しないが、オペレーティング・システム、過去プロジェクト情報、解析すべき現プロジェクト情報、及び本発明に係る処理プログラムが、予め格納されている。
【００１７】
オペレーティング・システムは、Ｌｉｎｕｘ（商標）、マイクロソフト社のＷｉｎｄｏｗｓ（商標）  Ｖｉｓｔａ、Ｗｉｎｄｏｗｓ  ＸＰ（商標）、Ｗｉｎｄｏｗｓ（商標）２０００、アップルコンピュータのＭａｃ  ＯＳ（商標）などの、ＣＰＵ１０４に適合する任意のものでよい。
【００１８】
ハードディスク・ドライブ１０８にはまた、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（商標）などの任意のプログラム言語処理系を格納してもよい。このプログラム言語処理系は、本発明に係る処理プログラムを作成し、維持するために使用される。
【００１９】
ハードディスク・ドライブ１０８にはさらに、プログラム言語処理系でコンパイルするためのソースコードを書くためのテキスト・エディタ、及び、Ｅｃｌｉｐｓｅ（商標）などの開発環境を含んでいてもよい。
【００２０】
キーボード１１０及びマウス１１２は、オペレーティング・システムまたは、ハードディスク・ドライブ１０８から主記憶１０６にロードされ、ディスプレイ１１４に表示されたプログラム（図示しない）を起動したり、文字を打ち込んだりするために使用される。
【００２１】
ディスプレイ１１４は、好適には、液晶ディスプレイであり、例えば、ＸＧＡ（１０２４×７６８の解像度）、またはＵＸＧＡ（１６００×１２００の解像度）などの任意の解像度のものを使用することができる。ディスプレイ１１４は、本発明に係る処理結果を表示するために使用される。
【００２２】
次に、図２の機能ブロック図により、本発明の処理の概要の流れの概要を説明する。図２に示す論理ブロック図２０４、２０８、２１２、２２２、２２４及び２２６の機能は、単一のモジュールの一部、または個別のモジュールとして予めＣ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（商標）などの適当なプログラム言語により作成され、ハードディスク・ドライブ１０８に格納され、必要に応じて、オペレーティング・システムの機能により、実行可能に、主記憶１０６にロードされる。
【００２３】
図２において、過去プロジェクト情報２０２は、少なくとも、過去のプロジェクトのプロジェクトＩＤと、プロジェクトの状態、または過去プロジェクト・トラブル情報を報告するテキストと、報告の日時を含む。過去プロジェクト情報２０２は、ＣＳＶ、ＸＭＬなどのコンピュータ読み取り可能な形式で、ハードディスク・ドライブ１０８に保存されている。
【００２４】
テキスト解析部２０４は、これらには限定されないが、特開平６−３２５１０４号公報、特開２０００−７６２７４号公報、特開２００４−１２６９３３号公報などに記述されているような、公知のテキスト解析技法により、与えられたテキストを、形態素解析・構文解析し、その後、指定された表現パターンがテキスト中にあるかどうかを判定し、その頻度を出力する機能を有する。このため、テキスト解析部２０４は、表現パターン管理部２１２から、表現パターン２１４を受領する。
【００２５】
そして、下記のような形式の出現表現パターン２０６を出力する。
【表１】
0005052375.tif 000002
この表形式の出現表現パターン２０６は例えば、ＣＳＶ、ＸＭＬなどのコンピュータ読み取り可能な形式で、ハードディスク・ドライブ１０８に保存される。この処理は、保存されている過去プロジェクト情報２０２すべてについて行われ、その結果が、出現表現パターン２０６となる。ここで、出現表現パターン２０６とは例えば、「お客様・・・調整する」、「計画変更・・・発生する」のような、トラブル発生を示唆するパターンである。
【００２６】
この実施例の文脈で、表現パターンとは、自然言語処理を行った後にその結果を用いて作成する、上の特定の言語表現を指定するような一つ以上の定義記述、あるいは言語表現の時間的な推移の集合である。個々の言語表現定義記述は、例えば次のようなものがある。
・  特定の単語： (例) 辞書によって指定する特定の単語  具体例：「リスク」
・  特定の係り受けパターン： 
(例) 「（名詞）→（格助詞）→(用言)」（(係り元)→(係り先)を表す）具体例：「時間→が→かかる」
・  特定の品詞や文字列の(bigram, trigram)： 
(例） 名詞の2連続、3連続など  具体例：  (名詞)(格助詞)  「お客：様」
・  特定の品詞： （例）副詞やオノマトペ（擬音語・擬態語）など  具体例：「まだまだ」「ぎりぎり」
個々の表現パターンは、これらの言語表現定義を一つ以上まとめてグループにしたものである。あるテキストに対して、表現パターンを構成する言語表現定義記述のいずれかが含まれていれば、そのテキストは表現パターンにマッチするとみなす。
言語表現定義、および表現パターンを記述する形式は任意である。例えば、IBM OAE (OmniFind Analytics Edition) への入力として使用できる形式では、ＸＭＬを使って、下記のように表現される。
【００２７】
<mi category="exp_patternA" value="${n1.lex}.${a1.lex}...${1.lex}">
<w id="1" pos="/^((noun)|(verb)|(adjective))$/"
ftrs="!/^((pron)|(suffix)|(formal_n)|(rt))$/">
<w id="a1" pos="adposition">
<w id="n1" lex="/^(リスク)$/"/>
</w>
</w>
</mi>
【００２８】
パターン特性計算部２０８は、表現パターン毎に、データに基づいて、プロジェクト・トラブル発生に対する特性を計算し、表現パターン特性２１０として出力する。パターン特性計算部２０８への入力は、出現表現パターン２０６及び、過去プロジェクト情報２０２の中で、トラブルが発生したものに関して、トラブル発生が認識された日のリストである。このリストの一例は、下記のようなものである。
【表２】
0005052375.tif 000003
ここでは、トラブル発生が認識された日だけの情報が示されているが、もちろん、時間の情報も含んでいてよい。
【００２９】
これらを用いて、パターン特性は、次のように計算される。
１.  上記表１に出現する表現パターンの集合を求める。これをＥとする。
２.  Ｅに属する各表現パターンeについて以下の計算を行う。
a.  表１で表現パターンeに関する行だけを選択する。これらの行の出現カウントの総和を求め、これをc とする
b.  選択された各行について、プロジェクトＩＤからプロジェクトトラブルが発生したかどうかを表２で調べる。プロジェクトトラブルが発生していた場合には：
T = (トラブル発生が認識された日時) - (報告日時)
で定義される相対時間Tを求め、表現パターンeに対して(T, (観測カウント) / c)を記録する。特に、第２項の(観測カウント) / cを、正規化観測カウントと呼ぶ。
c.  上記の結果得られた (T, 正規化観測カウント) のリストが、表現パターン e の特性である。
なお、表現パターン特性を概念的に図示すると、図３のようである。図３において、Tが正の側のグラフは、表現パターンが観測されてから、時間T後にプロジェクト・トラブル発生が観測されるデータに基づく確率であると解釈できる。言い換えれば、
【数１】
0005052375.tif 000004
は、表現パターンが観測されてから、時間T以内にトラブル発生が観測される確率である。後の記述のため、この確率を Prob[trouble|e](T) で表す。
３.  さらに、上記表現パターン特性から、表現パターンの有効度を計算する。有効度の定義は次のうちいずれかを使用可能である。
a.表現パターンがトラブル検出に寄与できる割合：
【数２】
0005052375.tif 000005
b.表現パターンがより将来のトラブル予測に寄与できるか： パターン特性のT平均
c.表現パターンのトラブル時期予測がそれだけ安定しているか： パターン特性のT分散
あるいは、上記を組み合わせることで、総合的な有効度を定義することもできる。
【００３０】
パターン特性計算部の出力は、各表現パターンに対してｋ特性を示す(T, 正規化観測カウント) のリスト、および有効度の値の組である。
【００３１】
なお、Tの定義として、上記のような相対時間をそのまま用いる代わりに、各プロジェクトの長さで割って、プロジェクト全体に対する進捗割合を用いることも可能である。この場合、
T = {(トラブル発生が認識された日時) - (報告日時)} / (プロジェクトの長さ)
となる。
【００３２】
また、過去プロジェクト情報のデータ数が多く、プロジェクトの種類や性質がさまざまである場合には、上記の処理をプロジェクトの種類や性質ごとに行うことも可能である。この場合、それぞれの表現パターンの特性は、それらのプロジェクトの種類や性質ごとに計算される。
【００３３】
表現パターン管理部２１２は、表現パターンの集合を、それぞれの表現パターンの特性情報とともに管理する。表現パターン特性情報については、パターン特性計算部２０８に関連して、説明したとおりである。
【００３４】
表現パターン管理部２１２の動作は以下のとおりである。
１.  まず、使用する表現パターンの全候補を表に格納する。これは、ランダムに生成してもよいし、プロジェクト・トラブルに役立つ可能性があると考えられる表現を直接定義して使用してもよい。また、前処理として、過去プロジェクト情報をいったんテキスト処理し、そこに含まれている言語表現をもとにパターンを定義してもよい。例えば、含まれる全ての言語表現を使用してもよいし、出現頻度の高い表現を絞って用いてもよい。
２．  過去プロジェクト情報の処理のために、テキスト解析部２０４に表現パターンのリスト（全候補）を提供する。
３．パターン特性計算部２０８から、個々の表現パターンに関する特性情報を受けとり、表に格納する。
４．プロジェクトトラブルの予測のため、テキスト解析部に表現パターンのリストを提供する。ここでは、表現パターンの全候補を提供してもよいし、特性情報をもとに、トラブル予測に有用なものだけを提供してもよい。後者の場合は、例えばパターンの有用度（後述）が上位のものを選択することができる。
また、テキスト解析部２０４に渡した表現パターンに対応するパターン特性の情報を、後述する出力部２２６に提供する。
【００３５】
新規プロジェクト情報２２０は、今からトラブルを予測しようとするプロジェクトのデータである。好適には、新規プロジェクト情報２２０のデータ形式は、新規プロジェクトのプロジェクトＩＤと、プロジェクトの状態を報告するテキストと、報告の日時を含む。
【００３６】
テキスト解析部２２２は、テキスト解析部２０４をそのまま使ってもよいし、テキスト解析部２０４とは別の、ほぼ同一の機能のものであってもよい。テキスト解析部２２２も、表現パターン管理部２１２から提供された表現パターン２１６を使って、解析を行う。
【００３７】
テキスト解析部２２２は、テキスト解析部２０４と同様に、出現表現パターン２２４を生成し、その出現表現パターン２２４は、  出力部２２６に提供される。
出力部２２６の具体的な処理内容は以下の通りである。
１.  対象のプロジェクト情報にマッチした表現パターン２２４（テキスト解析部２２２からの入力）を有効度の高い順に並べる。表現パターン数が多い場合には、上位のものだけを用いて以下の処理を行ってもよい。（必ず全ての表現パターンを用いる場合は、有効度で並べ替える必要はない。） マッチした表現パターンのうち、以下の処理の対象とする表現パターンの集合を E' = (e1, e2, …, eL) (Lは表現パターンの個数)とする。
２.  すでに記述したように、各表現パターンei (i=1,2,…,L) について、表現パターン特性２１８、すなわち、観測されてからT以内にトラブルが観測される確率 Prob[trouble|ei](T) が得られている。出力部２２６は、ei (i=1,2,…,L) についてこれらの値を調べ、確率が一定の閾値を超えるものをリストしてトラブル警告とする。
３.  あるいは、別のパターンとして、各表現パターンの出現が独立であると仮定すると、
E' = (e1, e2, …, eL) が観測されてから T 以内にトラブルが観測される確率
Prob[trouble|E'](T) は近似的に以下のように推定される。
【数３】
0005052375.tif 000006
これを用いて、時間T以内の推定トラブル確率を出力することができる。
出力部は上記の処理を対象のプロジェクトそれぞれについて行い、トラブル発生の可能性が高い順にプロジェクトを並べ替えて出力する。
【００３８】
次に、図４〜図７のフローチャートを参照して、各表現パターンについての特性（トラブル観測パターンのヒストグラム）を計算する処理について、説明する。この処理は、図２のパターン特性計算部２０８で行われる処理である。
【００３９】
図４は、各表現パターンについての特性を計算する処理の高レベル・フローチャートであって、概略的には、表現出現数をカウントするステップ４０２と、それに続く、表現特性の計算ステップ４０４とからなる。
【００４０】
図５は、表現出現数をカウントするステップ４０２の処理の、より詳細なフローチャートである。図５において、ステップ５０２では、過去のプロジェクト報告に含まれる、出現情報パターンリストが取得される。過去のプロジェクト報告は、図２の過去プロジェクト情報２０２に含まれている。
【００４１】
ステップ５０４では、未処理のプロジェクト報告があるかどうかが、判断される。もし全てのプロジェクト報告の処理が完了したなら、その判断はＮｏとなるので、ステップ５０６で、各表現パターンの総出現カウントC[e]をリストとして出力し、処理を完了する。
【００４２】
ステップ５０４で、未処理のプロジェクト報告があると判断されたなら、ステップ５０８で、次のプロジェクト報告rの表現パターンリストErが取得される。そして、ステップ５１０で、表現パターンリストErに、未処理の表現パターンがあるかどうかが判断される。ステップ５１０で、もし表現パターンリストErの全ての表現パターンリストが処理されたと判断されたなら、処理は、ステップ５０４の判断に戻る。
【００４３】
ステップ５１０で、まだ、表現パターンリストErに、未処理の表現パターンリストがあると判断されたなら、ステップ５１２で、次の表現パターンeが取り出される。
【００４４】
ステップ５１４では、表現パターンeが出現するのが初めてかどうかが判断され、もしそうなら、ステップ５１６で、表現パターンeの総出現カウントC[e]が、0に初期化される。
【００４５】
そして次に、ステップ５１８では、表現パターンeの総出現カウントC[e]が、表現パターンリストEr内でのeの出現回数分だけ増分される。次に、処理は、ステップ５１０での判断に戻る。
【００４６】
図６は、図４における、表現特性の計算ステップ４０４の処理の、より詳細なフローチャートである。図６において、ステップ６０２では、過去のプロジェクト報告に含まれる、出現情報パターンリストが取得される。過去のプロジェクト報告は、図２の過去プロジェクト情報２０２に含まれている。
【００４７】
ステップ６０４では、未処理のプロジェクト報告があるかどうかが、判断される。もし全てのプロジェクト報告の処理が完了したなら、その判断はＮｏとなるので、ステップ６０６で、各表現パターンの特性リストを出力し、処理を完了する。
【００４８】
ステップ６０４で、未処理のプロジェクト報告があると判断されたなら、ステップ６０８で、次のプロジェクト報告rが取得される。
【００４９】
ステップ６１０では、プロジェクト報告rのプロジェクトＩＤが、p_idにセットされる。
【００５０】
ステップ６１２では、p_idにおけるトラブル情報が取得される。そして、ステップ６１４で、トラブル情報中に、トラブルが１つ以上あったかどうかが判断される。
【００５１】
ステップ６１４で、トラブル情報中に、トラブルが１つ以上あったと判断されると、ステップ６１６で、Ntに、p_idのトラブル数がセットされる。
【００５２】
ステップ６１４で、トラブル情報中に、トラブルがないと判断されると、処理は、ステップ６０４に戻る。
【００５３】
ステップ６１４で、トラブル情報中に、トラブルが１つ以上あったと判断された場合、ステップ６１６に続いてステップ６１８で、Trに、プロジェクト報告rのタイムスタンプがセットされる。
【００５４】
ステップ６２０では、プロジェクト報告r内の表現パターンのリストが取得される。そして、ステップ６２２で、未処理の表現パターンがあるかどうかが、判断され、もう未処理の表現パターンはないなら、処理はステップ６０４に戻る。
【００５５】
ステップ６２２で、未処理の表現パターンがあると判断されたなら、ステップ６２４で、次の表現パターンeが取り出される。
【００５６】
ステップ６２６では、crに、表現パターンeの、プロジェクト報告r内での出現数が格納される。
【００５７】
ステップ６２８では、p_idにおけるトラブル情報が取得される。ステップ６３０では、未処理のトラブル情報があるかどうがが判断される。
【００５８】
ステップ６３０で、もう未処理のトラブル情報がないと判断されると、処理は、ステップ６２２に戻る。
【００５９】
ステップ６３０で、まだ未処理のトラブル情報があると判断されると、ステップ６３２で、Ttに、トラブル情報のタイムスタンプが格納され、ステップ６３４で、Tに、Tt - Trが代入される。
【００６０】
ステップ６３６では、pに、cr / C[e] / Ntが代入される。
【００６１】
ステップ６３８では、表現パターンeの特性リストLに[T,p]を追加する、というサブルーチン６３８が実行され、その後、処理は、ステップ６３０に戻る。
【００６２】
図７は、図６のサブルーチン６３８の処理を示すフローチャートである。図７のステップ７０２では、eに表現パターンがセットされる。ステップ７０４では、Tに相対時間がセットされる。ここでいう相対時間とは、図６のステップ６３４に示す、Tt - Trである。
【００６３】
ステップ７０６では、pに、正規化カウントがセットされる。ここでいう正規化カウントとは、ステップ６３６に示す、cr / C[e] / Ntである。
【００６４】
ステップ７０８では、表現パターンeが現れるのが初めてかどうかが判断され、もしそうなら、ステップ７１０で、表現パターンeの特性リストLが空にされる。
【００６５】
次に、ステップ７１２では、表現パターンeの特性リストLに、[T,p]が追加される。
【００６６】
次に、予測に有効な表現パターンを選択する処理について、図８のフローチャートを参照して、説明する。この処理は、図２の表現パターン管理部２１２で、実行される。
【００６７】
図８のステップ８０２では、特性リストの一覧が取得される。ステップ８０４では、未処理の特性リストがあるかどうかが判断される。もしそうなら、ステップ８０６で、次の特性リストが取り出される。
【００６８】
ステップ８０８では、eに、特性リストLの表現パターンがセットされる。
【００６９】
ステップ８１０では、浮動小数点数ppに、0.0がセットされる。ステップ８１２では、特性リストLにまだ未処理項目があるかどうかが判断され、もしそうなら、ステップ８１４で、特性リストLから、次のヒストグラム項目[T,p]が取り出される。
【００７０】
ステップ８１６では、取り出したヒストグラム項目[T,p]のTの値が0より大きいかどうかが判断される。もし、T > 0でなければ、その項目は、この処理の目的には有効でないので、処理は直ちにステップ８１２に戻る。
【００７１】
もしT > 0であるなら、ステップ８１８で、ppにpが加えられて、処理はステップ８１２に戻る。
【００７２】
ステップ８１２で、特性リストLにもう未処理項目がないと判断されると、ステップ８２０では、表現パターンeのトラブル確率として、ppが代入され、処理はステップ８０４に戻る。
【００７３】
ステップ８０４に戻って、未処理の特性リストがもうないと判断されると、処理は、ステップ８２２に進み、そこで、表現パターンが、トラブル確率の降順にソートされる。
【００７４】
ステップ８２４では、トラブル確率が閾値を超える表現パターンのリストEpが出力される。ステップ８２６では、ユーザが、リストEpを、ディスプレイ１１４のＧＵＩで確認して、どの表現パターンを実際に使用するか、などの選択を行う。図９に、そのようなＧＵＩの例を示す。
【００７５】
すなわち、図９で、ステップ８２４の処理の結果が、「候補表現パターン一覧」にリストされるので、候補表現パターンをマウス１１２でクリックして「->」のボタンをクリックするか、または、「全て使用」のボタンをクリックすることによって、候補表現パターンを、「選択表現パターン一覧」に移動させ、この後の処理に使うことができる。実際、このようにして選択された表現パターンは、図２に示す表現パターン２１８として、出力部２２６に適用される。
【００７６】
次に、図１０を参照して、トラブル・プロジェクトの予測処理について、説明する。この処理は。図２の出力部２２６によって実行される。
【００７７】
図１０のステップ１００２では、予測に使用する表現パターンの一覧Epが、表現パターン管理部２１２から取得される。ステップ１００４では、新規プロジェクト報告の一覧が、取得される。これは、図２では、新規プロジェクト情報２００として表示されており、所定のデータフォーマットで、ハードディスク・ドライブ１０８に保存されている。
【００７８】
ステップ１００６では、新規プロジェクト報告の一覧のうち、未処理のプロジェクト報告があるかどうかが判断される。そして、もし未処理のプロジェクト報告があるなら、ステップ１００８で、次のプロジェクト報告rが取り出される。
【００７９】
次に、ステップ１０１０では、そのプロジェクト報告rのプロジェクトＩＤが、project_idという変数に代入される。ステップ１０１２では、プロジェクト報告のテキストが、構文解析される。この処理は、図２のテキスト解析部２２２によって実行される。この処理は、図２のテキスト解析部２０４に関連して説明したのと同等の処理でよい。また、テキスト解析部２２２は、表現パターン管理部２１２から提供される表現パターン２１６を参照して、そこにあるパターンのみ抽出するようにしてもよい。
【００８０】
こうして、ステップ１０１４では、プロジェクト報告rに含まれる表現パターンの一覧Erが、取得される。
【００８１】
次に、ステップ１０１６では、pp_maxという変数に、0.0が代入される。ステップ１０１８では、Erに未処理のパターンがあるかどうかが判断される。そして、もしあるなら、ステップ１０２０に進み、Erから、次の表現パターンeが取得される。
【００８２】
ステップ１０２２では、表現パターンeが、Epに含まれるかどうかが判断される。ここで、Epとは、表現パターン管理部２１２から提供される、表現パターン特性２１８のことである。図９で、選択パターン一覧として選ばれたものである、ということもできる。
【００８３】
もしステップ１０２２での判断が否定的であるなら、処理は、ステップ１０１８に戻る。一方、ステップ１０２２で、表現パターンeが、Epに含まれると判断されると、ppという変数に、表現パターンeのトラブル確率が代入される。図９からも見て取れるように、図８のフローチャートで示す処理の結果、予測トラブル確率が、Epに関連づけられているので、表現パターンeのトラブル確率が取得可能である。
【００８４】
ステップ１０２６では、そうして得られたppが、pp_maxよりも大きいかどうか判断され、もしそうなら、ステップ１０２８で、pp_maxにppの値を代入することによって最大値pp_maxを更新してステップ１０１８に戻り、そうでなければ直ちに、ステップ１０１８に戻る。
【００８５】
そして、ステップ１０１８でErに未処理のパターンが最早ないと判断されると、ステップ１０３０では、pp_maxを、プロジェクト報告rに対する予測トラブル確率として、ステップ１００６に戻る。
【００８６】
ステップ１００６のステップで、未処理のプロジェクト報告が最早ないと判断されると、ステップ１０３２で、プロジェクト報告一覧が、予測トラブル確率の降順にソートされ、ステップ１０３４では、ソートされたプロジェクト報告の一覧が、好適には、ディスプレイ１１４に出力表示される。図１１は、そのようなリスト表示の例である。
【００８７】
次に、過去プロジェクト報告の具体例と、それに関連する処理を説明する。
下記のような過去プロジェクト報告があったとする。
------------------------------------------------------------------
プロジェクトID  000012
レポートID  R100039
報告日時：2007年5月1日 14:30:14
お客様名  XXX株式会社
プロジェクトリーダーコメント：
次の月以降の契約についてお客様と調整した。さらに、お客様側から想定外の外部設計期間延長の話があり、追加支援契約内で実施することで合意。予期せぬプロジェクト計画変更が発生した。社内における契約の調整が必要である。また、顧客満足度調査における評価の低下も報告された。お客様に対しても慎重な対応が必要である。
予算超過：あり
日程超過：あり
------------------------------------------------------------------
【００８８】
ここからテキスト分析処理によって抽出した表現パターンの出現カウントは次の表のようになる。なおここでは、表現パターンとして「主語…述語」の形式のうち「名詞…動詞」および「名詞…形容動詞」形式のものを使用するものとした表を示す。本発明を実施する際は、ここで示したように係り受けパターンを指定して表現パターンの抽出をする方法と、あらかじめ人手で特定の表現セットを辞書として作成し、その辞書項目にマッチするものを抽出する方法の２通りがある。
【表３】
0005052375.tif 000007
過去の報告書のそれぞれについて同様に解析し、この表に追加することで過去プロジェクト情報集合が得られる。
【００８９】
次に、表現パターンの特性の例について説明する。
表現パターン特性は、[T, p] のリストで表現される。例えば、「計画変更…発生する」という表現パターンに関して計算された表現パターン特性をTの小さい順にソートして表にしたものを以下に示す。この表において、3列目は、pの累積値 (前行までのpの累積値(1行目の場合はゼロ)と、この行のpの和)である。
【表４】
0005052375.tif 000008
すなわち、この表現パターンが報告書に出現した場合、全体の累積値から87.9% (0.879388) の確率でそれはトラブルプロジェクトであり、さらに T>0 の部分の累積値から 76.2% (pp = 0.879388-0.116946 = 0.762442) の確率でこの表現パターンが報告書より出現した時点より後にトラブルが発生している。したがって、ppの値が大きいほど表現パターンはトラブル予測に効果が高いことになる。
【００９０】
図１２は、表現パターン特性を累積ヒストグラム(横軸をT, 縦軸をpの累積値としてプロットしたグラフ)上に図示したものである。
【００９１】
次に、過去のプロジェクトの出現パターンを適用した予測の結果の例を示す。
以下は、トラブル予測の対象となる新しいプロジェクト報告の一例である。
------------------------------------------------------------------
プロジェクトID  1084698
報告日時：2008年2月1日 18:09:31
お客様名  YYY株式会社
プロジェクトリーダーコメント：
社内手続きで契約承認まで済んだが、その後お客様都合により11/1開始に変更。作業内容の内部調整中。実契約に向けてお客様と日々調整中。現在遅れとなる要因は見受けられないが、いくつかの計画変更が発生している。そのため、今月に入ってから数度、作業スケジュールをお客様と調整した。その結果次第では、計画変更が発生する可能性がある。今後も注意が必要と考えている。
予算超過：なし
日程超過：あり
------------------------------------------------------------------
【００９２】
ここからテキスト分析によって抽出された、トラブル予測に使用される表現パターンは以下の通りである。
【表５】
0005052375.tif 000009
この表から、この報告書から得られるppの最大値は pp_max = 0.7624422 （「計画変更…発生する」の場合）である。
同様に、他のプロジェクトについてもそれぞれ新しい報告書についてこの処理を行い、pp_max を求める。この結果を、pp_max の降順にプロジェクトをソートして得られる表を以下に示す。
【表６】
0005052375.tif 000010
【００９３】
これが、本発明によって得られるプロジェクトトラブル発生確率の順位である。リストの上位にあるプロジェクトほどトラブルの可能性が高いという情報を元に、ユーザーはさらに、上から優先的にプロジェクト状況を精査することができる。（例えば、上に挙げたプロジェクト報告例のプロジェクト1084698 に関しては、ここでは第2位の優先度ということになる。）これにより、効率的にトラブル早期発見・予防が可能になる。
【００９４】
以上、特定の実施例に関して、本発明を説明してきたが、この実施例は、本発明の一実現例に過ぎず、発明の趣旨を逸脱することなく、様々な変形例を、この分野の当業者なら、考え出すことができるはずである。例えば、図２のブロック図では、過去のプロジェクト情報を構文解析して、新規のプロジェクトのトラブル予測のための表現パターンを求めているが、新規のプロジェクトが典型的なものであるなら、その都度過去のプロジェクト情報を構文解析することなく、今まで過去のプロジェクト情報を構文解析した情報をデータベース的に蓄積しておくことにより、その情報をそのまま、新規のプロジェクトのトラブル予測に使うことができる。
【００９５】
また例えば、図２のブロック図では、過去のプロジェクト情報および新規プロジェクト情報を用いる際、プロジェクトの種類や時期、規模などの分類については考慮せず、利用可能なプロジェクト情報を全て用いるとしていたが、プロジェクト情報をあらかじめ分類ごとに分け、それぞれについて図２の処理を行うことにより、プロジェクトの分類に応じて異なる表現パターンをトラブル予測に使用することができる。
【図面の簡単な説明】
【００９６】
【図１】本発明を実施するためのハードウェアの概要ブロック図である。
【図２】本発明を実施するための論理構成の概要ブロック図である。
【図３】表示パターン特性の例を示す図である。
【図４】トラブルの観測数を、時系列のヒストグラムとして表す処理のフローチャートを示す図である。
【図５】トラブルの観測数を、時系列のヒストグラムとして表す処理のフローチャートを示す図である。
【図６】トラブルの観測数を、時系列のヒストグラムとして表す処理のフローチャートを示す図である。
【図７】トラブルの観測数を、時系列のヒストグラムとして表す処理のフローチャートを示す図である。
【図８】表示パターンの特性から、予測に有効な表現パターンを選択する処理のフローチャートを示す図である。
【図９】表現パターンを選択するため画面を示す図である。
【図１０】トラブル・プロジェクトを予測する処理のフローチャートを示す図である。
【図１１】プロジェクト・トラブル予測ビューの画面を示す図である。
【図１２】表現パターンの累積ヒストグラム表示を示す図である。
【図１】
0005052375.tif 000011
【図２】
0005052375.tif 000012
【図３】
0005052375.tif 000013
【図４】
0005052375.tif 000014
【図５】
0005052375.tif 000015
【図６】
0005052375.tif 000016
【図７】
0005052375.tif 000017
【図８】
0005052375.tif 000018
【図９】
0005052375.tif 000019
【図１０】
0005052375.tif 000020
【図１１】
0005052375.tif 000021
【図１２】
0005052375.tif 000022