(57)【要約】システム・ソフトウェア開発の仕様書における要求・仕様の矛盾を、事前準備の労力をかけずに判定する。テキストで表現された２つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、２つの要求間の関連性を検出する関連性検出部と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、２つの要求が矛盾か否かを検出する矛盾検出部と、を備えることを特徴とする。
2014097790.tif 000002
【特許請求の範囲】
【請求項１】
テキストで表現された２つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、２つの要求間の関連性を検出する関連性検出部と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、２つの要求が矛盾か否かを検出する矛盾検出部と、を備えることを特徴とする要求間矛盾判定システム。
【請求項２】
前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの１つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする請求項１に記載の要求間矛盾判定システム。
【請求項３】
前記関連性検出部は、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、２つの要求が関連性ありと検出し、前記矛盾検出部は、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする請求項１又は請求項２に記載の要求間矛盾判定システム。
【請求項４】
前記関連性検出部と前記矛盾検出部とは、コルモゴロフ複雑性の概算法に基づいて、２つのテキスト間の類似度を計算することを特徴とする請求項１から請求項３の何れか一項に記載の要求間矛盾判定システム。
【請求項５】
前記関連性検出部と前記矛盾検出部は、類似度を計算する前に、前記関連性検出部において変換に用いる１つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、２つの要求を変換することを特徴とする請求項１から請求項４の何れか一項に記載の要求間矛盾判定システム。
【請求項６】
前記関連性検出部において変換する一方の要求が前記変換に用いた１つの矛盾ルールの１つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、２つの要求を変換することを特徴とする請求項５に記載の要求間矛盾判定システム。
【請求項７】
テキストで表現された要求を、予め定めた分割ルールに基づいて条件部と帰結部とに分割する要求分割部を備え、前記関連性検出部は、２つの要求の条件部のテキスト間の類似度と、２つの要求の帰結部のテキスト間の類似度とに基づいて、２つの要求の関連性を検出し、前記矛盾検出部は、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、２つの要求が矛盾か否かを検出することを特徴とする請求項１から請求項６の何れか一項に記載の要求間矛盾判定システム。
【請求項８】
テキストで表現された２つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、２つの要求間の関連性を検出する関連性検出ステップと、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、２つの要求が矛盾か否かを検出する矛盾検出ステップと、を備えることを特徴とする要求間矛盾判定方法。
【請求項９】
テキストで表現された２つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、２つの要求間の関連性を検出する関連性検出処理と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、２つの要求が矛盾か否かを検出する矛盾検出処理と、をコンピュータに実行させるための要求間矛盾判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム・ソフトウェア開発の仕様書において、要求間の矛盾を判定する要求間矛盾判定システム、方法およびプログラムに関する。
【背景技術】
【０００２】
システム・ソフトウェア開発における仕様書は、人手でレビューして矛盾が無いことを確認していた。しかし、量が多く重複した記載のある文書の検査には、コスト（期間と労力）がかかり、また、人手では見逃す場合があるという問題があった。
特許文献１には、仕様書の矛盾を検出する方法が開示されている。特許文献１では、ユースケースに基づいて、仕様書情報の正当性に関する条件（事前条件、事後条件、不変条件）を設定し、イベントフローの中から任意の操作を抽出し、抽出された操作に関する条件（事前条件、事後条件）を設定し、操作の条件を用いて、設定された条件が成立するか否かを判定する。しかし、特許文献１では、仕様書がユースケースの条件として厳密に設定されていることが前提であり、分析前の準備の労力が仕様書ごとにかかるという問題があった。
非特許文献１には、要求の対立を見つける方法が開示されている。非特許文献１では、要求を手動で属性に分類し、予め決められた属性間で、依存関係のある要求間に対立の関係があると推定する。しかし、非特許文献１では、要求間の依存関係または要求と実行コードとの関係が必要であり、それらの関係を事前準備する必要があるため、分析前の準備の労力が仕様書ごとにかかるという問題があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４３５１１８６号公報
【非特許文献】
【０００４】
【非特許文献１】Ａ．エジェド、Ｐ．グランバッカー（Ａ．  Ｅｇｙｅｄ、  Ｐ．Ｇｒｕｎｂａｃｈｅｒ）著、「アイデンティファイング  リクワイメント  コンフリクト  アンド  コオペレーション（Ｉｄｅｎｔｉｆｙｉｎｇ  Ｃｏｎｆｌｉｃｔｓ  ａｎｄ  Ｃｏ−ｏｐｅｒａｔｉｏｎ）」、２００４年発行の論文誌ＩＥＥＥソフトウェア（ＩＥＥＥ  Ｓｏｆｔｗａｒｅ）、２１巻６号５０−５８頁
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上記の事情を鑑みてなされるものであって、システム・ソフトウェア開発の仕様書における要求・仕様間の矛盾判定システム、方法およびプログラムを提供する。
本発明の要求間矛盾判定システムは、システム・ソフトウェア開発の仕様書における要求・仕様の矛盾を、事前準備の労力をかけずに判定することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の要求間矛盾判定システムは、テキストで表現された２つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、２つの要求間の関連性を検出する関連性検出部と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、２つの要求が矛盾か否かを検出する矛盾検出部と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、システム・ソフトウェア開発の仕様書における要求・仕様の矛盾を、事前準備の労力をかけずに判定することができる。なお、本発明では矛盾ルールを準備するが、矛盾ルールは仕様書ごとに準備する必要はなくシステム・ソフトウェア開発において共通化することができる。そのため、本発明では、仕様書ごとの事前準備の労力はかからない。
【図面の簡単な説明】
【０００８】
図１は、本発明の第１の実施形態による要求間矛盾判定システムの構成例を示すブロック図である。
図２は、要求記憶部１００に記憶された矛盾した要求の例を示す説明図である。
図３は、要求記憶部１００に記憶された矛盾した要求の別の例を示す説明図である。
図４は、矛盾ルール記憶部１０１に記憶された矛盾ルールの例を示す説明図である。
図５は、本発明の第１の実施形態による要求間矛盾判定システムの処理経過の例を示すフローチャートである。
図６は、要求記憶部１００に記憶された矛盾していない要求の例を示す説明図である。
図７は、本発明の第２の実施形態による要求間矛盾判定システムの構成例を示すブロック図である。
図８は、分割ルール記憶部２００に記憶された分割ルールの例を示す説明図である。
図９は、要求記憶部１００に記憶された矛盾した要求の例を示す説明図である。
図１０は、要求情報記憶部２０１に記憶された要求情報の例を示す説明図である。
図１１は、事前変換ルール記憶部２０２に記憶された事前変換ルールの例を示す説明図である。
図１２は、要求記憶部１００に記憶された別の要求の例を示す説明図である。
図１３は、要求情報記憶部２０１に記憶された別の要求情報の例を示す説明図である。
図１４は、本発明の第２の実施形態による要求間矛盾判定システムの処理経過の例を示すフローチャートである。
図１５は、本発明の第２の実施形態による要求間矛盾判定システムの要求ｉに対する要求分割部２０３の処理経過の例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
（第１の実施形態）
次に、本発明の第１の実施形態による要求間矛盾判定システムについて図面を参照して詳細に説明する。第１の実施形態に係る要求間矛盾判定システムは、２つの要求に対し、矛盾関係にある部分の矛盾を解消したときに２つの要求に関連性があるかを調べ、関連性があるならば、実際に矛盾であるかを検出する。矛盾関係にある部分の矛盾の解消は、矛盾関係にある複数の矛盾表現である矛盾ルールを用いて、一方の要求を変換することで行う。実際に矛盾であるかの検出は、矛盾関係のままの元の要求間の類似度と、矛盾を解消した要求間の類似度とを比較することで行う。なお、ここで、矛盾とは、ある事象が複数の状態となる可能性があり、同時に異なる状態にならない場合に、一方でその事象がある状態であるといい、もう一方で、その事象が別の状態であるということで、論理的に合わないことである。たとえば、ある事象が肯定か否定かという２つの状態のいずれかである場合に、ある事象を一方で肯定し、もう一方で否定すると、矛盾である。また、たとえば、ファイルＡがｒｅａｄ  ｏｎｌｙという状態か編集可能という状態かのいずれかの状態である場合に、一方でファイルＡがｒｅａｄ  ｏｎｌｙであるといい、もう一方で、ファイルＡが編集可能であるということは矛盾である。
図１を参照すると、本実施形態に係る要求間矛盾判定システムは、情報を記憶する記憶部１１と、プログラム制御により動作する計算部１２とから構成されている。
記憶部１１は、要求記憶部１００と、矛盾ルール記憶部１０１とを備える。
要求記憶部１００は、２つの要求を記憶する。２つの要求は、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。要求は、矛盾判定の対象とするドキュメントから抽出する。ドキュメントは、たとえば、提案依頼書（ＲＦＰ：  Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｐｒｏｐｏｓａｌ）であり、これは、発注元である官公庁や企業が情報システムやＩＴサービスなどを調達する際に、発注先となるＩＴベンダに対して提案を要請するためのドキュメントである。提案依頼書は、調達依頼書、入札依頼書、提案要請書、提案要求書、提案要望書、提案募集書、見積依頼書、提案書提出要請書、入札説明書、委託仕様書などとも呼ばれる。また、ドキュメントは、たとえば、提案書（Ｐｒｏｐｏｓａｌ）であり、これは、ＩＴベンダが具体的な提案事項を記載した文書である。提案書は、企画書、企画提案書などとも呼ばれる。また、ドキュメントは、たとえば、システムやサービスが満たすべき事項である要件事項を記載した仕様書である。仕様書は、要求仕様書、要求定義書、要件定義書、機能仕様書、設計書、契約書などとも呼ばれる。ここで、本発明の要求は、これら仕様書の仕様のことも含む。これらのドキュメントは、本文以外に表も含む。したがって、テキストで表現される要求は、主語や述語、目的語の備わった文だけでなく、用語の羅列のような文の切れ端も含まれる。図２は、要求記憶部１００に記憶された矛盾した要求の例を示す説明図である。図３は、要求記憶部１００に記憶された矛盾した要求の別の例を示す説明図である。これらの図で、１行目は列の見出し行であり、２行目からは１行ごとに１件の要求を示す。１列目の番号は、要求を示す番号である。２列目の要求テキストは、要求の内容を示すテキストである。以降では、番号がｉの要求を要求ｉと呼ぶことにする。ここで、図３の要求２は、ドキュメントの表から抽出した例である。なお、ここでは、要求記憶部１００の２つの要求に対して、矛盾か否かを判定する処理について説明するが、要求記憶部１００に３つ以上の要求を記憶しておき、記憶された要求のうちの２つの要求ごとに矛盾か否かを判定してもよい。また、ドキュメントから抽出した要求は、辞書などを用いて同義語をその代表語に統一し、冗長表現を簡略化しておいてもよい。たとえば、要求に「ｒｅａｄ  ｏｎｌｙ」、「読み込みのみ」、「読込みのみ」、「読込のみ」などと記述されているとき、これらの用語を同義語辞書を用いて「読込のみ」という用語に統一してから要求記憶部１００に記憶してもよい。同義語辞書は、手動で作成してもよいし、共通的な同義語辞書としては、たとえば、ＷｏｒｄＮｅｔなどがある。同義語辞書を用いた用語の統一は、手動で行ってもよいが、コンピュータなどを用いた自動変換としてもよい。
矛盾ルール記憶部１０１は、矛盾を判定するルールである矛盾ルールを記憶する。矛盾ルールとは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、そのそれぞれの矛盾表現は、文字列、あるいは、１つ以上の文字列を１つの文字列で表現したもの（正規表現）である。矛盾ルールは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。図４は、矛盾ルール記憶部１０１に記憶された矛盾ルールの例を示す説明図である。図で、１行目は列の見出し行であり、２行目からは１行ごとに１件の矛盾ルールを示す。１列目の番号は、矛盾ルールを示す番号である。２列目目の矛盾ルールの第一表現と３列目の矛盾ルールの第二表現とは、それぞれ、矛盾表現である。以降では、番号がｋの矛盾ルールを矛盾ルールｋと呼ぶことにする。矛盾ルールの第一表現と第二表現において、＜サ変名詞＞は、任意のサ変名詞を示す表現であり、”．＊”は、任意の文字列を示す表現である。なお、ここでは、第二表現の＜サ変名詞＞にマッチする文字列は、第一表現の＜サ変名詞＞にマッチする文字列と同一と指定したとする。また、ここでは、矛盾ルール記憶部１０１に記憶された矛盾ルールが２つの矛盾表現を持つ場合を例として説明するが、３つ以上の矛盾表現があってもよい。
計算部１２は、関連性検出部１０２と、矛盾検出部１０３とを備える。
関連性検出部１０２は、矛盾ルール記憶部１０１に記憶された矛盾ルールに基づいて、要求記憶部１００に記憶された２つの要求のうちの一方のテキストを変換し、その変換後のテキストと残るもう一方の要求テキストとの間の類似度に基づいて、２つの要求の関連性を検出する。矛盾ルールに基づいて要求テキストを変換するとは、たとえば、その要求に含まれる、矛盾ルールの２つの矛盾表現のうちの一方の矛盾表現にマッチする文字列を、矛盾ルールのもう一方の矛盾表現にマッチする文字列に変換することである。矛盾表現にマッチする文字列とは、たとえば、図４の矛盾ルール１の第一表現である矛盾表現「＜サ変名詞＞」に対し、この第一表現にマッチする「登録」、「削除」などの文字列のことである。ここで、関連性検出部１０２は、変換後の文字列が「登録．＊しない」のように任意の文字列を示す表現「．＊」を含む場合は、その任意の文字列を示す表現「．＊」を削除して（あるいは、任意の文字列が長さ０の文字列「」にマッチすると考えて）、「登録しない」を変換後の文字列とすることとする。たとえば、図２の要求１を図４の矛盾ルール１に基づいて変換する場合、関連性検出部１０２は、要求１のサ変名詞「登録」を「登録しない」に変換する。したがって、関連性検出部１０２は、要求１「データＡを登録。」を、「データＡを登録しない。」に変換する。なお、「登録」がサ変名詞であることは、たとえば、形態素解析エンジンを用いて検出することができる。形態素解析エンジンは、たとえば、ＭｅＣａｂやＣｈａＳｅｎなどがある。テキストを入力すると、ＭｅＣａｂやＣｈａＳｅｎは、テキストを単語ごとに区切り、単語がサ変名詞であれば「名詞，サ変接続」などと出力する。または、ＭｅＣａｂやＣｈａＳｅｎなどの形態素エンジンを用いなくても、記憶部に、サ変名詞を示す単語を並べて記憶しておき、関連性検出部１０２が、記憶部を検索してサ変名詞があるかどうかを調べてもよい。関連性検出部１０２は、変換した要求ｉと変換していない要求ｊとの間の類似度を、たとえば、コルモゴロフ複雑性の概算に基づいて概算することができる。関連性検出部１０２は、２つの要求に矛盾があると仮定し、一方の要求のテキストを変換することでその矛盾を解消したときに、２つの要求が整合するとみなせるだけの類似度があるかを調べる。自然言語テキスト間に矛盾があるかは、たとえば、構文解析の技術を用いて主語、述語、目的語などが一致するかを調べて、一致するときに、肯定と否定表現であるかを調べることも考えられる。しかし、仕様書で、「ユーザが登録ボタンを押下する。」と「登録ボタンへの押下がユーザにより行われる。」とが同じ意味となることを機械的に解釈するためには、同じ意味を示すさまざまな構文情報を事前に準備しておく必要がある。また、仕様書は、「登録ボタンを押下する。」、「画面に表示する。」など主語を省略する文がある。その理由は、仕様書という限定された場合においては、「登録ボタンを押下する。」の主語は「ユーザ」、「画面に表示する。」の主語は「システム」だと人間にとっては容易に解釈できるためである。主語が同じであることを機械的に解釈するためには、「押下」の主語は「ユーザ」であるなどの知識を事前に準備しておく必要がある。しかし、仕様書は業界・業種・お客様特有の知識を用いるため、事前にすべてを準備することは現実的に不可能である。さらに、仕様書からの要求に、図などから抽出した文の切れ端も含まれる場合、文の切れ端の解釈は一意とは限らないため、すべての解釈を事前に準備することはほぼ不可能である。そのため、本発明では類似度を用いて整合性を判定する。
矛盾検出部１０３は、関連性検出部１０２で関連性ありと検出された２つの要求に対し、関連性検出部１０２で計算された変換後の類似度と、要求記憶部１００に記憶された要求間の類似度とに基づいて、矛盾を検出する。検出した結果は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。なお、関連性検出部１０２は、矛盾する文字列がある場合に矛盾があると仮定して矛盾を解消したときに整合するか否かを調べたが、矛盾する文字列はあっても矛盾ではない場合がある。矛盾検出部１０３は、矛盾を解消した方が矛盾を解消しない場合よりも整合するとみなせるかを類似度で調べている。なお、矛盾ルールに３つ以上の矛盾表現がある場合には、２つずつの矛盾表現の組合せと考えて、本発明を適用してもよい。あるいは、矛盾ルールが３つ以上の矛盾表現を持つ場合、一方の要求が矛盾ルールの矛盾表現のうち１つの矛盾表現のみとマッチし、もう一方の要求が、矛盾ルールの別の１つの矛盾表現のみとマッチする場合のみを対象とするような設定としてもよい。３つ以上の矛盾表現がある場合の適用方法をどうするかは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。
次に、図５のフローチャートを参照して、本実施の形態１の全体の動作について詳細に説明する。
まず、関連性検出部１０２は、要求記憶部１００に記憶された要求のうち、第一の要求の番号を示すｉを１に、第二の要求の番号を示すｊを２に初期化する（ステップＡ１）。
次に、関連性検出部１０２は、矛盾ルール記憶部１０１に記憶された矛盾ルールの番号を示すｋを１に初期化する（ステップＡ２）。
次に、関連性検出部１０２は、ｋと矛盾ルール記憶部１０１に記憶された矛盾ルール数Ｋとを比較する（ステップＡ３）。ｋが矛盾ルール記憶部１０１に記憶された矛盾ルール数Ｋ以下ならば、関連性検出部１０２は、ステップＡ５に処理を移行する。ｋがＫより大きいならば、関連性検出部１０２は、ステップＡ４に処理を移行する。
関連性検出部１０２は、ｉと１とを比較する（ステップＡ４）。ｉと１とが等しければ、関連性検出部１０２は、ステップＡ１４に処理を移行する。ｉが１と等しくなければ、関連性検出部１０２は、動作を終了する。ここで、ｉが１と等しくない場合には、関連性検出部１０２は、矛盾が検出されなかったことを出力してもよい。出力は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。
関連性検出部１０２は、要求記憶部１００に記憶された要求ｉが矛盾ルール記憶部１０１に記憶された矛盾ルールｋの第一表現を含むかを調べる（ステップＡ５）。ここで、要求ｉが矛盾ルールｋの第一表現のみを含むとは、要求ｉのテキストが矛盾ルールｋの第一表現を含み、第二表現を含まないことである。要求ｉは矛盾ルールｋの第一表現のみを含むならば、関連性検出部１０２は、次のステップＡ６に処理を移行する。そうでないならば、関連性検出部１０２は、ステップＡ１２に処理を移行する。図２の２件の要求と図４の２件の矛盾ルールを例として説明する。ｉ＝１、ｊ＝２、ｋ＝１のとき、要求１「データＡを登録。」は、矛盾ルール１の第一表現「＜サ変名詞＞」として「登録」を含み、かつ、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」を含まないため、関連性検出部１０２は、次のステップＡ６に処理を移行する。次に、２件の要求が図２の代わりに図３の場合を例として説明する。ｉ＝１、ｊ＝２、ｋ＝１のときは、要求１「データＢは編集可能。」は矛盾ルール１の第一表現「＜サ変名詞＞」として「編集」を含み、かつ、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」を含まないため、関連性検出部１０２は、次のステップＡ６に処理を移行する。ｉ＝１、ｊ＝２、ｋ＝２のときは、要求１「データＢは編集可能。」は矛盾ルール２の第一表現「読込のみ」を含まないため、関連性検出部１０２は、ステップＡ１２に処理を移行する。ｉ＝２、ｊ＝１、ｋ＝１のときは、要求２「Ｂデータ。読込のみ。」は矛盾ルール１の第一表現「＜サ変名詞＞」として「読込」を含み、かつ、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」を含まないため、関連性検出部１０２は、次のステップＡ６に処理を移行する。ｉ＝２、ｊ＝１、ｋ＝２のときは、要求２「Ｂデータ。読込のみ。」は矛盾ルール２の第一表現「読込のみ」を含み、かつ、矛盾ルール２の第二表現「編集可能」を含まないため、関連性検出部１０２は、次のステップＡ６に処理を移行する。
次に、関連性検出部１０２は、矛盾ルール記憶部１０１に記憶された矛盾ルールｋの第二表現のうちで、複数の文字列にマッチする表現を、前のステップでマッチした第一表現の文字列として、変換する（ステップＡ６）。なお、ここで、第二表現が１つの文字列の場合は、本ステップは何もしない。また、変換した場合でも、矛盾ルール記憶部１０１へは変換した矛盾ルールを記憶しない。図２の２件の要求と図４の２件の矛盾ルールを例として説明する。ｉ＝１、ｊ＝２、ｋ＝１のときに本ステップに到達し、関連性検出部１０２は、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」に対し、「＜サ変名詞＞」を、前のステップで要求１が矛盾ルール１の第一表現「＜サ変名詞＞」として「登録」を含んでいたことから、「登録」に変換する。したがって、関連性検出部１０２は、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」を「登録．＊しない」に変換する。次に、２件の要求が図２の代わりに図３の場合を例として説明する。ｉ＝１、ｊ＝２、ｋ＝１のときに本ステップに到達し、関連性検出部１０２は、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」を「編集．＊しない」に変換する。ｉ＝２、ｊ＝１、ｋ＝１のときにも本ステップに到達し、関連性検出部１０２は、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」を「読込．＊しない」に変換する。ｉ＝２、ｊ＝１、ｋ＝２のときにも本ステップに到達し、関連性検出部１０２は、矛盾ルール２の第二表現「編集可能」を変換せずそのまま「編集可能」とする。
次に、関連性検出部１０２は、要求記憶部１００に記憶された要求ｊが矛盾ルールｋの第二表現を含むかを調べる（ステップＡ７）。ここで、矛盾ルールｋの第二表現が前のステップで変換された場合は、変換された第二表現を用いる。要求ｊが矛盾ルールｋの第二表現を含むならば、関連性検出部１０２は、次のステップＡ８に処理を移行する。含まないならば、関連性検出部１０２は、ステップＡ１２に処理を移行する。たとえば、図２の２件の要求と図４の２件の矛盾ルールの場合、ｉ＝１、ｊ＝２、ｋ＝１のときに本ステップに到達し、要求２「データＡの登録は、これをしない。」は矛盾ルール１の第二表現「登録．＊しない」を含むため、関連性検出部１０２は、次のステップＡ８に処理を移行する。次に２件の要求が図２の代わりに図３の場合を例として説明する。ｉ＝１、ｊ＝２、ｋ＝１のときに本ステップに到達し、要求２「Ｂデータ。読込のみ。」は矛盾ルール１の第二表現「編集．＊しない」を含まないため、関連性検出部１０２は、ステップＡ１２に処理を移行する。ｉ＝２、ｊ＝１、ｋ＝１のときに本ステップに到達し、要求１「データＢは編集可能。」が矛盾ルール１の第二表現「読込．＊しない」を含まないため、関連性検出部１０２は、ステップＡ１２に処理を移行する。ｉ＝２、ｊ＝１、ｋ＝２のときに本ステップに到達し、要求１「データＢは編集可能。」は矛盾ルール２の第二表現「編集可能」を含むため、関連性検出部１０２は、次のステップＡ８に処理を移行する。
次に、関連性検出部１０２は、矛盾ルールｋの第二表現を変換用に変換する（ステップＡ８）。ここで、関連性検出部１０２は、ステップＡ６で変換した矛盾ルールｋの第二表現のうちで、複数の文字列にマッチする表現を、最も短い１つの文字列に変換する。たとえば、関連性検出部１０２は、「登録．＊しない」を「登録しない」に変換し、「編集．＊しない」を「編集しない」に変換し、「読込．＊しない」を「読込しない」に変換する。なお、ここで、関連性検出部１０２は、矛盾ルール記憶部１０１の矛盾ルールｋを書き換えない。
次に、関連性検出部１０２は、要求記憶部１００に記憶された要求ｉを前のステップＡ８で変換された矛盾ルールｋを用いて変換する（ステップＡ９）。要求を変換するとは、要求ｉが含む矛盾ルールｋの第一表現を、矛盾ルールｋの第二表現に変換することである。なお、ここで、関連性検出部１０２は、要求記憶部１００は書き換えないものとする。すなわち、要求ｉの変換結果は、要求記憶部１００には記憶しないものとする。図２の２件の要求と図４の２件の矛盾ルールの場合、ｉ＝１、ｊ＝２、ｋ＝１のときに本ステップに到達し、関連性検出部１０２は、要求１「データＡを登録。」を、「データＡを登録しない。」に変換する。図２の代わりに図３の場合、ｉ＝２、ｊ＝１、ｋ＝２のときに本ステップに到達し、関連性検出部１０２は、要求１「Ｂデータ。読込のみ。」を「Ｂデータ。編集可能。」に変換する。
次に、関連性検出部１０２は、変換後の類似度として、変換した要求ｉと変換していない要求ｊと間の類似度（変換後の類似度）を計算し、計算した類似度と、予め定めた閾値とを比較する（ステップＡ１０）。類似度が閾値以上ならば、関連性検出部１０２は、矛盾検出部１０３のステップＡ１１に処理を移行する。類似度が閾値未満ならば、関連性検出部１０２は、ステップＡ１２に処理を移行する。また、類似度が閾値以上の場合は、関連性検出部１０２は、要求ｉと要求ｊを関連性ありと検出したこととする。類似度の計算は、たとえば、コルモゴロフ複雑性の概算法を用いて計算することができる。コルモゴロフ複雑性の概算は、たとえば、テキストを圧縮するアルゴリズムを予め定めると、テキストｉとテキストｊとの間の類似度ｓ（ｉ，ｊ）は、テキストｉを圧縮した場合のサイズをＣ（ｉ）、テキストｊを圧縮した場合のサイズをＣ（ｊ）、テキストｉとテキストｊとを連結させた新たなテキストを圧縮した場合のサイズをＣ（ｉｊ）とすると、たとえば、ｄ（ｉ，ｊ）＝１−Ｃ（ｉｊ）／｛Ｃ（ｉ）＋Ｃ（ｊ）｝あるいはｄ（ｉ，ｊ）＝１−［Ｃ（ｉｊ）−ｍｉｎ｛Ｃ（ｉ），Ｃ（ｊ）｝］／ｍａｘ｛Ｃ（ｉ），Ｃ（ｊ）｝に示す数式によって計算することができる。指定される圧縮アルゴリズムは、たとえば、ｇｉｐ、ｇｚｉｐなどである。圧縮アルゴリズムは、たとえば、文字列に対し、文字である記号あるいは以前の部分文字列との（一致長、一致位置）のペアで符号化する。符号化では、たとえば、文字列に出現する記号の個数を求め、個数の多い記号ほど短い符号を割り当てる。類似度の計算にコルモゴロフ複雑性の概算を用いる場合、類似度は、０から１までの値となる。その場合は、予め定めた閾値は、たとえば、０．５、０．４５または０．４などの値を用いればよい。また、類似度の計算は、２つの要求に共通する単語数や単語の出現頻度などを用いて計算することもできる。類似度の計算方法として何を用いるかは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。本ステップの処理について、図２の２件の要求と図４の２件の矛盾ルールを例として説明する。ｉ＝１、ｊ＝２、ｋ＝１の場合、前述したように、変換後の要求１は、「データＡを登録しない。」となり、この変換後の要求１は、要求２「データＡの登録は、これをしない。」と類似している。そのため、変換後の要求１と変換していない要求２との間の類似度は、予め定めた閾値以上となる。したがって、関連性検出部１０２は、関連性ありと検出し、矛盾検出部１０３のステップＡ１１に処理を移行する。また、図２の代わりに図３で、ｉ＝２、ｊ＝１、ｋ＝２の場合には、変換後の要求２「Ｂデータ。編集可能。」と変換していない要求１「データＢは編集可能。」は類似している。そのため、類似度は閾値以上となり、関連性検出部１０２は、関連性ありと検出し、矛盾検出部１０３のステップＡ１１に処理を移行する。なお、ここでは、変換後の類似度と予め定めた閾値とを比較する方法について説明したが、要求記憶部１００に多くの要求が記憶されている場合、関連性検出部１０２は、変換後の多くの類似度の分布などから、閾値を推定してもよい。または、変換後の多くの類似度の分布を見ながら、システムのユーザが閾値を決定してもよい。
次に、矛盾検出部１０３は、要求記憶部１００に記憶された要求ｉと要求ｊとの類似度（変換前の類似度）を計算し、関連性検出部１０２で計算した変換後の類似度と変換前の類似度とを比較する（ステップＡ１１）。変換後の類似度が変換前の類似度以上ならば、矛盾検出部１０３は、ステップＡ１３に処理を移行する。変換後の類似度が変換前の類似度未満ならば、矛盾検出部１０３は、関連性検出部１０２のステップＡ１２に処理を移行する。たとえば、図２と図４で、ｉ＝１、ｊ＝２、ｋ＝１の場合、変換した要求１「データＡを登録しない。」と変換していない要求２「データＡの登録は、これをしない。」との間の類似度は高く、変換していない要求１「データＡを登録。」と変換していない要求２「データＡの登録は、これをしない。」との間の類似度は低いため、矛盾検出部１０３は、ステップＡ１３に処理を移行する。図３と図４で、ｉ＝２、ｊ＝１、ｋ＝２の場合、変換した要求２「Ｂデータ。編集可能。」と変換していない要求１「データＢは編集可能。」との類似度は、変換していない要求２「Ｂデータ。読込のみ。」と変換していない要求１との類似度以上になるため、矛盾検出部１０３は、ステップＡ１３に処理を移行する。次に、関連性検出部１０２だけでなく矛盾検出部１０３が必要となる例を示す。図６は、要求記憶部１００に記憶された矛盾していない要求の例を示す説明図である。図６の２件の要求と図４の２件の矛盾ルールとする。図６の２件の要求はｉ＝１、ｊ＝２、ｋ＝１のときは、ステップＡ５で、要求１「データＢは読込のみ。」が矛盾ルール１の第一表現「＜サ変名詞＞」として「読込」を含み、かつ、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」を含まないため、関連性検出部１０２は、次のステップＡ６に処理を移行し、矛盾ルール１の第二表現を「読込．＊しない」に変換する。そして、関連性検出部１０２は、ステップＡ７に処理を移行し、要求２「データＡは編集可能でデータＢは読込のみ。」は矛盾ルール１の第二表現「読込．＊しない」を含まないため、本ステップに到達しない。ｉ＝１、ｊ＝２、ｋ＝２のときは、ステップＡ５で、要求１「データＢは読込のみ。」が矛盾ルール２の第一表現「読込のみ」を含み、矛盾ルール２の第二表現「編集可能」を含まないため、関連性検出部１０２は、次のステップＡ６に処理を移行し、矛盾ルール２の第二表現を「編集可能」のままとする。そして、関連性検出部１０２は、次のステップＡ７に処理を移行し、要求２「データＡは編集可能でデータＢは読込のみ。」が矛盾ルール２の第二表現「編集可能」を含むため、次のステップＡ８に移行する。そして、関連性検出部１０２は、ステップＡ８では、矛盾ルール２に第二表現「編集可能」のままとし、次のステップＡ９に処理を移行する。そして、関連性検出部１０２は、ステップＡ９で、要求１「データＢは読込のみ。」を「データＢは編集可能。」に変換する。そして、関連性検出部１０２は、次のステップＡ１０で、変換後の要求１「データＢは編集可能。」と変換していない要求２「データＡは編集可能でデータＢは読込のみ。」との間の類似度を計算する。これらの変換後の要求１と変換していない要求２とは類似しているので、閾値以上となり、本ステップがないならば、矛盾として検出されてしまう。しかし、矛盾検出部１０３の本ステップに到達すると、変換前の要求１と変換していない要求２との類似度を計算する。ここで、変換後の要求１「データＢは編集可能。」と変換していない要求２「データＡは編集可能でデータＢは読込のみ。」とは、「データ」、「は編集可能」、「データＢは」、「。」が一致する。一方、変換前の要求１「データＢは読込のみ。」と変換していない要求２「データＡは編集可能でデータＢは読込のみ。」とは、「データＢは読込のみ。」、「データ」。「は」が一致する。コルモゴロフ複雑性の概算法を用いると、文字列が長く一致するほど類似度が高くなるため、より長い文字列「データＢは読込のみ。」が一致する変換前の要求１と変換していない要求２との類似度が高くなる。したがって、本ステップで、変換後の類似度が変換前の類似度未満となるため、矛盾検出部１０３は、矛盾と検出せずに、処理を移行する。ｉ＝２、ｊ＝１、ｋ＝１のときは、ステップＡ５で、要求２「データＡは編集可能でデータＢは読込のみ。」が、矛盾ルール１の第一表現「＜サ変名詞＞」として「編集」または「読込」を含み、かつ、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」を含まないため、関連性検出部１０２は、次のステップＡ６に移行する。ステップＡ６では、前のステップでのマッチが「編集」の場合は、関連性検出部１０２は、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」を「編集．＊しない」に変換し、前のステップでのマッチが「読込」の場合は、矛盾ルール１の第二表現「＜サ変名詞＞．＊しない」を「読込．＊しない」に変換する。そして、関連性検出部１０２は、次のステップＡ８に移行し、矛盾ルール１の第二表現を「編集しない」または「読込しない」に変換し、次のステップＡ７に処理を移行する。そして、ステップＡ７で、要求１が矛盾ルール１の第二表現である「編集．＊しない」または「読込．＊しない」を含まないため、本ステップに到達しない。ｉ＝２、ｊ＝１、ｋ＝２のときは、ステップＡ５で、要求２「データＡは編集可能でデータＢは読込のみ。」が、矛盾ルール２の第一表現「読込のみ」を含むが、矛盾ルール１の第二表現「編集可能」も含むため、本ステップに到達しない。このようにして、矛盾検出部１０３の本ステップは、図６の２件の要求を矛盾と検出しないことができる。
次に、関連性検出部１０２は、ｋをインクリメントする（ステップＡ１２）。そして、関連性検出部１０２は、ステップＡ３に処理を移行する。
矛盾検出部１０３は、２つの要求を矛盾として検出する（ステップＡ１３）。検出した結果は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。そして、矛盾検出部１０３は、処理を終了する。
関連性検出部１０２は、ｉを２、ｊを１に変更する（ステップＡ１４）。そして、ステップＡ２に移行する。すなわち、要求１と要求２とを取り替えた逆の処理を開始する。
本実施形態によれば、システム・ソフトウェア開発の仕様書における要求の矛盾を、事前準備の労力をかけずに判定することができる。本発明で準備する矛盾ルールは、仕様書ごとでなくシステム・ソフトウェア開発全般に対して準備すればよいため、本発明では、仕様書ごとの事前準備の労力はかからない。なお、ここでは説明を簡単にするため、１つの要求にサ変名詞が１つ含まれる場合について説明したが、１つの要求に複数のサ変名詞が含まれる場合、それぞれのサ変名詞に対して矛盾となるかを関連性検出部と矛盾検出部とを繰り返し用いて同様に調べて、１つでも矛盾となるサ変名詞があるならば、矛盾と検出してもよい。
（第２の実施形態）
次に、本発明の第２の実施形態による要求間矛盾判定システムについて図面を参照して詳細に説明する。なお、第１の実施形態と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
図７を参照すると、本実施形態に係る要求間矛盾判定システムは、情報を記憶する記憶部２１と、プログラム制御により動作する計算部２２とから構成されている。
記憶部２１は、要求記憶部１００と、分割ルール記憶部２００と、矛盾ルール記憶部１０１と、要求情報記憶部２０１と、事前変換ルール記憶部２０２とを備える。
要求記憶部１００は、実施形態１と同様である。
分割ルール記憶部２００は、要求を条件部と帰結部とに分割するための分割ルールを記憶する。分割ルールは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。図８は、分割ルール記憶部２００に記憶された分割ルールの例を示す説明図である。図で、１行目は列の見出し行であり、２行目からは１行ごとに１件の分割ルールを示す。１列目の番号は、分割ルールを示す番号を示す。２列目の分割パターンは、分割ルールのパターン表現を示す。以降、番号がｉの分割ルールを分割ルールｉと呼ぶことにする。図の分割パターンでは、「＾」は先頭を示す表現、「＄」は末尾を示す表現である。「＜先頭不要語＞」は、文の先頭として不要な語であり、たとえば、「、」、「には」などである。「＜末尾不要語＞」は、文の末尾として不要な語であり、たとえば、「の」などである。「（）」は、囲まれた部分にマッチしたところを左から数えて、最初が「＄１」、２番目が「＄２」で参照できることを示す。図の３列目は、条件部としてどのマッチを参照するかを示す。４列目は、帰結部としてどのマッチを参照するかを示す。この例では、最初のマッチである「＄１」を条件部、２番目のマッチである「＄２」を帰結部として参照することを示す。
矛盾ルール記憶部１０１は、実施形態１と同様である。
要求情報記憶部２０１は、要求記憶部１００に記憶された要求の情報である要求情報を記憶する。要求情報記憶部２０１は、図９は、要求記憶部１００に記憶された矛盾した要求の例を示す説明図である。図１０は、要求情報記憶部２０１に記憶された要求情報の例を示す説明図である。図９の要求に対し、図１０の要求情報は、それぞれの要求の条件部と帰結部を記憶する。図１０で、１行目は列の見出し行であり、２行目からは１行ごとに１件の要求情報を示す。１列目の番号は、要求情報を示す番号である。２列目の条件部は、要求の条件部、３列目の帰結部は、要求の帰結部を示す。４列目の変換後の条件部は、事前変換ルール記憶部２０２に記載された事前ルールに基づいて変換された後の条件部、５列目の変換後の帰結部は、事前変換ルール記憶部２０２に記載された事前ルールに基づいて変換された後の帰結部を示す。以降では、番号がｉの要求情報を要求情報ｉと呼ぶことにする。また、要求記憶部１００の要求ｉに対する要求情報は、要求情報記憶部２０１の要求情報ｉであるものとする。要求情報記憶部２０１は、処理の開始時点では空であり、本発明の処理にしたがって要求情報が記憶される。
事前変換ルール記憶部２０２は、類似度を計算する前にテキストを変換するための事前変換ルールを記憶する。事前変換ルールは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。図１１は、事前変換ルール記憶部２０２に記憶された事前変換ルールの例を示す説明図である。図で、１行目は列の見出し行であり、２行目からは１行ごとに１件の事前変換ルールを示す。１列目の番号は事前変換ルールの番号を示す。２列目の矛盾ルールの番号は、その事前変換ルールを適用する前提となる矛盾ルールの番号を示す。事前変換ルールは、２つの表現から成っており、３列目の第一表現と４列目の第二表現は、それぞれ、事前変換ルールの変換前の表現と変換後の表現を示す。以降では、番号がｍの事前変換ルールを事前変換ルールｍと呼ぶことにする。図１１で、事前変換ルール１の矛盾ルールの番号が「１」であることから、事前変換ルール１は、図４の矛盾ルール１を用いて変換する場合に適用する。矛盾ルール１は、＜サ変名詞＞とマッチさせており、「＜マッチ外のサ変名詞＞」とは、マッチしたサ変名詞とは異なる別のサ変名詞のことである。図１１で、事前変換ルール２の矛盾ルールの番号が「２」であることから、事前変換ルールは、図４の矛盾ルール２を用いて変換する場合に適用する。なお、ここでは、事前変換ルールの第二表現が空（長さ０の文字列）である場合を例として説明しているが、事前変換ルールの第二表現は、空以外でよいものとする。
計算部２２は、要求分割部２０３と、関連性検出部２０４と、矛盾検出部２０５とを備える。
要求分割部２０３は、分割ルール記憶部２００に記憶された分割ルールに基づいて、要求記憶部１００に記憶された要求を、条件部と帰結部とに分割し、分割した結果を要求情報記憶部２０１に記憶する。図８と図９とを例として説明する。要求分割部２０３は、図９の要求１「Ａボタンを押下とき登録した」に対し、図８の分割ルール１の分割パターン「＾（．＊）＜末尾不要語＞場合（．＊）＄」はマッチせず、分割ルール２の分割パターン「＾（．＊）＜末尾不要語＞とき（．＊）＄」がマッチするため、分割ルール２にしたがって、「の」＋「とき」＋「、」、すなわち、「のとき、」の前までの「Ａボタンを押下」を条件部、「のとき、」の後の「登録した」を帰結部と判定する。また、図９の要求２「データＡを削除。場合にはボタンＡを押した」に対し、図８の分割ルール１の分割パターンがマッチするため、分割ルール１にしたがって、「場合」＋「には」、すなわち、「場合には」の前までの「データＡを削除。」を条件部、「場合には」の後の「ボタンＡを押した」を帰結部と判定する。そして、要求分割部２０３は、図１０の要求情報１のように要求情報を要求情報記憶部２０１に記憶する。
関連性検出部２０４は、矛盾ルール記憶部１０１に記憶された矛盾ルールに基づいて、要求情報記憶部２０１に記憶された要求の条件部と帰結部とを変換し、変換結果を要求情報記憶部２０１に記憶する。そして、要求情報記憶部２０１に記憶された要求情報に基づいて、２つの要求の関連性を検出する。ドキュメントから抽出した要求を、辞書などを用いて同義語をその代表語に統一し、冗長表現を簡略化することに関しては、実施形態１の要求記憶部１００で説明した通りである。ここでの事前変換とは、適用する矛盾ルールごとに行う事前変換である。たとえば、矛盾ルール記憶部１０１に記憶された１つの矛盾ルールに対し、関連性検出部２０４は、要求情報に対し、事前変換ルールの第一表現にマッチする文字列を、事前変換ルールの第二表現にマッチする文字列に変換する。図１１の事前変換ルールに基づいて、図１０の要求情報を変換する場合を例として説明する。図１０の要求情報１で図４の矛盾ルール１を用いて変換する場合、要求情報１の条件部「Ａボタンを押下」は図１１のどの事前変換ルールの第一表現にもマッチしないため、関連性検出部２０４は、条件部を変換せず、要求情報１の条件部「Ａボタンを押下」のまま図１０の変換後の条件部に記憶する。要求情報１の帰結部「登録したデータＡを削除。」は、事前変換ルール２の第一表現にマッチするため、関連性検出部２０４は、「登録した」を削除し、図１０にあるように、変換後の帰結部を「データＡを削除。」として、図１０の変換後の帰結部に記憶する。
矛盾検出部２０５は、関連性検出部２０４で計算した類似度と、要求情報に記憶された要求情報の帰結部間の類似度とに基づいて、矛盾を検出する。ここでは、実施形態１における要求の代わりに、要求情報の帰結部を用いればよい。
次に、図１４のフローチャートを参照して、本実施の形態２の全体の動作について詳細に説明する。
まず、要求分割部２０３は、分割ルール記憶部２００に記憶された分割ルールに基づいて、要求記憶部１００に記憶された２つの要求を、条件部と帰結部とに分割する（ステップＡ１５）。そして、要求分割部２０３は、条件部のテキストと帰結部のテキストとを要求情報記憶部２０１に記憶する。本ステップの詳細な処理については後述する。
次に、関連性検出部２０４は、矛盾ルール記憶部１０１に記憶された矛盾ルールの番号を示すｋを１に初期化する（ステップＡ１６）。
次に、関連性検出部２０４は、ｋと矛盾ルール記憶部１０１に記憶された矛盾ルール数Ｋとを比較する（ステップＡ１７）。ｋが矛盾ルール記憶部１０１に記憶された矛盾ルール数Ｋ以下ならば、関連性検出部２０４は、ステップＡ１８に処理を移行する。ｋがＫより大きいならば、関連性検出部２０４は、２つの要求は矛盾とはいえないと判定し、処理を終了する。ここで、ｋがＫより大きいならば、関連性検出部２０４は、矛盾でなかったと出力してもよい。出力は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。
次に、関連性検出部２０４は、矛盾ルールｋと事前変換ルール記憶部２０２に記憶された事前変換ルールとに基づいて、２つの要求を変換する（ステップＡ１８）。
次に、関連性検出部２０４は、２つの要求の条件部の類似度を計算する（ステップＡ１９）。ここで、２つの要求の条件部が両方とも空（長さ０の文字列）の場合は、２つの要求の条件部の類似度を次のステップの閾値より高い値とする。すなわち、２つの要求が両方とも条件部がない場合は、関連性検出部２０４は、次のステップで条件部が類似したと判定することとする。２つの要求の条件部のうち一方が空の場合は、コルモゴロフ複雑性の概算を用いると、類似度は、概ね０となる。すなわち、２つの要求の一方だけに条件部がある場合は、関連性検出部２０４は、次のステップで条件部が類似しないと判定することとする。
次に、関連性検出部２０４は、計算した条件部の類似度と閾値を比較する（ステップＡ２０）。閾値は、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。類似度が閾値以上ならば、関連性検出部２０４は、次のステップＡ２１に処理を移行する。類似度が閾値未満ならば、関連性検出部２０４は、ステップＡ２３に処理を移行する。すなわち、関連性検出部２０４は、条件部が類似している場合のみ、矛盾かどうかを調べる。
次に、関連性検出部２０４は、矛盾ルールを用いて一方を変換した帰結部の類似度と閾値とを比較する（ステップＡ２１）。閾値は、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。なお、本ステップで閾値は、前のステップＡ２０と同じ値を用いてもよいし、別の値を指定してもよい。矛盾ルールを用いた変換については、実施形態１と同様の処理である。ある１つの矛盾ルールに対し、一方を変換した帰結部の類似度が閾値以上ならば、関連性検出部２０４は、次のステップＡ２２に処理を移行する。類似度が閾値未満ならば、関連性検出部２０４は、ステップＡ２３に処理を移行する。実施形態１との違いを示すために、事前変換ルールを用いた変換の別の例を示す。図１２は、要求記憶部１００に記憶された別の要求の例を示す説明図である。図１３は、要求情報記憶部２０１に記憶された別の要求情報の例を示す説明図である。図１２の要求に対し、図１３の要求情報は、それぞれの要求の条件部と帰結部を記憶する。図で示すように、２つの要求は、矛盾はしていない。２つの要求の条件部は類似しており、要求情報１の帰結部「登録したデータＡを削除。」はサ変名詞である「削除」とマッチするが「削除．＊しない」とはマッチせず、要求情報２の帰結部「データＡを削除するが登録しない。」は「削除．＊しない」とマッチする。要求情報の帰結部を要求とみなして実施形態１の処理を行うと、要求情報１の帰結部を図４の矛盾ルール１を用いて「登録したデータＡを削除しない。」に変換する。そして、変換した要求情報１の帰結部と変換していない要求情報２の帰結部とが類似することから、関連性ありと検出してしまう。一方、本実施形態２を用いると、関連性検出部２０４は、図４の矛盾ルール１で＜サ変名詞＞として「削除」を用いる場合、図１１の事前変換ルール１により、「登録」が「削除」以外のサ変名詞であることから、要求情報２の帰結部「データＡを削除するが登録しない。」から「登録しない」を削除し、図１３の要求情報１の変換後の帰結部にあるように、「データＡを削除するが。」となる。そのため、図１３にあるように、要求情報１の帰結部「データＡを削除。」と要求情報２の帰結部「データＡを削除するが．」とは、図４の矛盾ルールとはマッチせず、関連性検出部２０４はこれら２つの要求を関連性ありとは検出しなくなる。
次に、矛盾検出部２０５は、要求情報記憶部２０１を参照して、事前変換ルールを用いて変換した後、矛盾ルールを用いて変換する前の帰結部間の類似度を計算し、関連性検出部２０４で計算した変換後の類似度と、矛盾検出部２０５で計算した矛盾ルールでの変換前の類似度とを比較する（ステップＡ２２）。変換後の類似度が矛盾ルールでの変換前の類似度以上ならば、矛盾検出部２０５は、次のステップＡ２４に処理を移行する。変換後の類似度が矛盾ルールでの変換前の類似度未満ならば、矛盾検出部２０５は、次のステップＡ２３に処理を移行する。
次に、関連性検出部２０４は、ｋをインクリメントする（ステップＡ２３）。そして、関連性検出部２０４は、ステップＡ１７に処理を移行する。
矛盾検出部２０５は、２つの要求を矛盾として検出する（ステップＡ２４）。検出結果は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。そして、矛盾検出部２０５は、処理を終了する。
次に、図１５のフローチャートを参照して、本実施の形態２の要求ｉに対する要求分割部２０３の動作について詳細に説明する。
まず、要求分割部２０３は、分割ルールを示す番号ｍを１に初期化する（ステップＡ２５）。
次に、要求分割部２０３は、ｍと分割ルール数Ｍとを比較する（ステップＡ２６）。ｍがＭ以下ならば、要求分割部２０３は、次のステップＡ２７に処理を移行する。ｍがＭより大きければ、要求分割部２０３は、ステップＡ３０に処理を移行する。
次に、要求分割部２０３は、要求ｉが分割ルールｍの分割パターンとマッチするかを調べる（ステップＡ２７）。マッチするならば、要求分割部２０３は、ステップＡ２９に処理を移行する。マッチしないならば、要求分割部２０３は、次のステップＡ２８に処理を移行する。
次に、要求分割部２０３は、割ルールの番号を示すｍをインクリメントする（ステップＡ２８）。そして、要求分割部２０３は、ステップＡ２６に処理を移行する。
要求分割部２０３は、分割ルール１を用いて、要求を条件部、帰結部へと分割する（ステップＡ２９）。そして、要求分割部２０３は、処理を終了する。たとえば、図９の要求１「Ａボタンを押下したとき、登録した」は、図１０の、条件部は、「Ａボタンを押下した」、帰結部は、「登録した」となる。
要求分割部２０３は、要求ｉの条件部を空のまま、帰結部を要求ｉそのものとする（ステップＡ３０）。それから、要求分割部２０３は、処理を終了する。
本実施形態によれば、要求分割部で要求を条件部と帰結部に分割し、関連性検出部で条件部が類似した要求間のみでの矛盾を検出するため、条件部が一致しない２つの要求を矛盾と誤検出しなくなり、矛盾と誤検出することが軽減される。また、関連性検出部において、要求を事前変換するため、矛盾と誤検出することが軽減される。
なお、本発明に記載した方法は、コンピュータに実行させることのできるプログラムとして、フロッピー（登録商標）ディスク、ハードディスクなどの磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤなどの光ディスク、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト等のミドルウェアなどが各処理の一部を実行してもよい。
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネットなどにより伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であってもよい。
本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき各処理を実行するものであって、パソコンなどからなる装置、複数の装置がネットワーク接続されたシステムなどの何れの構成であってもよい。
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置を含み、プログラムによって本発明の機能を実現することが可能な機器、装置である。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。また、構成要素を適宜組合せてもよい。
この出願は、２０１２年１２月１８日に出願された日本国特許出願第２０１２−２７５７４５号からの優先権を基礎として、その利益を主張するものであり、その開示はここに全体として参考文献として取り込む。
また、上記の実施形態の一部または全部は、以下のようにも記載されうる。なお、以下の付記は本発明をなんら限定するものではない。
（付記１）
テキストで表現された２つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、２つの要求間の関連性を検出する関連性検出部と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、２つの要求が矛盾か否かを検出する矛盾検出部と、を備えることを特徴とする要求間矛盾判定システム。
（付記２）
前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの１つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする上記付記１に記載の要求間矛盾判定システム。
（付記３）
前記関連性検出部は、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、２つの要求が関連性ありと検出し、前記矛盾検出部は、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする上記付記１又は上記付記２に記載の要求間矛盾判定システム。
（付記４）
前記関連性検出部と前記矛盾検出部とは、コルモゴロフ複雑性の概算法に基づいて、２つのテキスト間の類似度を計算することを特徴とする上記付記１から上記付記３の何れか一項に記載の要求間矛盾判定システム。
（付記５）
前記関連性検出部と前記矛盾検出部は、類似度を計算する前に、前記関連性検出部において変換に用いる１つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、２つの要求を変換することを特徴とする上記付記１から上記付記４の何れか一項に記載の要求間矛盾判定システム。
（付記６）
前記関連性検出部において変換する一方の要求が前記変換に用いた１つの矛盾ルールの１つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、２つの要求を変換することを特徴とする上記付記５に記載の要求間矛盾判定システム。
（付記７）
テキストで表現された要求を、予め定めた分割ルールに基づいて条件部と帰結部とに分割する要求分割部を備え、前記関連性検出部は、２つの要求の条件部のテキスト間の類似度と、２つの要求の帰結部のテキスト間の類似度とに基づいて、２つの要求の関連性を検出し、前記矛盾検出部は、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、２つの要求が矛盾か否かを検出することを特徴とする上記付記１から上記付記６の何れか一項に記載の要求間矛盾判定システム。
（付記８）
テキストで表現された２つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、２つの要求間の関連性を検出する関連性検出ステップと、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、２つの要求が矛盾か否かを検出する矛盾検出ステップと、を備えることを特徴とする要求間矛盾判定方法。
（付記９）
前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの１つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする上記付記８に記載の要求間矛盾判定方法。
（付記１０）
前記関連性検出ステップは、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、２つの要求が関連性ありと検出し、前記矛盾検出ステップは、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする上記付記８又は上記付記９に記載の要求間矛盾判定方法。
（付記１１）
前記関連性検出ステップと前記矛盾検出ステップとは、コルモゴロフ複雑性の概算法に基づいて、２つのテキスト間の類似度を計算することを特徴とする上記付記８から上記付記１０の何れか一項に記載の要求間矛盾判定方法。
（付記１２）
前記関連性検出ステップと前記矛盾検出ステップは、類似度を計算する前に、前記関連性検出部において変換に用いる１つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、２つの要求を変換することを特徴とする上記付記８から上記付記１１の何れか一項に記載の要求間矛盾判定方法。
（付記１３）
前記関連性検出部において変換する一方の要求が前記変換に用いた１つの矛盾ルールの１つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、２つの要求を変換することを特徴とする上記付記１２に記載の要求間矛盾判定方法。
（付記１４）
テキストで表現された要求を、予め定めた分割ルールに基づいて条件ステップと帰結ステップとに分割する要求分割部を備え、前記関連性検出ステップは、２つの要求の条件部のテキスト間の類似度と、２つの要求の帰結部のテキスト間の類似度とに基づいて、２つの要求の関連性を検出し、前記矛盾検出ステップは、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、２つの要求が矛盾か否かを検出することを特徴とする上記付記８から上記付記１３の何れか一項に記載の要求間矛盾判定方法。
（付記１５）
テキストで表現された２つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、２つの要求間の関連性を検出する関連性検出処理と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、２つの要求が矛盾か否かを検出する矛盾検出処理と、を備えることを特徴とする要求間矛盾判定プログラム。
（付記１６）
前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの１つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする上記付記１５に記載の要求間矛盾判定プログラム。
（付記１７）
前記関連性検出処理は、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、２つの要求が関連性ありと検出し、前記矛盾検出処理は、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする上記付記１５又は上記付記１６に記載の要求間矛盾判定プログラム。
（付記１８）
前記関連性検出処理と前記矛盾検出処理とは、コルモゴロフ複雑性の概算法に基づいて、２つのテキスト間の類似度を計算することを特徴とする上記付記１５から上記付記１７の何れか一項に記載の要求間矛盾判定プログラム。
（付記１９）
前記関連性検出処理と前記矛盾検出処理は、類似度を計算する前に、前記関連性検出部において変換に用いる１つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、２つの要求を変換することを特徴とする上記付記１５から上記付記１８の何れか一項に記載の要求間矛盾判定プログラム。
（付記２０）
前記関連性検出部において変換する一方の要求が前記変換に用いた１つの矛盾ルールの１つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、２つの要求を変換することを特徴とする上記付記１９に記載の要求間矛盾判定プログラム。
（付記２１）
テキストで表現された要求を、予め定めた分割ルールに基づいて条件処理と帰結処理とに分割する要求分割部を備え、前記関連性検出処理は、２つの要求の条件部のテキスト間の類似度と、２つの要求の帰結部のテキスト間の類似度とに基づいて、２つの要求の関連性を検出し、前記矛盾検出処理は、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、２つの要求が矛盾か否かを検出することを特徴とする上記付記１５から上記付記２０の何れか一項に記載の要求間矛盾判定プログラム。
【符号の説明】
【００１０】
１１  記憶部
１２  計算部
２１  記憶部
２２  計算部
１００  要求記憶部
１０１  矛盾ルール記憶部
１０２  関連性検出部
１０３  矛盾検出部
２００  分割ルール記憶部
２０１  要求情報記憶部
２０２  事前変換ルール記憶部
２０３  要求分割部
２０４  関連性検出部
２０５  矛盾検出部
この出願は、２０１２年１２月１８日に出願された日本出願特願第２０１２−２７５７４５号を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
【図１】
2014097790.tif 000003
【図２】
2014097790.tif 000004
【図３】
2014097790.tif 000005
【図４】
2014097790.tif 000006
【図５】
2014097790.tif 000007
【図６】
2014097790.tif 000008
【図７】
2014097790.tif 000009
【図８】
2014097790.tif 000010
【図９】
2014097790.tif 000011
【図１０】
2014097790.tif 000012
【図１１】
2014097790.tif 000013
【図１２】
2014097790.tif 000014
【図１３】
2014097790.tif 000015
【図１４】
2014097790.tif 000016
【図１５】
2014097790.tif 000017
【国際調査報告】
2014097790.tif 000018
2014097790.tif 000019