JP6260791B2 - 要求間矛盾判定システム、要求間矛盾判定方法、および、要求間矛盾判定プログラム - Google Patents
要求間矛盾判定システム、要求間矛盾判定方法、および、要求間矛盾判定プログラム Download PDFInfo
- Publication number
- JP6260791B2 JP6260791B2 JP2014553025A JP2014553025A JP6260791B2 JP 6260791 B2 JP6260791 B2 JP 6260791B2 JP 2014553025 A JP2014553025 A JP 2014553025A JP 2014553025 A JP2014553025 A JP 2014553025A JP 6260791 B2 JP6260791 B2 JP 6260791B2
- Authority
- JP
- Japan
- Prior art keywords
- contradiction
- request
- detection unit
- requests
- rule
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Description
本発明は、システム・ソフトウェア開発の仕様書において、要求間の矛盾を判定する要求間矛盾判定システム、方法およびプログラムに関する。
システム・ソフトウェア開発における仕様書は、人手でレビューして矛盾が無いことを確認していた。しかし、量が多く重複した記載のある文書の検査には、コスト(期間と労力)がかかり、また、人手では見逃す場合があるという問題があった。
特許文献1には、仕様書の矛盾を検出する方法が開示されている。特許文献1では、ユースケースに基づいて、仕様書情報の正当性に関する条件(事前条件、事後条件、不変条件)を設定し、イベントフローの中から任意の操作を抽出し、抽出された操作に関する条件(事前条件、事後条件)を設定し、操作の条件を用いて、設定された条件が成立するか否かを判定する。しかし、特許文献1では、仕様書がユースケースの条件として厳密に設定されていることが前提であり、分析前の準備の労力が仕様書ごとにかかるという問題があった。
非特許文献1には、要求の対立を見つける方法が開示されている。非特許文献1では、要求を手動で属性に分類し、予め決められた属性間で、依存関係のある要求間に対立の関係があると推定する。しかし、非特許文献1では、要求間の依存関係または要求と実行コードとの関係が必要であり、それらの関係を事前準備する必要があるため、分析前の準備の労力が仕様書ごとにかかるという問題があった。
特許文献1には、仕様書の矛盾を検出する方法が開示されている。特許文献1では、ユースケースに基づいて、仕様書情報の正当性に関する条件(事前条件、事後条件、不変条件)を設定し、イベントフローの中から任意の操作を抽出し、抽出された操作に関する条件(事前条件、事後条件)を設定し、操作の条件を用いて、設定された条件が成立するか否かを判定する。しかし、特許文献1では、仕様書がユースケースの条件として厳密に設定されていることが前提であり、分析前の準備の労力が仕様書ごとにかかるという問題があった。
非特許文献1には、要求の対立を見つける方法が開示されている。非特許文献1では、要求を手動で属性に分類し、予め決められた属性間で、依存関係のある要求間に対立の関係があると推定する。しかし、非特許文献1では、要求間の依存関係または要求と実行コードとの関係が必要であり、それらの関係を事前準備する必要があるため、分析前の準備の労力が仕様書ごとにかかるという問題があった。
A.エジェド、P.グランバッカー(A. Egyed、 P.Grunbacher)著、「アイデンティファイング リクワイメント コンフリクト アンド コオペレーション(Identifying Conflicts and Co−operation)」、2004年発行の論文誌IEEEソフトウェア(IEEE Software)、21巻6号50−58頁
本発明は、上記の事情を鑑みてなされるものであって、システム・ソフトウェア開発の仕様書における要求・仕様間の矛盾判定システム、方法およびプログラムを提供する。
本発明の要求間矛盾判定システムは、システム・ソフトウェア開発の仕様書における要求・仕様の矛盾を、事前準備の労力をかけずに判定することを目的とする。
本発明の要求間矛盾判定システムは、システム・ソフトウェア開発の仕様書における要求・仕様の矛盾を、事前準備の労力をかけずに判定することを目的とする。
本発明の要求間矛盾判定システムは、テキストで表現された2つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、2つの要求間の関連性を検出する関連性検出部と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、2つの要求が矛盾か否かを検出する矛盾検出部と、を備えることを特徴とする。
本発明によれば、システム・ソフトウェア開発の仕様書における要求・仕様の矛盾を、事前準備の労力をかけずに判定することができる。なお、本発明では矛盾ルールを準備するが、矛盾ルールは仕様書ごとに準備する必要はなくシステム・ソフトウェア開発において共通化することができる。そのため、本発明では、仕様書ごとの事前準備の労力はかからない。
図1は、本発明の第1の実施形態による要求間矛盾判定システムの構成例を示すブロック図である。
図2は、要求記憶部100に記憶された矛盾した要求の例を示す説明図である。
図3は、要求記憶部100に記憶された矛盾した要求の別の例を示す説明図である。
図4は、矛盾ルール記憶部101に記憶された矛盾ルールの例を示す説明図である。
図5は、本発明の第1の実施形態による要求間矛盾判定システムの処理経過の例を示すフローチャートである。
図6は、要求記憶部100に記憶された矛盾していない要求の例を示す説明図である。
図7は、本発明の第2の実施形態による要求間矛盾判定システムの構成例を示すブロック図である。
図8は、分割ルール記憶部200に記憶された分割ルールの例を示す説明図である。
図9は、要求記憶部100に記憶された矛盾した要求の例を示す説明図である。
図10は、要求情報記憶部201に記憶された要求情報の例を示す説明図である。
図11は、事前変換ルール記憶部202に記憶された事前変換ルールの例を示す説明図である。
図12は、要求記憶部100に記憶された別の要求の例を示す説明図である。
図13は、要求情報記憶部201に記憶された別の要求情報の例を示す説明図である。
図14は、本発明の第2の実施形態による要求間矛盾判定システムの処理経過の例を示すフローチャートである。
図15は、本発明の第2の実施形態による要求間矛盾判定システムの要求iに対する要求分割部203の処理経過の例を示すフローチャートである。
図2は、要求記憶部100に記憶された矛盾した要求の例を示す説明図である。
図3は、要求記憶部100に記憶された矛盾した要求の別の例を示す説明図である。
図4は、矛盾ルール記憶部101に記憶された矛盾ルールの例を示す説明図である。
図5は、本発明の第1の実施形態による要求間矛盾判定システムの処理経過の例を示すフローチャートである。
図6は、要求記憶部100に記憶された矛盾していない要求の例を示す説明図である。
図7は、本発明の第2の実施形態による要求間矛盾判定システムの構成例を示すブロック図である。
図8は、分割ルール記憶部200に記憶された分割ルールの例を示す説明図である。
図9は、要求記憶部100に記憶された矛盾した要求の例を示す説明図である。
図10は、要求情報記憶部201に記憶された要求情報の例を示す説明図である。
図11は、事前変換ルール記憶部202に記憶された事前変換ルールの例を示す説明図である。
図12は、要求記憶部100に記憶された別の要求の例を示す説明図である。
図13は、要求情報記憶部201に記憶された別の要求情報の例を示す説明図である。
図14は、本発明の第2の実施形態による要求間矛盾判定システムの処理経過の例を示すフローチャートである。
図15は、本発明の第2の実施形態による要求間矛盾判定システムの要求iに対する要求分割部203の処理経過の例を示すフローチャートである。
(第1の実施形態)
次に、本発明の第1の実施形態による要求間矛盾判定システムについて図面を参照して詳細に説明する。第1の実施形態に係る要求間矛盾判定システムは、2つの要求に対し、矛盾関係にある部分の矛盾を解消したときに2つの要求に関連性があるかを調べ、関連性があるならば、実際に矛盾であるかを検出する。矛盾関係にある部分の矛盾の解消は、矛盾関係にある複数の矛盾表現である矛盾ルールを用いて、一方の要求を変換することで行う。実際に矛盾であるかの検出は、矛盾関係のままの元の要求間の類似度と、矛盾を解消した要求間の類似度とを比較することで行う。なお、ここで、矛盾とは、ある事象が複数の状態となる可能性があり、同時に異なる状態にならない場合に、一方でその事象がある状態であるといい、もう一方で、その事象が別の状態であるということで、論理的に合わないことである。たとえば、ある事象が肯定か否定かという2つの状態のいずれかである場合に、ある事象を一方で肯定し、もう一方で否定すると、矛盾である。また、たとえば、ファイルAがread onlyという状態か編集可能という状態かのいずれかの状態である場合に、一方でファイルAがread onlyであるといい、もう一方で、ファイルAが編集可能であるということは矛盾である。
図1を参照すると、本実施形態に係る要求間矛盾判定システムは、情報を記憶する記憶部11と、プログラム制御により動作する計算部12とから構成されている。
記憶部11は、要求記憶部100と、矛盾ルール記憶部101とを備える。
要求記憶部100は、2つの要求を記憶する。2つの要求は、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。要求は、矛盾判定の対象とするドキュメントから抽出する。ドキュメントは、たとえば、提案依頼書(RFP: Request For Proposal)であり、これは、発注元である官公庁や企業が情報システムやITサービスなどを調達する際に、発注先となるITベンダに対して提案を要請するためのドキュメントである。提案依頼書は、調達依頼書、入札依頼書、提案要請書、提案要求書、提案要望書、提案募集書、見積依頼書、提案書提出要請書、入札説明書、委託仕様書などとも呼ばれる。また、ドキュメントは、たとえば、提案書(Proposal)であり、これは、ITベンダが具体的な提案事項を記載した文書である。提案書は、企画書、企画提案書などとも呼ばれる。また、ドキュメントは、たとえば、システムやサービスが満たすべき事項である要件事項を記載した仕様書である。仕様書は、要求仕様書、要求定義書、要件定義書、機能仕様書、設計書、契約書などとも呼ばれる。ここで、本発明の要求は、これら仕様書の仕様のことも含む。これらのドキュメントは、本文以外に表も含む。したがって、テキストで表現される要求は、主語や述語、目的語の備わった文だけでなく、用語の羅列のような文の切れ端も含まれる。図2は、要求記憶部100に記憶された矛盾した要求の例を示す説明図である。図3は、要求記憶部100に記憶された矛盾した要求の別の例を示す説明図である。これらの図で、1行目は列の見出し行であり、2行目からは1行ごとに1件の要求を示す。1列目の番号は、要求を示す番号である。2列目の要求テキストは、要求の内容を示すテキストである。以降では、番号がiの要求を要求iと呼ぶことにする。ここで、図3の要求2は、ドキュメントの表から抽出した例である。なお、ここでは、要求記憶部100の2つの要求に対して、矛盾か否かを判定する処理について説明するが、要求記憶部100に3つ以上の要求を記憶しておき、記憶された要求のうちの2つの要求ごとに矛盾か否かを判定してもよい。また、ドキュメントから抽出した要求は、辞書などを用いて同義語をその代表語に統一し、冗長表現を簡略化しておいてもよい。たとえば、要求に「read only」、「読み込みのみ」、「読込みのみ」、「読込のみ」などと記述されているとき、これらの用語を同義語辞書を用いて「読込のみ」という用語に統一してから要求記憶部100に記憶してもよい。同義語辞書は、手動で作成してもよいし、共通的な同義語辞書としては、たとえば、WordNetなどがある。同義語辞書を用いた用語の統一は、手動で行ってもよいが、コンピュータなどを用いた自動変換としてもよい。
矛盾ルール記憶部101は、矛盾を判定するルールである矛盾ルールを記憶する。矛盾ルールとは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、そのそれぞれの矛盾表現は、文字列、あるいは、1つ以上の文字列を1つの文字列で表現したもの(正規表現)である。矛盾ルールは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。図4は、矛盾ルール記憶部101に記憶された矛盾ルールの例を示す説明図である。図で、1行目は列の見出し行であり、2行目からは1行ごとに1件の矛盾ルールを示す。1列目の番号は、矛盾ルールを示す番号である。2列目目の矛盾ルールの第一表現と3列目の矛盾ルールの第二表現とは、それぞれ、矛盾表現である。以降では、番号がkの矛盾ルールを矛盾ルールkと呼ぶことにする。矛盾ルールの第一表現と第二表現において、<サ変名詞>は、任意のサ変名詞を示す表現であり、”.*”は、任意の文字列を示す表現である。なお、ここでは、第二表現の<サ変名詞>にマッチする文字列は、第一表現の<サ変名詞>にマッチする文字列と同一と指定したとする。また、ここでは、矛盾ルール記憶部101に記憶された矛盾ルールが2つの矛盾表現を持つ場合を例として説明するが、3つ以上の矛盾表現があってもよい。
計算部12は、関連性検出部102と、矛盾検出部103とを備える。
関連性検出部102は、矛盾ルール記憶部101に記憶された矛盾ルールに基づいて、要求記憶部100に記憶された2つの要求のうちの一方のテキストを変換し、その変換後のテキストと残るもう一方の要求テキストとの間の類似度に基づいて、2つの要求の関連性を検出する。矛盾ルールに基づいて要求テキストを変換するとは、たとえば、その要求に含まれる、矛盾ルールの2つの矛盾表現のうちの一方の矛盾表現にマッチする文字列を、矛盾ルールのもう一方の矛盾表現にマッチする文字列に変換することである。矛盾表現にマッチする文字列とは、たとえば、図4の矛盾ルール1の第一表現である矛盾表現「<サ変名詞>」に対し、この第一表現にマッチする「登録」、「削除」などの文字列のことである。ここで、関連性検出部102は、変換後の文字列が「登録.*しない」のように任意の文字列を示す表現「.*」を含む場合は、その任意の文字列を示す表現「.*」を削除して(あるいは、任意の文字列が長さ0の文字列「」にマッチすると考えて)、「登録しない」を変換後の文字列とすることとする。たとえば、図2の要求1を図4の矛盾ルール1に基づいて変換する場合、関連性検出部102は、要求1のサ変名詞「登録」を「登録しない」に変換する。したがって、関連性検出部102は、要求1「データAを登録。」を、「データAを登録しない。」に変換する。なお、「登録」がサ変名詞であることは、たとえば、形態素解析エンジンを用いて検出することができる。形態素解析エンジンは、たとえば、MeCabやChaSenなどがある。テキストを入力すると、MeCabやChaSenは、テキストを単語ごとに区切り、単語がサ変名詞であれば「名詞,サ変接続」などと出力する。または、MeCabやChaSenなどの形態素エンジンを用いなくても、記憶部に、サ変名詞を示す単語を並べて記憶しておき、関連性検出部102が、記憶部を検索してサ変名詞があるかどうかを調べてもよい。関連性検出部102は、変換した要求iと変換していない要求jとの間の類似度を、たとえば、コルモゴロフ複雑性の概算に基づいて概算することができる。関連性検出部102は、2つの要求に矛盾があると仮定し、一方の要求のテキストを変換することでその矛盾を解消したときに、2つの要求が整合するとみなせるだけの類似度があるかを調べる。自然言語テキスト間に矛盾があるかは、たとえば、構文解析の技術を用いて主語、述語、目的語などが一致するかを調べて、一致するときに、肯定と否定表現であるかを調べることも考えられる。しかし、仕様書で、「ユーザが登録ボタンを押下する。」と「登録ボタンへの押下がユーザにより行われる。」とが同じ意味となることを機械的に解釈するためには、同じ意味を示すさまざまな構文情報を事前に準備しておく必要がある。また、仕様書は、「登録ボタンを押下する。」、「画面に表示する。」など主語を省略する文がある。その理由は、仕様書という限定された場合においては、「登録ボタンを押下する。」の主語は「ユーザ」、「画面に表示する。」の主語は「システム」だと人間にとっては容易に解釈できるためである。主語が同じであることを機械的に解釈するためには、「押下」の主語は「ユーザ」であるなどの知識を事前に準備しておく必要がある。しかし、仕様書は業界・業種・お客様特有の知識を用いるため、事前にすべてを準備することは現実的に不可能である。さらに、仕様書からの要求に、図などから抽出した文の切れ端も含まれる場合、文の切れ端の解釈は一意とは限らないため、すべての解釈を事前に準備することはほぼ不可能である。そのため、本発明では類似度を用いて整合性を判定する。
矛盾検出部103は、関連性検出部102で関連性ありと検出された2つの要求に対し、関連性検出部102で計算された変換後の類似度と、要求記憶部100に記憶された要求間の類似度とに基づいて、矛盾を検出する。検出した結果は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。なお、関連性検出部102は、矛盾する文字列がある場合に矛盾があると仮定して矛盾を解消したときに整合するか否かを調べたが、矛盾する文字列はあっても矛盾ではない場合がある。矛盾検出部103は、矛盾を解消した方が矛盾を解消しない場合よりも整合するとみなせるかを類似度で調べている。なお、矛盾ルールに3つ以上の矛盾表現がある場合には、2つずつの矛盾表現の組合せと考えて、本発明を適用してもよい。あるいは、矛盾ルールが3つ以上の矛盾表現を持つ場合、一方の要求が矛盾ルールの矛盾表現のうち1つの矛盾表現のみとマッチし、もう一方の要求が、矛盾ルールの別の1つの矛盾表現のみとマッチする場合のみを対象とするような設定としてもよい。3つ以上の矛盾表現がある場合の適用方法をどうするかは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。
次に、図5のフローチャートを参照して、本実施の形態1の全体の動作について詳細に説明する。
まず、関連性検出部102は、要求記憶部100に記憶された要求のうち、第一の要求の番号を示すiを1に、第二の要求の番号を示すjを2に初期化する(ステップA1)。
次に、関連性検出部102は、矛盾ルール記憶部101に記憶された矛盾ルールの番号を示すkを1に初期化する(ステップA2)。
次に、関連性検出部102は、kと矛盾ルール記憶部101に記憶された矛盾ルール数Kとを比較する(ステップA3)。kが矛盾ルール記憶部101に記憶された矛盾ルール数K以下ならば、関連性検出部102は、ステップA5に処理を移行する。kがKより大きいならば、関連性検出部102は、ステップA4に処理を移行する。
関連性検出部102は、iと1とを比較する(ステップA4)。iと1とが等しければ、関連性検出部102は、ステップA14に処理を移行する。iが1と等しくなければ、関連性検出部102は、動作を終了する。ここで、iが1と等しくない場合には、関連性検出部102は、矛盾が検出されなかったことを出力してもよい。出力は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。
関連性検出部102は、要求記憶部100に記憶された要求iが矛盾ルール記憶部101に記憶された矛盾ルールkの第一表現を含むかを調べる(ステップA5)。ここで、要求iが矛盾ルールkの第一表現のみを含むとは、要求iのテキストが矛盾ルールkの第一表現を含み、第二表現を含まないことである。要求iは矛盾ルールkの第一表現のみを含むならば、関連性検出部102は、次のステップA6に処理を移行する。そうでないならば、関連性検出部102は、ステップA12に処理を移行する。図2の2件の要求と図4の2件の矛盾ルールを例として説明する。i=1、j=2、k=1のとき、要求1「データAを登録。」は、矛盾ルール1の第一表現「<サ変名詞>」として「登録」を含み、かつ、矛盾ルール1の第二表現「<サ変名詞>.*しない」を含まないため、関連性検出部102は、次のステップA6に処理を移行する。次に、2件の要求が図2の代わりに図3の場合を例として説明する。i=1、j=2、k=1のときは、要求1「データBは編集可能。」は矛盾ルール1の第一表現「<サ変名詞>」として「編集」を含み、かつ、矛盾ルール1の第二表現「<サ変名詞>.*しない」を含まないため、関連性検出部102は、次のステップA6に処理を移行する。i=1、j=2、k=2のときは、要求1「データBは編集可能。」は矛盾ルール2の第一表現「読込のみ」を含まないため、関連性検出部102は、ステップA12に処理を移行する。i=2、j=1、k=1のときは、要求2「Bデータ。読込のみ。」は矛盾ルール1の第一表現「<サ変名詞>」として「読込」を含み、かつ、矛盾ルール1の第二表現「<サ変名詞>.*しない」を含まないため、関連性検出部102は、次のステップA6に処理を移行する。i=2、j=1、k=2のときは、要求2「Bデータ。読込のみ。」は矛盾ルール2の第一表現「読込のみ」を含み、かつ、矛盾ルール2の第二表現「編集可能」を含まないため、関連性検出部102は、次のステップA6に処理を移行する。
次に、関連性検出部102は、矛盾ルール記憶部101に記憶された矛盾ルールkの第二表現のうちで、複数の文字列にマッチする表現を、前のステップでマッチした第一表現の文字列として、変換する(ステップA6)。なお、ここで、第二表現が1つの文字列の場合は、本ステップは何もしない。また、変換した場合でも、矛盾ルール記憶部101へは変換した矛盾ルールを記憶しない。図2の2件の要求と図4の2件の矛盾ルールを例として説明する。i=1、j=2、k=1のときに本ステップに到達し、関連性検出部102は、矛盾ルール1の第二表現「<サ変名詞>.*しない」に対し、「<サ変名詞>」を、前のステップで要求1が矛盾ルール1の第一表現「<サ変名詞>」として「登録」を含んでいたことから、「登録」に変換する。したがって、関連性検出部102は、矛盾ルール1の第二表現「<サ変名詞>.*しない」を「登録.*しない」に変換する。次に、2件の要求が図2の代わりに図3の場合を例として説明する。i=1、j=2、k=1のときに本ステップに到達し、関連性検出部102は、矛盾ルール1の第二表現「<サ変名詞>.*しない」を「編集.*しない」に変換する。i=2、j=1、k=1のときにも本ステップに到達し、関連性検出部102は、矛盾ルール1の第二表現「<サ変名詞>.*しない」を「読込.*しない」に変換する。i=2、j=1、k=2のときにも本ステップに到達し、関連性検出部102は、矛盾ルール2の第二表現「編集可能」を変換せずそのまま「編集可能」とする。
次に、関連性検出部102は、要求記憶部100に記憶された要求jが矛盾ルールkの第二表現を含むかを調べる(ステップA7)。ここで、矛盾ルールkの第二表現が前のステップで変換された場合は、変換された第二表現を用いる。要求jが矛盾ルールkの第二表現を含むならば、関連性検出部102は、次のステップA8に処理を移行する。含まないならば、関連性検出部102は、ステップA12に処理を移行する。たとえば、図2の2件の要求と図4の2件の矛盾ルールの場合、i=1、j=2、k=1のときに本ステップに到達し、要求2「データAの登録は、これをしない。」は矛盾ルール1の第二表現「登録.*しない」を含むため、関連性検出部102は、次のステップA8に処理を移行する。次に2件の要求が図2の代わりに図3の場合を例として説明する。i=1、j=2、k=1のときに本ステップに到達し、要求2「Bデータ。読込のみ。」は矛盾ルール1の第二表現「編集.*しない」を含まないため、関連性検出部102は、ステップA12に処理を移行する。i=2、j=1、k=1のときに本ステップに到達し、要求1「データBは編集可能。」が矛盾ルール1の第二表現「読込.*しない」を含まないため、関連性検出部102は、ステップA12に処理を移行する。i=2、j=1、k=2のときに本ステップに到達し、要求1「データBは編集可能。」は矛盾ルール2の第二表現「編集可能」を含むため、関連性検出部102は、次のステップA8に処理を移行する。
次に、関連性検出部102は、矛盾ルールkの第二表現を変換用に変換する(ステップA8)。ここで、関連性検出部102は、ステップA6で変換した矛盾ルールkの第二表現のうちで、複数の文字列にマッチする表現を、最も短い1つの文字列に変換する。たとえば、関連性検出部102は、「登録.*しない」を「登録しない」に変換し、「編集.*しない」を「編集しない」に変換し、「読込.*しない」を「読込しない」に変換する。なお、ここで、関連性検出部102は、矛盾ルール記憶部101の矛盾ルールkを書き換えない。
次に、関連性検出部102は、要求記憶部100に記憶された要求iを前のステップA8で変換された矛盾ルールkを用いて変換する(ステップA9)。要求を変換するとは、要求iが含む矛盾ルールkの第一表現を、矛盾ルールkの第二表現に変換することである。なお、ここで、関連性検出部102は、要求記憶部100は書き換えないものとする。すなわち、要求iの変換結果は、要求記憶部100には記憶しないものとする。図2の2件の要求と図4の2件の矛盾ルールの場合、i=1、j=2、k=1のときに本ステップに到達し、関連性検出部102は、要求1「データAを登録。」を、「データAを登録しない。」に変換する。図2の代わりに図3の場合、i=2、j=1、k=2のときに本ステップに到達し、関連性検出部102は、要求1「Bデータ。読込のみ。」を「Bデータ。編集可能。」に変換する。
次に、関連性検出部102は、変換後の類似度として、変換した要求iと変換していない要求jと間の類似度(変換後の類似度)を計算し、計算した類似度と、予め定めた閾値とを比較する(ステップA10)。類似度が閾値以上ならば、関連性検出部102は、矛盾検出部103のステップA11に処理を移行する。類似度が閾値未満ならば、関連性検出部102は、ステップA12に処理を移行する。また、類似度が閾値以上の場合は、関連性検出部102は、要求iと要求jを関連性ありと検出したこととする。類似度の計算は、たとえば、コルモゴロフ複雑性の概算法を用いて計算することができる。コルモゴロフ複雑性の概算は、たとえば、テキストを圧縮するアルゴリズムを予め定めると、テキストiとテキストjとの間の類似度s(i,j)は、テキストiを圧縮した場合のサイズをC(i)、テキストjを圧縮した場合のサイズをC(j)、テキストiとテキストjとを連結させた新たなテキストを圧縮した場合のサイズをC(ij)とすると、たとえば、d(i,j)=1−C(ij)/{C(i)+C(j)}あるいはd(i,j)=1−[C(ij)−min{C(i),C(j)}]/max{C(i),C(j)}に示す数式によって計算することができる。指定される圧縮アルゴリズムは、たとえば、gip、gzipなどである。圧縮アルゴリズムは、たとえば、文字列に対し、文字である記号あるいは以前の部分文字列との(一致長、一致位置)のペアで符号化する。符号化では、たとえば、文字列に出現する記号の個数を求め、個数の多い記号ほど短い符号を割り当てる。類似度の計算にコルモゴロフ複雑性の概算を用いる場合、類似度は、0から1までの値となる。その場合は、予め定めた閾値は、たとえば、0.5、0.45または0.4などの値を用いればよい。また、類似度の計算は、2つの要求に共通する単語数や単語の出現頻度などを用いて計算することもできる。類似度の計算方法として何を用いるかは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。本ステップの処理について、図2の2件の要求と図4の2件の矛盾ルールを例として説明する。i=1、j=2、k=1の場合、前述したように、変換後の要求1は、「データAを登録しない。」となり、この変換後の要求1は、要求2「データAの登録は、これをしない。」と類似している。そのため、変換後の要求1と変換していない要求2との間の類似度は、予め定めた閾値以上となる。したがって、関連性検出部102は、関連性ありと検出し、矛盾検出部103のステップA11に処理を移行する。また、図2の代わりに図3で、i=2、j=1、k=2の場合には、変換後の要求2「Bデータ。編集可能。」と変換していない要求1「データBは編集可能。」は類似している。そのため、類似度は閾値以上となり、関連性検出部102は、関連性ありと検出し、矛盾検出部103のステップA11に処理を移行する。なお、ここでは、変換後の類似度と予め定めた閾値とを比較する方法について説明したが、要求記憶部100に多くの要求が記憶されている場合、関連性検出部102は、変換後の多くの類似度の分布などから、閾値を推定してもよい。または、変換後の多くの類似度の分布を見ながら、システムのユーザが閾値を決定してもよい。
次に、矛盾検出部103は、要求記憶部100に記憶された要求iと要求jとの類似度(変換前の類似度)を計算し、関連性検出部102で計算した変換後の類似度と変換前の類似度とを比較する(ステップA11)。変換後の類似度が変換前の類似度以上ならば、矛盾検出部103は、ステップA13に処理を移行する。変換後の類似度が変換前の類似度未満ならば、矛盾検出部103は、関連性検出部102のステップA12に処理を移行する。たとえば、図2と図4で、i=1、j=2、k=1の場合、変換した要求1「データAを登録しない。」と変換していない要求2「データAの登録は、これをしない。」との間の類似度は高く、変換していない要求1「データAを登録。」と変換していない要求2「データAの登録は、これをしない。」との間の類似度は低いため、矛盾検出部103は、ステップA13に処理を移行する。図3と図4で、i=2、j=1、k=2の場合、変換した要求2「Bデータ。編集可能。」と変換していない要求1「データBは編集可能。」との類似度は、変換していない要求2「Bデータ。読込のみ。」と変換していない要求1との類似度以上になるため、矛盾検出部103は、ステップA13に処理を移行する。次に、関連性検出部102だけでなく矛盾検出部103が必要となる例を示す。図6は、要求記憶部100に記憶された矛盾していない要求の例を示す説明図である。図6の2件の要求と図4の2件の矛盾ルールとする。図6の2件の要求はi=1、j=2、k=1のときは、ステップA5で、要求1「データBは読込のみ。」が矛盾ルール1の第一表現「<サ変名詞>」として「読込」を含み、かつ、矛盾ルール1の第二表現「<サ変名詞>.*しない」を含まないため、関連性検出部102は、次のステップA6に処理を移行し、矛盾ルール1の第二表現を「読込.*しない」に変換する。そして、関連性検出部102は、ステップA7に処理を移行し、要求2「データAは編集可能でデータBは読込のみ。」は矛盾ルール1の第二表現「読込.*しない」を含まないため、本ステップに到達しない。i=1、j=2、k=2のときは、ステップA5で、要求1「データBは読込のみ。」が矛盾ルール2の第一表現「読込のみ」を含み、矛盾ルール2の第二表現「編集可能」を含まないため、関連性検出部102は、次のステップA6に処理を移行し、矛盾ルール2の第二表現を「編集可能」のままとする。そして、関連性検出部102は、次のステップA7に処理を移行し、要求2「データAは編集可能でデータBは読込のみ。」が矛盾ルール2の第二表現「編集可能」を含むため、次のステップA8に移行する。そして、関連性検出部102は、ステップA8では、矛盾ルール2に第二表現「編集可能」のままとし、次のステップA9に処理を移行する。そして、関連性検出部102は、ステップA9で、要求1「データBは読込のみ。」を「データBは編集可能。」に変換する。そして、関連性検出部102は、次のステップA10で、変換後の要求1「データBは編集可能。」と変換していない要求2「データAは編集可能でデータBは読込のみ。」との間の類似度を計算する。これらの変換後の要求1と変換していない要求2とは類似しているので、閾値以上となり、本ステップがないならば、矛盾として検出されてしまう。しかし、矛盾検出部103の本ステップに到達すると、変換前の要求1と変換していない要求2との類似度を計算する。ここで、変換後の要求1「データBは編集可能。」と変換していない要求2「データAは編集可能でデータBは読込のみ。」とは、「データ」、「は編集可能」、「データBは」、「。」が一致する。一方、変換前の要求1「データBは読込のみ。」と変換していない要求2「データAは編集可能でデータBは読込のみ。」とは、「データBは読込のみ。」、「データ」。「は」が一致する。コルモゴロフ複雑性の概算法を用いると、文字列が長く一致するほど類似度が高くなるため、より長い文字列「データBは読込のみ。」が一致する変換前の要求1と変換していない要求2との類似度が高くなる。したがって、本ステップで、変換後の類似度が変換前の類似度未満となるため、矛盾検出部103は、矛盾と検出せずに、処理を移行する。i=2、j=1、k=1のときは、ステップA5で、要求2「データAは編集可能でデータBは読込のみ。」が、矛盾ルール1の第一表現「<サ変名詞>」として「編集」または「読込」を含み、かつ、矛盾ルール1の第二表現「<サ変名詞>.*しない」を含まないため、関連性検出部102は、次のステップA6に移行する。ステップA6では、前のステップでのマッチが「編集」の場合は、関連性検出部102は、矛盾ルール1の第二表現「<サ変名詞>.*しない」を「編集.*しない」に変換し、前のステップでのマッチが「読込」の場合は、矛盾ルール1の第二表現「<サ変名詞>.*しない」を「読込.*しない」に変換する。そして、関連性検出部102は、次のステップA8に移行し、矛盾ルール1の第二表現を「編集しない」または「読込しない」に変換し、次のステップA7に処理を移行する。そして、ステップA7で、要求1が矛盾ルール1の第二表現である「編集.*しない」または「読込.*しない」を含まないため、本ステップに到達しない。i=2、j=1、k=2のときは、ステップA5で、要求2「データAは編集可能でデータBは読込のみ。」が、矛盾ルール2の第一表現「読込のみ」を含むが、矛盾ルール1の第二表現「編集可能」も含むため、本ステップに到達しない。このようにして、矛盾検出部103の本ステップは、図6の2件の要求を矛盾と検出しないことができる。
次に、関連性検出部102は、kをインクリメントする(ステップA12)。そして、関連性検出部102は、ステップA3に処理を移行する。
矛盾検出部103は、2つの要求を矛盾として検出する(ステップA13)。検出した結果は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。そして、矛盾検出部103は、処理を終了する。
関連性検出部102は、iを2、jを1に変更する(ステップA14)。そして、ステップA2に移行する。すなわち、要求1と要求2とを取り替えた逆の処理を開始する。
本実施形態によれば、システム・ソフトウェア開発の仕様書における要求の矛盾を、事前準備の労力をかけずに判定することができる。本発明で準備する矛盾ルールは、仕様書ごとでなくシステム・ソフトウェア開発全般に対して準備すればよいため、本発明では、仕様書ごとの事前準備の労力はかからない。なお、ここでは説明を簡単にするため、1つの要求にサ変名詞が1つ含まれる場合について説明したが、1つの要求に複数のサ変名詞が含まれる場合、それぞれのサ変名詞に対して矛盾となるかを関連性検出部と矛盾検出部とを繰り返し用いて同様に調べて、1つでも矛盾となるサ変名詞があるならば、矛盾と検出してもよい。
(第2の実施形態)
次に、本発明の第2の実施形態による要求間矛盾判定システムについて図面を参照して詳細に説明する。なお、第1の実施形態と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
図7を参照すると、本実施形態に係る要求間矛盾判定システムは、情報を記憶する記憶部21と、プログラム制御により動作する計算部22とから構成されている。
記憶部21は、要求記憶部100と、分割ルール記憶部200と、矛盾ルール記憶部101と、要求情報記憶部201と、事前変換ルール記憶部202とを備える。
要求記憶部100は、実施形態1と同様である。
分割ルール記憶部200は、要求を条件部と帰結部とに分割するための分割ルールを記憶する。分割ルールは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。図8は、分割ルール記憶部200に記憶された分割ルールの例を示す説明図である。図で、1行目は列の見出し行であり、2行目からは1行ごとに1件の分割ルールを示す。1列目の番号は、分割ルールを示す番号を示す。2列目の分割パターンは、分割ルールのパターン表現を示す。以降、番号がiの分割ルールを分割ルールiと呼ぶことにする。図の分割パターンでは、「^」は先頭を示す表現、「$」は末尾を示す表現である。「<先頭不要語>」は、文の先頭として不要な語であり、たとえば、「、」、「には」などである。「<末尾不要語>」は、文の末尾として不要な語であり、たとえば、「の」などである。「()」は、囲まれた部分にマッチしたところを左から数えて、最初が「$1」、2番目が「$2」で参照できることを示す。図の3列目は、条件部としてどのマッチを参照するかを示す。4列目は、帰結部としてどのマッチを参照するかを示す。この例では、最初のマッチである「$1」を条件部、2番目のマッチである「$2」を帰結部として参照することを示す。
矛盾ルール記憶部101は、実施形態1と同様である。
要求情報記憶部201は、要求記憶部100に記憶された要求の情報である要求情報を記憶する。要求情報記憶部201は、図9は、要求記憶部100に記憶された矛盾した要求の例を示す説明図である。図10は、要求情報記憶部201に記憶された要求情報の例を示す説明図である。図9の要求に対し、図10の要求情報は、それぞれの要求の条件部と帰結部を記憶する。図10で、1行目は列の見出し行であり、2行目からは1行ごとに1件の要求情報を示す。1列目の番号は、要求情報を示す番号である。2列目の条件部は、要求の条件部、3列目の帰結部は、要求の帰結部を示す。4列目の変換後の条件部は、事前変換ルール記憶部202に記載された事前ルールに基づいて変換された後の条件部、5列目の変換後の帰結部は、事前変換ルール記憶部202に記載された事前ルールに基づいて変換された後の帰結部を示す。以降では、番号がiの要求情報を要求情報iと呼ぶことにする。また、要求記憶部100の要求iに対する要求情報は、要求情報記憶部201の要求情報iであるものとする。要求情報記憶部201は、処理の開始時点では空であり、本発明の処理にしたがって要求情報が記憶される。
事前変換ルール記憶部202は、類似度を計算する前にテキストを変換するための事前変換ルールを記憶する。事前変換ルールは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。図11は、事前変換ルール記憶部202に記憶された事前変換ルールの例を示す説明図である。図で、1行目は列の見出し行であり、2行目からは1行ごとに1件の事前変換ルールを示す。1列目の番号は事前変換ルールの番号を示す。2列目の矛盾ルールの番号は、その事前変換ルールを適用する前提となる矛盾ルールの番号を示す。事前変換ルールは、2つの表現から成っており、3列目の第一表現と4列目の第二表現は、それぞれ、事前変換ルールの変換前の表現と変換後の表現を示す。以降では、番号がmの事前変換ルールを事前変換ルールmと呼ぶことにする。図11で、事前変換ルール1の矛盾ルールの番号が「1」であることから、事前変換ルール1は、図4の矛盾ルール1を用いて変換する場合に適用する。矛盾ルール1は、<サ変名詞>とマッチさせており、「<マッチ外のサ変名詞>」とは、マッチしたサ変名詞とは異なる別のサ変名詞のことである。図11で、事前変換ルール2の矛盾ルールの番号が「2」であることから、事前変換ルールは、図4の矛盾ルール2を用いて変換する場合に適用する。なお、ここでは、事前変換ルールの第二表現が空(長さ0の文字列)である場合を例として説明しているが、事前変換ルールの第二表現は、空以外でよいものとする。
計算部22は、要求分割部203と、関連性検出部204と、矛盾検出部205とを備える。
要求分割部203は、分割ルール記憶部200に記憶された分割ルールに基づいて、要求記憶部100に記憶された要求を、条件部と帰結部とに分割し、分割した結果を要求情報記憶部201に記憶する。図8と図9とを例として説明する。要求分割部203は、図9の要求1「Aボタンを押下とき登録した」に対し、図8の分割ルール1の分割パターン「^(.*)<末尾不要語>場合(.*)$」はマッチせず、分割ルール2の分割パターン「^(.*)<末尾不要語>とき(.*)$」がマッチするため、分割ルール2にしたがって、「の」+「とき」+「、」、すなわち、「のとき、」の前までの「Aボタンを押下」を条件部、「のとき、」の後の「登録した」を帰結部と判定する。また、図9の要求2「データAを削除。場合にはボタンAを押した」に対し、図8の分割ルール1の分割パターンがマッチするため、分割ルール1にしたがって、「場合」+「には」、すなわち、「場合には」の前までの「データAを削除。」を条件部、「場合には」の後の「ボタンAを押した」を帰結部と判定する。そして、要求分割部203は、図10の要求情報1のように要求情報を要求情報記憶部201に記憶する。
関連性検出部204は、矛盾ルール記憶部101に記憶された矛盾ルールに基づいて、要求情報記憶部201に記憶された要求の条件部と帰結部とを変換し、変換結果を要求情報記憶部201に記憶する。そして、要求情報記憶部201に記憶された要求情報に基づいて、2つの要求の関連性を検出する。ドキュメントから抽出した要求を、辞書などを用いて同義語をその代表語に統一し、冗長表現を簡略化することに関しては、実施形態1の要求記憶部100で説明した通りである。ここでの事前変換とは、適用する矛盾ルールごとに行う事前変換である。たとえば、矛盾ルール記憶部101に記憶された1つの矛盾ルールに対し、関連性検出部204は、要求情報に対し、事前変換ルールの第一表現にマッチする文字列を、事前変換ルールの第二表現にマッチする文字列に変換する。図11の事前変換ルールに基づいて、図10の要求情報を変換する場合を例として説明する。図10の要求情報1で図4の矛盾ルール1を用いて変換する場合、要求情報1の条件部「Aボタンを押下」は図11のどの事前変換ルールの第一表現にもマッチしないため、関連性検出部204は、条件部を変換せず、要求情報1の条件部「Aボタンを押下」のまま図10の変換後の条件部に記憶する。要求情報1の帰結部「登録したデータAを削除。」は、事前変換ルール2の第一表現にマッチするため、関連性検出部204は、「登録した」を削除し、図10にあるように、変換後の帰結部を「データAを削除。」として、図10の変換後の帰結部に記憶する。
矛盾検出部205は、関連性検出部204で計算した類似度と、要求情報に記憶された要求情報の帰結部間の類似度とに基づいて、矛盾を検出する。ここでは、実施形態1における要求の代わりに、要求情報の帰結部を用いればよい。
次に、図14のフローチャートを参照して、本実施の形態2の全体の動作について詳細に説明する。
まず、要求分割部203は、分割ルール記憶部200に記憶された分割ルールに基づいて、要求記憶部100に記憶された2つの要求を、条件部と帰結部とに分割する(ステップA15)。そして、要求分割部203は、条件部のテキストと帰結部のテキストとを要求情報記憶部201に記憶する。本ステップの詳細な処理については後述する。
次に、関連性検出部204は、矛盾ルール記憶部101に記憶された矛盾ルールの番号を示すkを1に初期化する(ステップA16)。
次に、関連性検出部204は、kと矛盾ルール記憶部101に記憶された矛盾ルール数Kとを比較する(ステップA17)。kが矛盾ルール記憶部101に記憶された矛盾ルール数K以下ならば、関連性検出部204は、ステップA18に処理を移行する。kがKより大きいならば、関連性検出部204は、2つの要求は矛盾とはいえないと判定し、処理を終了する。ここで、kがKより大きいならば、関連性検出部204は、矛盾でなかったと出力してもよい。出力は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。
次に、関連性検出部204は、矛盾ルールkと事前変換ルール記憶部202に記憶された事前変換ルールとに基づいて、2つの要求を変換する(ステップA18)。
次に、関連性検出部204は、2つの要求の条件部の類似度を計算する(ステップA19)。ここで、2つの要求の条件部が両方とも空(長さ0の文字列)の場合は、2つの要求の条件部の類似度を次のステップの閾値より高い値とする。すなわち、2つの要求が両方とも条件部がない場合は、関連性検出部204は、次のステップで条件部が類似したと判定することとする。2つの要求の条件部のうち一方が空の場合は、コルモゴロフ複雑性の概算を用いると、類似度は、概ね0となる。すなわち、2つの要求の一方だけに条件部がある場合は、関連性検出部204は、次のステップで条件部が類似しないと判定することとする。
次に、関連性検出部204は、計算した条件部の類似度と閾値を比較する(ステップA20)。閾値は、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。類似度が閾値以上ならば、関連性検出部204は、次のステップA21に処理を移行する。類似度が閾値未満ならば、関連性検出部204は、ステップA23に処理を移行する。すなわち、関連性検出部204は、条件部が類似している場合のみ、矛盾かどうかを調べる。
次に、関連性検出部204は、矛盾ルールを用いて一方を変換した帰結部の類似度と閾値とを比較する(ステップA21)。閾値は、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。なお、本ステップで閾値は、前のステップA20と同じ値を用いてもよいし、別の値を指定してもよい。矛盾ルールを用いた変換については、実施形態1と同様の処理である。ある1つの矛盾ルールに対し、一方を変換した帰結部の類似度が閾値以上ならば、関連性検出部204は、次のステップA22に処理を移行する。類似度が閾値未満ならば、関連性検出部204は、ステップA23に処理を移行する。実施形態1との違いを示すために、事前変換ルールを用いた変換の別の例を示す。図12は、要求記憶部100に記憶された別の要求の例を示す説明図である。図13は、要求情報記憶部201に記憶された別の要求情報の例を示す説明図である。図12の要求に対し、図13の要求情報は、それぞれの要求の条件部と帰結部を記憶する。図で示すように、2つの要求は、矛盾はしていない。2つの要求の条件部は類似しており、要求情報1の帰結部「登録したデータAを削除。」はサ変名詞である「削除」とマッチするが「削除.*しない」とはマッチせず、要求情報2の帰結部「データAを削除するが登録しない。」は「削除.*しない」とマッチする。要求情報の帰結部を要求とみなして実施形態1の処理を行うと、要求情報1の帰結部を図4の矛盾ルール1を用いて「登録したデータAを削除しない。」に変換する。そして、変換した要求情報1の帰結部と変換していない要求情報2の帰結部とが類似することから、関連性ありと検出してしまう。一方、本実施形態2を用いると、関連性検出部204は、図4の矛盾ルール1で<サ変名詞>として「削除」を用いる場合、図11の事前変換ルール1により、「登録」が「削除」以外のサ変名詞であることから、要求情報2の帰結部「データAを削除するが登録しない。」から「登録しない」を削除し、図13の要求情報1の変換後の帰結部にあるように、「データAを削除するが。」となる。そのため、図13にあるように、要求情報1の帰結部「データAを削除。」と要求情報2の帰結部「データAを削除するが.」とは、図4の矛盾ルールとはマッチせず、関連性検出部204はこれら2つの要求を関連性ありとは検出しなくなる。
次に、矛盾検出部205は、要求情報記憶部201を参照して、事前変換ルールを用いて変換した後、矛盾ルールを用いて変換する前の帰結部間の類似度を計算し、関連性検出部204で計算した変換後の類似度と、矛盾検出部205で計算した矛盾ルールでの変換前の類似度とを比較する(ステップA22)。変換後の類似度が矛盾ルールでの変換前の類似度以上ならば、矛盾検出部205は、次のステップA24に処理を移行する。変換後の類似度が矛盾ルールでの変換前の類似度未満ならば、矛盾検出部205は、次のステップA23に処理を移行する。
次に、関連性検出部204は、kをインクリメントする(ステップA23)。そして、関連性検出部204は、ステップA17に処理を移行する。
矛盾検出部205は、2つの要求を矛盾として検出する(ステップA24)。検出結果は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。そして、矛盾検出部205は、処理を終了する。
次に、図15のフローチャートを参照して、本実施の形態2の要求iに対する要求分割部203の動作について詳細に説明する。
まず、要求分割部203は、分割ルールを示す番号mを1に初期化する(ステップA25)。
次に、要求分割部203は、mと分割ルール数Mとを比較する(ステップA26)。mがM以下ならば、要求分割部203は、次のステップA27に処理を移行する。mがMより大きければ、要求分割部203は、ステップA30に処理を移行する。
次に、要求分割部203は、要求iが分割ルールmの分割パターンとマッチするかを調べる(ステップA27)。マッチするならば、要求分割部203は、ステップA29に処理を移行する。マッチしないならば、要求分割部203は、次のステップA28に処理を移行する。
次に、要求分割部203は、割ルールの番号を示すmをインクリメントする(ステップA28)。そして、要求分割部203は、ステップA26に処理を移行する。
要求分割部203は、分割ルール1を用いて、要求を条件部、帰結部へと分割する(ステップA29)。そして、要求分割部203は、処理を終了する。たとえば、図9の要求1「Aボタンを押下したとき、登録した」は、図10の、条件部は、「Aボタンを押下した」、帰結部は、「登録した」となる。
要求分割部203は、要求iの条件部を空のまま、帰結部を要求iそのものとする(ステップA30)。それから、要求分割部203は、処理を終了する。
本実施形態によれば、要求分割部で要求を条件部と帰結部に分割し、関連性検出部で条件部が類似した要求間のみでの矛盾を検出するため、条件部が一致しない2つの要求を矛盾と誤検出しなくなり、矛盾と誤検出することが軽減される。また、関連性検出部において、要求を事前変換するため、矛盾と誤検出することが軽減される。
なお、本発明に記載した方法は、コンピュータに実行させることのできるプログラムとして、フロッピー(登録商標)ディスク、ハードディスクなどの磁気ディスク、CD−ROM、DVDなどの光ディスク、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト等のミドルウェアなどが各処理の一部を実行してもよい。
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネットなどにより伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であってもよい。
本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき各処理を実行するものであって、パソコンなどからなる装置、複数の装置がネットワーク接続されたシステムなどの何れの構成であってもよい。
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置を含み、プログラムによって本発明の機能を実現することが可能な機器、装置である。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。また、構成要素を適宜組合せてもよい。
この出願は、2012年12月18日に出願された日本国特許出願第2012−275745号からの優先権を基礎として、その利益を主張するものであり、その開示はここに全体として参考文献として取り込む。
また、上記の実施形態の一部または全部は、以下のようにも記載されうる。なお、以下の付記は本発明をなんら限定するものではない。
(付記1)
テキストで表現された2つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、2つの要求間の関連性を検出する関連性検出部と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、2つの要求が矛盾か否かを検出する矛盾検出部と、を備えることを特徴とする要求間矛盾判定システム。
(付記2)
前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの1つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする上記付記1に記載の要求間矛盾判定システム。
(付記3)
前記関連性検出部は、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、2つの要求が関連性ありと検出し、前記矛盾検出部は、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする上記付記1又は上記付記2に記載の要求間矛盾判定システム。
(付記4)
前記関連性検出部と前記矛盾検出部とは、コルモゴロフ複雑性の概算法に基づいて、2つのテキスト間の類似度を計算することを特徴とする上記付記1から上記付記3の何れか一項に記載の要求間矛盾判定システム。
(付記5)
前記関連性検出部と前記矛盾検出部は、類似度を計算する前に、前記関連性検出部において変換に用いる1つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、2つの要求を変換することを特徴とする上記付記1から上記付記4の何れか一項に記載の要求間矛盾判定システム。
(付記6)
前記関連性検出部において変換する一方の要求が前記変換に用いた1つの矛盾ルールの1つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、2つの要求を変換することを特徴とする上記付記5に記載の要求間矛盾判定システム。
(付記7)
テキストで表現された要求を、予め定めた分割ルールに基づいて条件部と帰結部とに分割する要求分割部を備え、前記関連性検出部は、2つの要求の条件部のテキスト間の類似度と、2つの要求の帰結部のテキスト間の類似度とに基づいて、2つの要求の関連性を検出し、前記矛盾検出部は、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、2つの要求が矛盾か否かを検出することを特徴とする上記付記1から上記付記6の何れか一項に記載の要求間矛盾判定システム。
(付記8)
テキストで表現された2つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、2つの要求間の関連性を検出する関連性検出ステップと、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、2つの要求が矛盾か否かを検出する矛盾検出ステップと、を備えることを特徴とする要求間矛盾判定方法。
(付記9)
前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの1つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする上記付記8に記載の要求間矛盾判定方法。
(付記10)
前記関連性検出ステップは、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、2つの要求が関連性ありと検出し、前記矛盾検出ステップは、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする上記付記8又は上記付記9に記載の要求間矛盾判定方法。
(付記11)
前記関連性検出ステップと前記矛盾検出ステップとは、コルモゴロフ複雑性の概算法に基づいて、2つのテキスト間の類似度を計算することを特徴とする上記付記8から上記付記10の何れか一項に記載の要求間矛盾判定方法。
(付記12)
前記関連性検出ステップと前記矛盾検出ステップは、類似度を計算する前に、前記関連性検出部において変換に用いる1つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、2つの要求を変換することを特徴とする上記付記8から上記付記11の何れか一項に記載の要求間矛盾判定方法。
(付記13)
前記関連性検出部において変換する一方の要求が前記変換に用いた1つの矛盾ルールの1つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、2つの要求を変換することを特徴とする上記付記12に記載の要求間矛盾判定方法。
(付記14)
テキストで表現された要求を、予め定めた分割ルールに基づいて条件ステップと帰結ステップとに分割する要求分割部を備え、前記関連性検出ステップは、2つの要求の条件部のテキスト間の類似度と、2つの要求の帰結部のテキスト間の類似度とに基づいて、2つの要求の関連性を検出し、前記矛盾検出ステップは、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、2つの要求が矛盾か否かを検出することを特徴とする上記付記8から上記付記13の何れか一項に記載の要求間矛盾判定方法。
(付記15)
テキストで表現された2つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、2つの要求間の関連性を検出する関連性検出処理と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、2つの要求が矛盾か否かを検出する矛盾検出処理と、を備えることを特徴とする要求間矛盾判定プログラム。
(付記16)
前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの1つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする上記付記15に記載の要求間矛盾判定プログラム。
(付記17)
前記関連性検出処理は、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、2つの要求が関連性ありと検出し、前記矛盾検出処理は、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする上記付記15又は上記付記16に記載の要求間矛盾判定プログラム。
(付記18)
前記関連性検出処理と前記矛盾検出処理とは、コルモゴロフ複雑性の概算法に基づいて、2つのテキスト間の類似度を計算することを特徴とする上記付記15から上記付記17の何れか一項に記載の要求間矛盾判定プログラム。
(付記19)
前記関連性検出処理と前記矛盾検出処理は、類似度を計算する前に、前記関連性検出部において変換に用いる1つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、2つの要求を変換することを特徴とする上記付記15から上記付記18の何れか一項に記載の要求間矛盾判定プログラム。
(付記20)
前記関連性検出部において変換する一方の要求が前記変換に用いた1つの矛盾ルールの1つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、2つの要求を変換することを特徴とする上記付記19に記載の要求間矛盾判定プログラム。
(付記21)
テキストで表現された要求を、予め定めた分割ルールに基づいて条件処理と帰結処理とに分割する要求分割部を備え、前記関連性検出処理は、2つの要求の条件部のテキスト間の類似度と、2つの要求の帰結部のテキスト間の類似度とに基づいて、2つの要求の関連性を検出し、前記矛盾検出処理は、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、2つの要求が矛盾か否かを検出することを特徴とする上記付記15から上記付記20の何れか一項に記載の要求間矛盾判定プログラム。
次に、本発明の第1の実施形態による要求間矛盾判定システムについて図面を参照して詳細に説明する。第1の実施形態に係る要求間矛盾判定システムは、2つの要求に対し、矛盾関係にある部分の矛盾を解消したときに2つの要求に関連性があるかを調べ、関連性があるならば、実際に矛盾であるかを検出する。矛盾関係にある部分の矛盾の解消は、矛盾関係にある複数の矛盾表現である矛盾ルールを用いて、一方の要求を変換することで行う。実際に矛盾であるかの検出は、矛盾関係のままの元の要求間の類似度と、矛盾を解消した要求間の類似度とを比較することで行う。なお、ここで、矛盾とは、ある事象が複数の状態となる可能性があり、同時に異なる状態にならない場合に、一方でその事象がある状態であるといい、もう一方で、その事象が別の状態であるということで、論理的に合わないことである。たとえば、ある事象が肯定か否定かという2つの状態のいずれかである場合に、ある事象を一方で肯定し、もう一方で否定すると、矛盾である。また、たとえば、ファイルAがread onlyという状態か編集可能という状態かのいずれかの状態である場合に、一方でファイルAがread onlyであるといい、もう一方で、ファイルAが編集可能であるということは矛盾である。
図1を参照すると、本実施形態に係る要求間矛盾判定システムは、情報を記憶する記憶部11と、プログラム制御により動作する計算部12とから構成されている。
記憶部11は、要求記憶部100と、矛盾ルール記憶部101とを備える。
要求記憶部100は、2つの要求を記憶する。2つの要求は、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。要求は、矛盾判定の対象とするドキュメントから抽出する。ドキュメントは、たとえば、提案依頼書(RFP: Request For Proposal)であり、これは、発注元である官公庁や企業が情報システムやITサービスなどを調達する際に、発注先となるITベンダに対して提案を要請するためのドキュメントである。提案依頼書は、調達依頼書、入札依頼書、提案要請書、提案要求書、提案要望書、提案募集書、見積依頼書、提案書提出要請書、入札説明書、委託仕様書などとも呼ばれる。また、ドキュメントは、たとえば、提案書(Proposal)であり、これは、ITベンダが具体的な提案事項を記載した文書である。提案書は、企画書、企画提案書などとも呼ばれる。また、ドキュメントは、たとえば、システムやサービスが満たすべき事項である要件事項を記載した仕様書である。仕様書は、要求仕様書、要求定義書、要件定義書、機能仕様書、設計書、契約書などとも呼ばれる。ここで、本発明の要求は、これら仕様書の仕様のことも含む。これらのドキュメントは、本文以外に表も含む。したがって、テキストで表現される要求は、主語や述語、目的語の備わった文だけでなく、用語の羅列のような文の切れ端も含まれる。図2は、要求記憶部100に記憶された矛盾した要求の例を示す説明図である。図3は、要求記憶部100に記憶された矛盾した要求の別の例を示す説明図である。これらの図で、1行目は列の見出し行であり、2行目からは1行ごとに1件の要求を示す。1列目の番号は、要求を示す番号である。2列目の要求テキストは、要求の内容を示すテキストである。以降では、番号がiの要求を要求iと呼ぶことにする。ここで、図3の要求2は、ドキュメントの表から抽出した例である。なお、ここでは、要求記憶部100の2つの要求に対して、矛盾か否かを判定する処理について説明するが、要求記憶部100に3つ以上の要求を記憶しておき、記憶された要求のうちの2つの要求ごとに矛盾か否かを判定してもよい。また、ドキュメントから抽出した要求は、辞書などを用いて同義語をその代表語に統一し、冗長表現を簡略化しておいてもよい。たとえば、要求に「read only」、「読み込みのみ」、「読込みのみ」、「読込のみ」などと記述されているとき、これらの用語を同義語辞書を用いて「読込のみ」という用語に統一してから要求記憶部100に記憶してもよい。同義語辞書は、手動で作成してもよいし、共通的な同義語辞書としては、たとえば、WordNetなどがある。同義語辞書を用いた用語の統一は、手動で行ってもよいが、コンピュータなどを用いた自動変換としてもよい。
矛盾ルール記憶部101は、矛盾を判定するルールである矛盾ルールを記憶する。矛盾ルールとは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、そのそれぞれの矛盾表現は、文字列、あるいは、1つ以上の文字列を1つの文字列で表現したもの(正規表現)である。矛盾ルールは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。図4は、矛盾ルール記憶部101に記憶された矛盾ルールの例を示す説明図である。図で、1行目は列の見出し行であり、2行目からは1行ごとに1件の矛盾ルールを示す。1列目の番号は、矛盾ルールを示す番号である。2列目目の矛盾ルールの第一表現と3列目の矛盾ルールの第二表現とは、それぞれ、矛盾表現である。以降では、番号がkの矛盾ルールを矛盾ルールkと呼ぶことにする。矛盾ルールの第一表現と第二表現において、<サ変名詞>は、任意のサ変名詞を示す表現であり、”.*”は、任意の文字列を示す表現である。なお、ここでは、第二表現の<サ変名詞>にマッチする文字列は、第一表現の<サ変名詞>にマッチする文字列と同一と指定したとする。また、ここでは、矛盾ルール記憶部101に記憶された矛盾ルールが2つの矛盾表現を持つ場合を例として説明するが、3つ以上の矛盾表現があってもよい。
計算部12は、関連性検出部102と、矛盾検出部103とを備える。
関連性検出部102は、矛盾ルール記憶部101に記憶された矛盾ルールに基づいて、要求記憶部100に記憶された2つの要求のうちの一方のテキストを変換し、その変換後のテキストと残るもう一方の要求テキストとの間の類似度に基づいて、2つの要求の関連性を検出する。矛盾ルールに基づいて要求テキストを変換するとは、たとえば、その要求に含まれる、矛盾ルールの2つの矛盾表現のうちの一方の矛盾表現にマッチする文字列を、矛盾ルールのもう一方の矛盾表現にマッチする文字列に変換することである。矛盾表現にマッチする文字列とは、たとえば、図4の矛盾ルール1の第一表現である矛盾表現「<サ変名詞>」に対し、この第一表現にマッチする「登録」、「削除」などの文字列のことである。ここで、関連性検出部102は、変換後の文字列が「登録.*しない」のように任意の文字列を示す表現「.*」を含む場合は、その任意の文字列を示す表現「.*」を削除して(あるいは、任意の文字列が長さ0の文字列「」にマッチすると考えて)、「登録しない」を変換後の文字列とすることとする。たとえば、図2の要求1を図4の矛盾ルール1に基づいて変換する場合、関連性検出部102は、要求1のサ変名詞「登録」を「登録しない」に変換する。したがって、関連性検出部102は、要求1「データAを登録。」を、「データAを登録しない。」に変換する。なお、「登録」がサ変名詞であることは、たとえば、形態素解析エンジンを用いて検出することができる。形態素解析エンジンは、たとえば、MeCabやChaSenなどがある。テキストを入力すると、MeCabやChaSenは、テキストを単語ごとに区切り、単語がサ変名詞であれば「名詞,サ変接続」などと出力する。または、MeCabやChaSenなどの形態素エンジンを用いなくても、記憶部に、サ変名詞を示す単語を並べて記憶しておき、関連性検出部102が、記憶部を検索してサ変名詞があるかどうかを調べてもよい。関連性検出部102は、変換した要求iと変換していない要求jとの間の類似度を、たとえば、コルモゴロフ複雑性の概算に基づいて概算することができる。関連性検出部102は、2つの要求に矛盾があると仮定し、一方の要求のテキストを変換することでその矛盾を解消したときに、2つの要求が整合するとみなせるだけの類似度があるかを調べる。自然言語テキスト間に矛盾があるかは、たとえば、構文解析の技術を用いて主語、述語、目的語などが一致するかを調べて、一致するときに、肯定と否定表現であるかを調べることも考えられる。しかし、仕様書で、「ユーザが登録ボタンを押下する。」と「登録ボタンへの押下がユーザにより行われる。」とが同じ意味となることを機械的に解釈するためには、同じ意味を示すさまざまな構文情報を事前に準備しておく必要がある。また、仕様書は、「登録ボタンを押下する。」、「画面に表示する。」など主語を省略する文がある。その理由は、仕様書という限定された場合においては、「登録ボタンを押下する。」の主語は「ユーザ」、「画面に表示する。」の主語は「システム」だと人間にとっては容易に解釈できるためである。主語が同じであることを機械的に解釈するためには、「押下」の主語は「ユーザ」であるなどの知識を事前に準備しておく必要がある。しかし、仕様書は業界・業種・お客様特有の知識を用いるため、事前にすべてを準備することは現実的に不可能である。さらに、仕様書からの要求に、図などから抽出した文の切れ端も含まれる場合、文の切れ端の解釈は一意とは限らないため、すべての解釈を事前に準備することはほぼ不可能である。そのため、本発明では類似度を用いて整合性を判定する。
矛盾検出部103は、関連性検出部102で関連性ありと検出された2つの要求に対し、関連性検出部102で計算された変換後の類似度と、要求記憶部100に記憶された要求間の類似度とに基づいて、矛盾を検出する。検出した結果は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。なお、関連性検出部102は、矛盾する文字列がある場合に矛盾があると仮定して矛盾を解消したときに整合するか否かを調べたが、矛盾する文字列はあっても矛盾ではない場合がある。矛盾検出部103は、矛盾を解消した方が矛盾を解消しない場合よりも整合するとみなせるかを類似度で調べている。なお、矛盾ルールに3つ以上の矛盾表現がある場合には、2つずつの矛盾表現の組合せと考えて、本発明を適用してもよい。あるいは、矛盾ルールが3つ以上の矛盾表現を持つ場合、一方の要求が矛盾ルールの矛盾表現のうち1つの矛盾表現のみとマッチし、もう一方の要求が、矛盾ルールの別の1つの矛盾表現のみとマッチする場合のみを対象とするような設定としてもよい。3つ以上の矛盾表現がある場合の適用方法をどうするかは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。
次に、図5のフローチャートを参照して、本実施の形態1の全体の動作について詳細に説明する。
まず、関連性検出部102は、要求記憶部100に記憶された要求のうち、第一の要求の番号を示すiを1に、第二の要求の番号を示すjを2に初期化する(ステップA1)。
次に、関連性検出部102は、矛盾ルール記憶部101に記憶された矛盾ルールの番号を示すkを1に初期化する(ステップA2)。
次に、関連性検出部102は、kと矛盾ルール記憶部101に記憶された矛盾ルール数Kとを比較する(ステップA3)。kが矛盾ルール記憶部101に記憶された矛盾ルール数K以下ならば、関連性検出部102は、ステップA5に処理を移行する。kがKより大きいならば、関連性検出部102は、ステップA4に処理を移行する。
関連性検出部102は、iと1とを比較する(ステップA4)。iと1とが等しければ、関連性検出部102は、ステップA14に処理を移行する。iが1と等しくなければ、関連性検出部102は、動作を終了する。ここで、iが1と等しくない場合には、関連性検出部102は、矛盾が検出されなかったことを出力してもよい。出力は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。
関連性検出部102は、要求記憶部100に記憶された要求iが矛盾ルール記憶部101に記憶された矛盾ルールkの第一表現を含むかを調べる(ステップA5)。ここで、要求iが矛盾ルールkの第一表現のみを含むとは、要求iのテキストが矛盾ルールkの第一表現を含み、第二表現を含まないことである。要求iは矛盾ルールkの第一表現のみを含むならば、関連性検出部102は、次のステップA6に処理を移行する。そうでないならば、関連性検出部102は、ステップA12に処理を移行する。図2の2件の要求と図4の2件の矛盾ルールを例として説明する。i=1、j=2、k=1のとき、要求1「データAを登録。」は、矛盾ルール1の第一表現「<サ変名詞>」として「登録」を含み、かつ、矛盾ルール1の第二表現「<サ変名詞>.*しない」を含まないため、関連性検出部102は、次のステップA6に処理を移行する。次に、2件の要求が図2の代わりに図3の場合を例として説明する。i=1、j=2、k=1のときは、要求1「データBは編集可能。」は矛盾ルール1の第一表現「<サ変名詞>」として「編集」を含み、かつ、矛盾ルール1の第二表現「<サ変名詞>.*しない」を含まないため、関連性検出部102は、次のステップA6に処理を移行する。i=1、j=2、k=2のときは、要求1「データBは編集可能。」は矛盾ルール2の第一表現「読込のみ」を含まないため、関連性検出部102は、ステップA12に処理を移行する。i=2、j=1、k=1のときは、要求2「Bデータ。読込のみ。」は矛盾ルール1の第一表現「<サ変名詞>」として「読込」を含み、かつ、矛盾ルール1の第二表現「<サ変名詞>.*しない」を含まないため、関連性検出部102は、次のステップA6に処理を移行する。i=2、j=1、k=2のときは、要求2「Bデータ。読込のみ。」は矛盾ルール2の第一表現「読込のみ」を含み、かつ、矛盾ルール2の第二表現「編集可能」を含まないため、関連性検出部102は、次のステップA6に処理を移行する。
次に、関連性検出部102は、矛盾ルール記憶部101に記憶された矛盾ルールkの第二表現のうちで、複数の文字列にマッチする表現を、前のステップでマッチした第一表現の文字列として、変換する(ステップA6)。なお、ここで、第二表現が1つの文字列の場合は、本ステップは何もしない。また、変換した場合でも、矛盾ルール記憶部101へは変換した矛盾ルールを記憶しない。図2の2件の要求と図4の2件の矛盾ルールを例として説明する。i=1、j=2、k=1のときに本ステップに到達し、関連性検出部102は、矛盾ルール1の第二表現「<サ変名詞>.*しない」に対し、「<サ変名詞>」を、前のステップで要求1が矛盾ルール1の第一表現「<サ変名詞>」として「登録」を含んでいたことから、「登録」に変換する。したがって、関連性検出部102は、矛盾ルール1の第二表現「<サ変名詞>.*しない」を「登録.*しない」に変換する。次に、2件の要求が図2の代わりに図3の場合を例として説明する。i=1、j=2、k=1のときに本ステップに到達し、関連性検出部102は、矛盾ルール1の第二表現「<サ変名詞>.*しない」を「編集.*しない」に変換する。i=2、j=1、k=1のときにも本ステップに到達し、関連性検出部102は、矛盾ルール1の第二表現「<サ変名詞>.*しない」を「読込.*しない」に変換する。i=2、j=1、k=2のときにも本ステップに到達し、関連性検出部102は、矛盾ルール2の第二表現「編集可能」を変換せずそのまま「編集可能」とする。
次に、関連性検出部102は、要求記憶部100に記憶された要求jが矛盾ルールkの第二表現を含むかを調べる(ステップA7)。ここで、矛盾ルールkの第二表現が前のステップで変換された場合は、変換された第二表現を用いる。要求jが矛盾ルールkの第二表現を含むならば、関連性検出部102は、次のステップA8に処理を移行する。含まないならば、関連性検出部102は、ステップA12に処理を移行する。たとえば、図2の2件の要求と図4の2件の矛盾ルールの場合、i=1、j=2、k=1のときに本ステップに到達し、要求2「データAの登録は、これをしない。」は矛盾ルール1の第二表現「登録.*しない」を含むため、関連性検出部102は、次のステップA8に処理を移行する。次に2件の要求が図2の代わりに図3の場合を例として説明する。i=1、j=2、k=1のときに本ステップに到達し、要求2「Bデータ。読込のみ。」は矛盾ルール1の第二表現「編集.*しない」を含まないため、関連性検出部102は、ステップA12に処理を移行する。i=2、j=1、k=1のときに本ステップに到達し、要求1「データBは編集可能。」が矛盾ルール1の第二表現「読込.*しない」を含まないため、関連性検出部102は、ステップA12に処理を移行する。i=2、j=1、k=2のときに本ステップに到達し、要求1「データBは編集可能。」は矛盾ルール2の第二表現「編集可能」を含むため、関連性検出部102は、次のステップA8に処理を移行する。
次に、関連性検出部102は、矛盾ルールkの第二表現を変換用に変換する(ステップA8)。ここで、関連性検出部102は、ステップA6で変換した矛盾ルールkの第二表現のうちで、複数の文字列にマッチする表現を、最も短い1つの文字列に変換する。たとえば、関連性検出部102は、「登録.*しない」を「登録しない」に変換し、「編集.*しない」を「編集しない」に変換し、「読込.*しない」を「読込しない」に変換する。なお、ここで、関連性検出部102は、矛盾ルール記憶部101の矛盾ルールkを書き換えない。
次に、関連性検出部102は、要求記憶部100に記憶された要求iを前のステップA8で変換された矛盾ルールkを用いて変換する(ステップA9)。要求を変換するとは、要求iが含む矛盾ルールkの第一表現を、矛盾ルールkの第二表現に変換することである。なお、ここで、関連性検出部102は、要求記憶部100は書き換えないものとする。すなわち、要求iの変換結果は、要求記憶部100には記憶しないものとする。図2の2件の要求と図4の2件の矛盾ルールの場合、i=1、j=2、k=1のときに本ステップに到達し、関連性検出部102は、要求1「データAを登録。」を、「データAを登録しない。」に変換する。図2の代わりに図3の場合、i=2、j=1、k=2のときに本ステップに到達し、関連性検出部102は、要求1「Bデータ。読込のみ。」を「Bデータ。編集可能。」に変換する。
次に、関連性検出部102は、変換後の類似度として、変換した要求iと変換していない要求jと間の類似度(変換後の類似度)を計算し、計算した類似度と、予め定めた閾値とを比較する(ステップA10)。類似度が閾値以上ならば、関連性検出部102は、矛盾検出部103のステップA11に処理を移行する。類似度が閾値未満ならば、関連性検出部102は、ステップA12に処理を移行する。また、類似度が閾値以上の場合は、関連性検出部102は、要求iと要求jを関連性ありと検出したこととする。類似度の計算は、たとえば、コルモゴロフ複雑性の概算法を用いて計算することができる。コルモゴロフ複雑性の概算は、たとえば、テキストを圧縮するアルゴリズムを予め定めると、テキストiとテキストjとの間の類似度s(i,j)は、テキストiを圧縮した場合のサイズをC(i)、テキストjを圧縮した場合のサイズをC(j)、テキストiとテキストjとを連結させた新たなテキストを圧縮した場合のサイズをC(ij)とすると、たとえば、d(i,j)=1−C(ij)/{C(i)+C(j)}あるいはd(i,j)=1−[C(ij)−min{C(i),C(j)}]/max{C(i),C(j)}に示す数式によって計算することができる。指定される圧縮アルゴリズムは、たとえば、gip、gzipなどである。圧縮アルゴリズムは、たとえば、文字列に対し、文字である記号あるいは以前の部分文字列との(一致長、一致位置)のペアで符号化する。符号化では、たとえば、文字列に出現する記号の個数を求め、個数の多い記号ほど短い符号を割り当てる。類似度の計算にコルモゴロフ複雑性の概算を用いる場合、類似度は、0から1までの値となる。その場合は、予め定めた閾値は、たとえば、0.5、0.45または0.4などの値を用いればよい。また、類似度の計算は、2つの要求に共通する単語数や単語の出現頻度などを用いて計算することもできる。類似度の計算方法として何を用いるかは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。本ステップの処理について、図2の2件の要求と図4の2件の矛盾ルールを例として説明する。i=1、j=2、k=1の場合、前述したように、変換後の要求1は、「データAを登録しない。」となり、この変換後の要求1は、要求2「データAの登録は、これをしない。」と類似している。そのため、変換後の要求1と変換していない要求2との間の類似度は、予め定めた閾値以上となる。したがって、関連性検出部102は、関連性ありと検出し、矛盾検出部103のステップA11に処理を移行する。また、図2の代わりに図3で、i=2、j=1、k=2の場合には、変換後の要求2「Bデータ。編集可能。」と変換していない要求1「データBは編集可能。」は類似している。そのため、類似度は閾値以上となり、関連性検出部102は、関連性ありと検出し、矛盾検出部103のステップA11に処理を移行する。なお、ここでは、変換後の類似度と予め定めた閾値とを比較する方法について説明したが、要求記憶部100に多くの要求が記憶されている場合、関連性検出部102は、変換後の多くの類似度の分布などから、閾値を推定してもよい。または、変換後の多くの類似度の分布を見ながら、システムのユーザが閾値を決定してもよい。
次に、矛盾検出部103は、要求記憶部100に記憶された要求iと要求jとの類似度(変換前の類似度)を計算し、関連性検出部102で計算した変換後の類似度と変換前の類似度とを比較する(ステップA11)。変換後の類似度が変換前の類似度以上ならば、矛盾検出部103は、ステップA13に処理を移行する。変換後の類似度が変換前の類似度未満ならば、矛盾検出部103は、関連性検出部102のステップA12に処理を移行する。たとえば、図2と図4で、i=1、j=2、k=1の場合、変換した要求1「データAを登録しない。」と変換していない要求2「データAの登録は、これをしない。」との間の類似度は高く、変換していない要求1「データAを登録。」と変換していない要求2「データAの登録は、これをしない。」との間の類似度は低いため、矛盾検出部103は、ステップA13に処理を移行する。図3と図4で、i=2、j=1、k=2の場合、変換した要求2「Bデータ。編集可能。」と変換していない要求1「データBは編集可能。」との類似度は、変換していない要求2「Bデータ。読込のみ。」と変換していない要求1との類似度以上になるため、矛盾検出部103は、ステップA13に処理を移行する。次に、関連性検出部102だけでなく矛盾検出部103が必要となる例を示す。図6は、要求記憶部100に記憶された矛盾していない要求の例を示す説明図である。図6の2件の要求と図4の2件の矛盾ルールとする。図6の2件の要求はi=1、j=2、k=1のときは、ステップA5で、要求1「データBは読込のみ。」が矛盾ルール1の第一表現「<サ変名詞>」として「読込」を含み、かつ、矛盾ルール1の第二表現「<サ変名詞>.*しない」を含まないため、関連性検出部102は、次のステップA6に処理を移行し、矛盾ルール1の第二表現を「読込.*しない」に変換する。そして、関連性検出部102は、ステップA7に処理を移行し、要求2「データAは編集可能でデータBは読込のみ。」は矛盾ルール1の第二表現「読込.*しない」を含まないため、本ステップに到達しない。i=1、j=2、k=2のときは、ステップA5で、要求1「データBは読込のみ。」が矛盾ルール2の第一表現「読込のみ」を含み、矛盾ルール2の第二表現「編集可能」を含まないため、関連性検出部102は、次のステップA6に処理を移行し、矛盾ルール2の第二表現を「編集可能」のままとする。そして、関連性検出部102は、次のステップA7に処理を移行し、要求2「データAは編集可能でデータBは読込のみ。」が矛盾ルール2の第二表現「編集可能」を含むため、次のステップA8に移行する。そして、関連性検出部102は、ステップA8では、矛盾ルール2に第二表現「編集可能」のままとし、次のステップA9に処理を移行する。そして、関連性検出部102は、ステップA9で、要求1「データBは読込のみ。」を「データBは編集可能。」に変換する。そして、関連性検出部102は、次のステップA10で、変換後の要求1「データBは編集可能。」と変換していない要求2「データAは編集可能でデータBは読込のみ。」との間の類似度を計算する。これらの変換後の要求1と変換していない要求2とは類似しているので、閾値以上となり、本ステップがないならば、矛盾として検出されてしまう。しかし、矛盾検出部103の本ステップに到達すると、変換前の要求1と変換していない要求2との類似度を計算する。ここで、変換後の要求1「データBは編集可能。」と変換していない要求2「データAは編集可能でデータBは読込のみ。」とは、「データ」、「は編集可能」、「データBは」、「。」が一致する。一方、変換前の要求1「データBは読込のみ。」と変換していない要求2「データAは編集可能でデータBは読込のみ。」とは、「データBは読込のみ。」、「データ」。「は」が一致する。コルモゴロフ複雑性の概算法を用いると、文字列が長く一致するほど類似度が高くなるため、より長い文字列「データBは読込のみ。」が一致する変換前の要求1と変換していない要求2との類似度が高くなる。したがって、本ステップで、変換後の類似度が変換前の類似度未満となるため、矛盾検出部103は、矛盾と検出せずに、処理を移行する。i=2、j=1、k=1のときは、ステップA5で、要求2「データAは編集可能でデータBは読込のみ。」が、矛盾ルール1の第一表現「<サ変名詞>」として「編集」または「読込」を含み、かつ、矛盾ルール1の第二表現「<サ変名詞>.*しない」を含まないため、関連性検出部102は、次のステップA6に移行する。ステップA6では、前のステップでのマッチが「編集」の場合は、関連性検出部102は、矛盾ルール1の第二表現「<サ変名詞>.*しない」を「編集.*しない」に変換し、前のステップでのマッチが「読込」の場合は、矛盾ルール1の第二表現「<サ変名詞>.*しない」を「読込.*しない」に変換する。そして、関連性検出部102は、次のステップA8に移行し、矛盾ルール1の第二表現を「編集しない」または「読込しない」に変換し、次のステップA7に処理を移行する。そして、ステップA7で、要求1が矛盾ルール1の第二表現である「編集.*しない」または「読込.*しない」を含まないため、本ステップに到達しない。i=2、j=1、k=2のときは、ステップA5で、要求2「データAは編集可能でデータBは読込のみ。」が、矛盾ルール2の第一表現「読込のみ」を含むが、矛盾ルール1の第二表現「編集可能」も含むため、本ステップに到達しない。このようにして、矛盾検出部103の本ステップは、図6の2件の要求を矛盾と検出しないことができる。
次に、関連性検出部102は、kをインクリメントする(ステップA12)。そして、関連性検出部102は、ステップA3に処理を移行する。
矛盾検出部103は、2つの要求を矛盾として検出する(ステップA13)。検出した結果は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。そして、矛盾検出部103は、処理を終了する。
関連性検出部102は、iを2、jを1に変更する(ステップA14)。そして、ステップA2に移行する。すなわち、要求1と要求2とを取り替えた逆の処理を開始する。
本実施形態によれば、システム・ソフトウェア開発の仕様書における要求の矛盾を、事前準備の労力をかけずに判定することができる。本発明で準備する矛盾ルールは、仕様書ごとでなくシステム・ソフトウェア開発全般に対して準備すればよいため、本発明では、仕様書ごとの事前準備の労力はかからない。なお、ここでは説明を簡単にするため、1つの要求にサ変名詞が1つ含まれる場合について説明したが、1つの要求に複数のサ変名詞が含まれる場合、それぞれのサ変名詞に対して矛盾となるかを関連性検出部と矛盾検出部とを繰り返し用いて同様に調べて、1つでも矛盾となるサ変名詞があるならば、矛盾と検出してもよい。
(第2の実施形態)
次に、本発明の第2の実施形態による要求間矛盾判定システムについて図面を参照して詳細に説明する。なお、第1の実施形態と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
図7を参照すると、本実施形態に係る要求間矛盾判定システムは、情報を記憶する記憶部21と、プログラム制御により動作する計算部22とから構成されている。
記憶部21は、要求記憶部100と、分割ルール記憶部200と、矛盾ルール記憶部101と、要求情報記憶部201と、事前変換ルール記憶部202とを備える。
要求記憶部100は、実施形態1と同様である。
分割ルール記憶部200は、要求を条件部と帰結部とに分割するための分割ルールを記憶する。分割ルールは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。図8は、分割ルール記憶部200に記憶された分割ルールの例を示す説明図である。図で、1行目は列の見出し行であり、2行目からは1行ごとに1件の分割ルールを示す。1列目の番号は、分割ルールを示す番号を示す。2列目の分割パターンは、分割ルールのパターン表現を示す。以降、番号がiの分割ルールを分割ルールiと呼ぶことにする。図の分割パターンでは、「^」は先頭を示す表現、「$」は末尾を示す表現である。「<先頭不要語>」は、文の先頭として不要な語であり、たとえば、「、」、「には」などである。「<末尾不要語>」は、文の末尾として不要な語であり、たとえば、「の」などである。「()」は、囲まれた部分にマッチしたところを左から数えて、最初が「$1」、2番目が「$2」で参照できることを示す。図の3列目は、条件部としてどのマッチを参照するかを示す。4列目は、帰結部としてどのマッチを参照するかを示す。この例では、最初のマッチである「$1」を条件部、2番目のマッチである「$2」を帰結部として参照することを示す。
矛盾ルール記憶部101は、実施形態1と同様である。
要求情報記憶部201は、要求記憶部100に記憶された要求の情報である要求情報を記憶する。要求情報記憶部201は、図9は、要求記憶部100に記憶された矛盾した要求の例を示す説明図である。図10は、要求情報記憶部201に記憶された要求情報の例を示す説明図である。図9の要求に対し、図10の要求情報は、それぞれの要求の条件部と帰結部を記憶する。図10で、1行目は列の見出し行であり、2行目からは1行ごとに1件の要求情報を示す。1列目の番号は、要求情報を示す番号である。2列目の条件部は、要求の条件部、3列目の帰結部は、要求の帰結部を示す。4列目の変換後の条件部は、事前変換ルール記憶部202に記載された事前ルールに基づいて変換された後の条件部、5列目の変換後の帰結部は、事前変換ルール記憶部202に記載された事前ルールに基づいて変換された後の帰結部を示す。以降では、番号がiの要求情報を要求情報iと呼ぶことにする。また、要求記憶部100の要求iに対する要求情報は、要求情報記憶部201の要求情報iであるものとする。要求情報記憶部201は、処理の開始時点では空であり、本発明の処理にしたがって要求情報が記憶される。
事前変換ルール記憶部202は、類似度を計算する前にテキストを変換するための事前変換ルールを記憶する。事前変換ルールは、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。図11は、事前変換ルール記憶部202に記憶された事前変換ルールの例を示す説明図である。図で、1行目は列の見出し行であり、2行目からは1行ごとに1件の事前変換ルールを示す。1列目の番号は事前変換ルールの番号を示す。2列目の矛盾ルールの番号は、その事前変換ルールを適用する前提となる矛盾ルールの番号を示す。事前変換ルールは、2つの表現から成っており、3列目の第一表現と4列目の第二表現は、それぞれ、事前変換ルールの変換前の表現と変換後の表現を示す。以降では、番号がmの事前変換ルールを事前変換ルールmと呼ぶことにする。図11で、事前変換ルール1の矛盾ルールの番号が「1」であることから、事前変換ルール1は、図4の矛盾ルール1を用いて変換する場合に適用する。矛盾ルール1は、<サ変名詞>とマッチさせており、「<マッチ外のサ変名詞>」とは、マッチしたサ変名詞とは異なる別のサ変名詞のことである。図11で、事前変換ルール2の矛盾ルールの番号が「2」であることから、事前変換ルールは、図4の矛盾ルール2を用いて変換する場合に適用する。なお、ここでは、事前変換ルールの第二表現が空(長さ0の文字列)である場合を例として説明しているが、事前変換ルールの第二表現は、空以外でよいものとする。
計算部22は、要求分割部203と、関連性検出部204と、矛盾検出部205とを備える。
要求分割部203は、分割ルール記憶部200に記憶された分割ルールに基づいて、要求記憶部100に記憶された要求を、条件部と帰結部とに分割し、分割した結果を要求情報記憶部201に記憶する。図8と図9とを例として説明する。要求分割部203は、図9の要求1「Aボタンを押下とき登録した」に対し、図8の分割ルール1の分割パターン「^(.*)<末尾不要語>場合(.*)$」はマッチせず、分割ルール2の分割パターン「^(.*)<末尾不要語>とき(.*)$」がマッチするため、分割ルール2にしたがって、「の」+「とき」+「、」、すなわち、「のとき、」の前までの「Aボタンを押下」を条件部、「のとき、」の後の「登録した」を帰結部と判定する。また、図9の要求2「データAを削除。場合にはボタンAを押した」に対し、図8の分割ルール1の分割パターンがマッチするため、分割ルール1にしたがって、「場合」+「には」、すなわち、「場合には」の前までの「データAを削除。」を条件部、「場合には」の後の「ボタンAを押した」を帰結部と判定する。そして、要求分割部203は、図10の要求情報1のように要求情報を要求情報記憶部201に記憶する。
関連性検出部204は、矛盾ルール記憶部101に記憶された矛盾ルールに基づいて、要求情報記憶部201に記憶された要求の条件部と帰結部とを変換し、変換結果を要求情報記憶部201に記憶する。そして、要求情報記憶部201に記憶された要求情報に基づいて、2つの要求の関連性を検出する。ドキュメントから抽出した要求を、辞書などを用いて同義語をその代表語に統一し、冗長表現を簡略化することに関しては、実施形態1の要求記憶部100で説明した通りである。ここでの事前変換とは、適用する矛盾ルールごとに行う事前変換である。たとえば、矛盾ルール記憶部101に記憶された1つの矛盾ルールに対し、関連性検出部204は、要求情報に対し、事前変換ルールの第一表現にマッチする文字列を、事前変換ルールの第二表現にマッチする文字列に変換する。図11の事前変換ルールに基づいて、図10の要求情報を変換する場合を例として説明する。図10の要求情報1で図4の矛盾ルール1を用いて変換する場合、要求情報1の条件部「Aボタンを押下」は図11のどの事前変換ルールの第一表現にもマッチしないため、関連性検出部204は、条件部を変換せず、要求情報1の条件部「Aボタンを押下」のまま図10の変換後の条件部に記憶する。要求情報1の帰結部「登録したデータAを削除。」は、事前変換ルール2の第一表現にマッチするため、関連性検出部204は、「登録した」を削除し、図10にあるように、変換後の帰結部を「データAを削除。」として、図10の変換後の帰結部に記憶する。
矛盾検出部205は、関連性検出部204で計算した類似度と、要求情報に記憶された要求情報の帰結部間の類似度とに基づいて、矛盾を検出する。ここでは、実施形態1における要求の代わりに、要求情報の帰結部を用いればよい。
次に、図14のフローチャートを参照して、本実施の形態2の全体の動作について詳細に説明する。
まず、要求分割部203は、分割ルール記憶部200に記憶された分割ルールに基づいて、要求記憶部100に記憶された2つの要求を、条件部と帰結部とに分割する(ステップA15)。そして、要求分割部203は、条件部のテキストと帰結部のテキストとを要求情報記憶部201に記憶する。本ステップの詳細な処理については後述する。
次に、関連性検出部204は、矛盾ルール記憶部101に記憶された矛盾ルールの番号を示すkを1に初期化する(ステップA16)。
次に、関連性検出部204は、kと矛盾ルール記憶部101に記憶された矛盾ルール数Kとを比較する(ステップA17)。kが矛盾ルール記憶部101に記憶された矛盾ルール数K以下ならば、関連性検出部204は、ステップA18に処理を移行する。kがKより大きいならば、関連性検出部204は、2つの要求は矛盾とはいえないと判定し、処理を終了する。ここで、kがKより大きいならば、関連性検出部204は、矛盾でなかったと出力してもよい。出力は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。
次に、関連性検出部204は、矛盾ルールkと事前変換ルール記憶部202に記憶された事前変換ルールとに基づいて、2つの要求を変換する(ステップA18)。
次に、関連性検出部204は、2つの要求の条件部の類似度を計算する(ステップA19)。ここで、2つの要求の条件部が両方とも空(長さ0の文字列)の場合は、2つの要求の条件部の類似度を次のステップの閾値より高い値とする。すなわち、2つの要求が両方とも条件部がない場合は、関連性検出部204は、次のステップで条件部が類似したと判定することとする。2つの要求の条件部のうち一方が空の場合は、コルモゴロフ複雑性の概算を用いると、類似度は、概ね0となる。すなわち、2つの要求の一方だけに条件部がある場合は、関連性検出部204は、次のステップで条件部が類似しないと判定することとする。
次に、関連性検出部204は、計算した条件部の類似度と閾値を比較する(ステップA20)。閾値は、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。類似度が閾値以上ならば、関連性検出部204は、次のステップA21に処理を移行する。類似度が閾値未満ならば、関連性検出部204は、ステップA23に処理を移行する。すなわち、関連性検出部204は、条件部が類似している場合のみ、矛盾かどうかを調べる。
次に、関連性検出部204は、矛盾ルールを用いて一方を変換した帰結部の類似度と閾値とを比較する(ステップA21)。閾値は、システムのユーザがキーボードなどを介して入力することで指定してもよいし、システムにデフォルトとして記憶しておいてもよいし、それ以外の様態で指定してもよい。なお、本ステップで閾値は、前のステップA20と同じ値を用いてもよいし、別の値を指定してもよい。矛盾ルールを用いた変換については、実施形態1と同様の処理である。ある1つの矛盾ルールに対し、一方を変換した帰結部の類似度が閾値以上ならば、関連性検出部204は、次のステップA22に処理を移行する。類似度が閾値未満ならば、関連性検出部204は、ステップA23に処理を移行する。実施形態1との違いを示すために、事前変換ルールを用いた変換の別の例を示す。図12は、要求記憶部100に記憶された別の要求の例を示す説明図である。図13は、要求情報記憶部201に記憶された別の要求情報の例を示す説明図である。図12の要求に対し、図13の要求情報は、それぞれの要求の条件部と帰結部を記憶する。図で示すように、2つの要求は、矛盾はしていない。2つの要求の条件部は類似しており、要求情報1の帰結部「登録したデータAを削除。」はサ変名詞である「削除」とマッチするが「削除.*しない」とはマッチせず、要求情報2の帰結部「データAを削除するが登録しない。」は「削除.*しない」とマッチする。要求情報の帰結部を要求とみなして実施形態1の処理を行うと、要求情報1の帰結部を図4の矛盾ルール1を用いて「登録したデータAを削除しない。」に変換する。そして、変換した要求情報1の帰結部と変換していない要求情報2の帰結部とが類似することから、関連性ありと検出してしまう。一方、本実施形態2を用いると、関連性検出部204は、図4の矛盾ルール1で<サ変名詞>として「削除」を用いる場合、図11の事前変換ルール1により、「登録」が「削除」以外のサ変名詞であることから、要求情報2の帰結部「データAを削除するが登録しない。」から「登録しない」を削除し、図13の要求情報1の変換後の帰結部にあるように、「データAを削除するが。」となる。そのため、図13にあるように、要求情報1の帰結部「データAを削除。」と要求情報2の帰結部「データAを削除するが.」とは、図4の矛盾ルールとはマッチせず、関連性検出部204はこれら2つの要求を関連性ありとは検出しなくなる。
次に、矛盾検出部205は、要求情報記憶部201を参照して、事前変換ルールを用いて変換した後、矛盾ルールを用いて変換する前の帰結部間の類似度を計算し、関連性検出部204で計算した変換後の類似度と、矛盾検出部205で計算した矛盾ルールでの変換前の類似度とを比較する(ステップA22)。変換後の類似度が矛盾ルールでの変換前の類似度以上ならば、矛盾検出部205は、次のステップA24に処理を移行する。変換後の類似度が矛盾ルールでの変換前の類似度未満ならば、矛盾検出部205は、次のステップA23に処理を移行する。
次に、関連性検出部204は、kをインクリメントする(ステップA23)。そして、関連性検出部204は、ステップA17に処理を移行する。
矛盾検出部205は、2つの要求を矛盾として検出する(ステップA24)。検出結果は、すぐにディスプレイ装置や印刷装置などを介して出力してもよいし、記憶しておいてシステムのユーザからのリクエストなどに応じて出力してもよいし、それ以外の様態で出力してもよい。そして、矛盾検出部205は、処理を終了する。
次に、図15のフローチャートを参照して、本実施の形態2の要求iに対する要求分割部203の動作について詳細に説明する。
まず、要求分割部203は、分割ルールを示す番号mを1に初期化する(ステップA25)。
次に、要求分割部203は、mと分割ルール数Mとを比較する(ステップA26)。mがM以下ならば、要求分割部203は、次のステップA27に処理を移行する。mがMより大きければ、要求分割部203は、ステップA30に処理を移行する。
次に、要求分割部203は、要求iが分割ルールmの分割パターンとマッチするかを調べる(ステップA27)。マッチするならば、要求分割部203は、ステップA29に処理を移行する。マッチしないならば、要求分割部203は、次のステップA28に処理を移行する。
次に、要求分割部203は、割ルールの番号を示すmをインクリメントする(ステップA28)。そして、要求分割部203は、ステップA26に処理を移行する。
要求分割部203は、分割ルール1を用いて、要求を条件部、帰結部へと分割する(ステップA29)。そして、要求分割部203は、処理を終了する。たとえば、図9の要求1「Aボタンを押下したとき、登録した」は、図10の、条件部は、「Aボタンを押下した」、帰結部は、「登録した」となる。
要求分割部203は、要求iの条件部を空のまま、帰結部を要求iそのものとする(ステップA30)。それから、要求分割部203は、処理を終了する。
本実施形態によれば、要求分割部で要求を条件部と帰結部に分割し、関連性検出部で条件部が類似した要求間のみでの矛盾を検出するため、条件部が一致しない2つの要求を矛盾と誤検出しなくなり、矛盾と誤検出することが軽減される。また、関連性検出部において、要求を事前変換するため、矛盾と誤検出することが軽減される。
なお、本発明に記載した方法は、コンピュータに実行させることのできるプログラムとして、フロッピー(登録商標)ディスク、ハードディスクなどの磁気ディスク、CD−ROM、DVDなどの光ディスク、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト等のミドルウェアなどが各処理の一部を実行してもよい。
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネットなどにより伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であってもよい。
本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき各処理を実行するものであって、パソコンなどからなる装置、複数の装置がネットワーク接続されたシステムなどの何れの構成であってもよい。
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置を含み、プログラムによって本発明の機能を実現することが可能な機器、装置である。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。また、構成要素を適宜組合せてもよい。
この出願は、2012年12月18日に出願された日本国特許出願第2012−275745号からの優先権を基礎として、その利益を主張するものであり、その開示はここに全体として参考文献として取り込む。
また、上記の実施形態の一部または全部は、以下のようにも記載されうる。なお、以下の付記は本発明をなんら限定するものではない。
(付記1)
テキストで表現された2つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、2つの要求間の関連性を検出する関連性検出部と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、2つの要求が矛盾か否かを検出する矛盾検出部と、を備えることを特徴とする要求間矛盾判定システム。
(付記2)
前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの1つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする上記付記1に記載の要求間矛盾判定システム。
(付記3)
前記関連性検出部は、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、2つの要求が関連性ありと検出し、前記矛盾検出部は、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする上記付記1又は上記付記2に記載の要求間矛盾判定システム。
(付記4)
前記関連性検出部と前記矛盾検出部とは、コルモゴロフ複雑性の概算法に基づいて、2つのテキスト間の類似度を計算することを特徴とする上記付記1から上記付記3の何れか一項に記載の要求間矛盾判定システム。
(付記5)
前記関連性検出部と前記矛盾検出部は、類似度を計算する前に、前記関連性検出部において変換に用いる1つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、2つの要求を変換することを特徴とする上記付記1から上記付記4の何れか一項に記載の要求間矛盾判定システム。
(付記6)
前記関連性検出部において変換する一方の要求が前記変換に用いた1つの矛盾ルールの1つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、2つの要求を変換することを特徴とする上記付記5に記載の要求間矛盾判定システム。
(付記7)
テキストで表現された要求を、予め定めた分割ルールに基づいて条件部と帰結部とに分割する要求分割部を備え、前記関連性検出部は、2つの要求の条件部のテキスト間の類似度と、2つの要求の帰結部のテキスト間の類似度とに基づいて、2つの要求の関連性を検出し、前記矛盾検出部は、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、2つの要求が矛盾か否かを検出することを特徴とする上記付記1から上記付記6の何れか一項に記載の要求間矛盾判定システム。
(付記8)
テキストで表現された2つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、2つの要求間の関連性を検出する関連性検出ステップと、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、2つの要求が矛盾か否かを検出する矛盾検出ステップと、を備えることを特徴とする要求間矛盾判定方法。
(付記9)
前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの1つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする上記付記8に記載の要求間矛盾判定方法。
(付記10)
前記関連性検出ステップは、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、2つの要求が関連性ありと検出し、前記矛盾検出ステップは、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする上記付記8又は上記付記9に記載の要求間矛盾判定方法。
(付記11)
前記関連性検出ステップと前記矛盾検出ステップとは、コルモゴロフ複雑性の概算法に基づいて、2つのテキスト間の類似度を計算することを特徴とする上記付記8から上記付記10の何れか一項に記載の要求間矛盾判定方法。
(付記12)
前記関連性検出ステップと前記矛盾検出ステップは、類似度を計算する前に、前記関連性検出部において変換に用いる1つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、2つの要求を変換することを特徴とする上記付記8から上記付記11の何れか一項に記載の要求間矛盾判定方法。
(付記13)
前記関連性検出部において変換する一方の要求が前記変換に用いた1つの矛盾ルールの1つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、2つの要求を変換することを特徴とする上記付記12に記載の要求間矛盾判定方法。
(付記14)
テキストで表現された要求を、予め定めた分割ルールに基づいて条件ステップと帰結ステップとに分割する要求分割部を備え、前記関連性検出ステップは、2つの要求の条件部のテキスト間の類似度と、2つの要求の帰結部のテキスト間の類似度とに基づいて、2つの要求の関連性を検出し、前記矛盾検出ステップは、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、2つの要求が矛盾か否かを検出することを特徴とする上記付記8から上記付記13の何れか一項に記載の要求間矛盾判定方法。
(付記15)
テキストで表現された2つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、2つの要求間の関連性を検出する関連性検出処理と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、2つの要求が矛盾か否かを検出する矛盾検出処理と、を備えることを特徴とする要求間矛盾判定プログラム。
(付記16)
前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの1つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする上記付記15に記載の要求間矛盾判定プログラム。
(付記17)
前記関連性検出処理は、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、2つの要求が関連性ありと検出し、前記矛盾検出処理は、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする上記付記15又は上記付記16に記載の要求間矛盾判定プログラム。
(付記18)
前記関連性検出処理と前記矛盾検出処理とは、コルモゴロフ複雑性の概算法に基づいて、2つのテキスト間の類似度を計算することを特徴とする上記付記15から上記付記17の何れか一項に記載の要求間矛盾判定プログラム。
(付記19)
前記関連性検出処理と前記矛盾検出処理は、類似度を計算する前に、前記関連性検出部において変換に用いる1つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、2つの要求を変換することを特徴とする上記付記15から上記付記18の何れか一項に記載の要求間矛盾判定プログラム。
(付記20)
前記関連性検出部において変換する一方の要求が前記変換に用いた1つの矛盾ルールの1つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、2つの要求を変換することを特徴とする上記付記19に記載の要求間矛盾判定プログラム。
(付記21)
テキストで表現された要求を、予め定めた分割ルールに基づいて条件処理と帰結処理とに分割する要求分割部を備え、前記関連性検出処理は、2つの要求の条件部のテキスト間の類似度と、2つの要求の帰結部のテキスト間の類似度とに基づいて、2つの要求の関連性を検出し、前記矛盾検出処理は、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、2つの要求が矛盾か否かを検出することを特徴とする上記付記15から上記付記20の何れか一項に記載の要求間矛盾判定プログラム。
11 記憶部
12 計算部
21 記憶部
22 計算部
100 要求記憶部
101 矛盾ルール記憶部
102 関連性検出部
103 矛盾検出部
200 分割ルール記憶部
201 要求情報記憶部
202 事前変換ルール記憶部
203 要求分割部
204 関連性検出部
205 矛盾検出部
この出願は、2012年12月18日に出願された日本出願特願第2012−275745号を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
12 計算部
21 記憶部
22 計算部
100 要求記憶部
101 矛盾ルール記憶部
102 関連性検出部
103 矛盾検出部
200 分割ルール記憶部
201 要求情報記憶部
202 事前変換ルール記憶部
203 要求分割部
204 関連性検出部
205 矛盾検出部
この出願は、2012年12月18日に出願された日本出願特願第2012−275745号を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
Claims (9)
- テキストで表現された2つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、2つの要求間の関連性を検出する関連性検出部と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、2つの要求が矛盾か否かを検出する矛盾検出部と、を備えることを特徴とする要求間矛盾判定システム。
- 前記矛盾ルールは、複数の同時に成立しない状態を示す複数の矛盾表現から構成され、前記関連性検出部の要求の変換は、前記一方の要求において、矛盾ルールの1つの矛盾表現にマッチする文字列を、矛盾ルールの別の矛盾表現にマッチする文字列に変換することを特徴とする請求項1に記載の要求間矛盾判定システム。
- 前記関連性検出部は、前記関連性検出部で計算した類似度が予め定めた閾値以上であるならば、2つの要求が関連性ありと検出し、前記矛盾検出部は、前記関連性検出部で関連性ありと検出され、かつ、前記関連性検出部で計算した類似度が、元の変換前の要求間の類似度より高いならば、矛盾として検出することを特徴とする請求項1又は請求項2に記載の要求間矛盾判定システム。
- 前記関連性検出部と前記矛盾検出部とは、コルモゴロフ複雑性の概算法に基づいて、2つのテキスト間の類似度を計算することを特徴とする請求項1から請求項3の何れか一項に記載の要求間矛盾判定システム。
- 前記関連性検出部と前記矛盾検出部は、類似度を計算する前に、前記関連性検出部において変換に用いる1つの矛盾ルールと、予め定めた事前変換ルールとに基づいて、2つの要求を変換することを特徴とする請求項1から請求項4の何れか一項に記載の要求間矛盾判定システム。
- 前記関連性検出部において変換する一方の要求が前記変換に用いた1つの矛盾ルールの1つの矛盾表現にマッチする文字列を変換文字列と呼ぶとき、前記事前変換ルールは、前記事前変換ルールにマッチする文字列のうちで、前記変換文字列を除く文字列を用いて、2つの要求を変換することを特徴とする請求項5に記載の要求間矛盾判定システム。
- テキストで表現された要求を、予め定めた分割ルールに基づいて条件部と帰結部とに分割する要求分割部を備え、前記関連性検出部は、2つの要求の条件部のテキスト間の類似度と、2つの要求の帰結部のテキスト間の類似度とに基づいて、2つの要求の関連性を検出し、前記矛盾検出部は、前記関連性検出部の検出結果と、前記関連性検出部で計算した帰結部のテキスト間の類似度と、元の変換前の要求の帰結部のテキスト間の類似度とに基づいて、2つの要求が矛盾か否かを検出することを特徴とする請求項1から請求項6の何れか一項に記載の要求間矛盾判定システム。
- テキストで表現された2つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、2つの要求間の関連性を検出する関連性検出ステップと、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、2つの要求が矛盾か否かを検出する矛盾検出ステップと、を備えることを特徴とする要求間矛盾判定方法。
- テキストで表現された2つの要求に対し、予め定めた矛盾ルールに基づいて一方のテキストを変換した要求ともう一方の変換していない要求との類似度とに基づいて、2つの要求間の関連性を検出する関連性検出処理と、前記関連性検出部の検出結果と、前記関連性検出部で計算した類似度と、元の変換前の要求間の類似度とに基づいて、2つの要求が矛盾か否かを検出する矛盾検出処理と、をコンピュータに実行させるための要求間矛盾判定プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012275745 | 2012-12-18 | ||
JP2012275745 | 2012-12-18 | ||
PCT/JP2013/080966 WO2014097790A1 (ja) | 2012-12-18 | 2013-11-11 | 要求間矛盾判定システム、要求間矛盾判定方法、および、要求間矛盾判定プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2014097790A1 JPWO2014097790A1 (ja) | 2017-01-12 |
JP6260791B2 true JP6260791B2 (ja) | 2018-01-17 |
Family
ID=50978134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014553025A Expired - Fee Related JP6260791B2 (ja) | 2012-12-18 | 2013-11-11 | 要求間矛盾判定システム、要求間矛盾判定方法、および、要求間矛盾判定プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US9483234B2 (ja) |
JP (1) | JP6260791B2 (ja) |
WO (1) | WO2014097790A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180018738A1 (en) * | 2016-07-14 | 2018-01-18 | Digital Asset Holdings | Digital asset platform |
WO2018073264A1 (en) * | 2016-10-17 | 2018-04-26 | Koninklijke Philips N.V. | Device, system, and method for updating problem lists |
JP6800054B2 (ja) * | 2017-03-07 | 2020-12-16 | Kddi株式会社 | 情報管理装置 |
US11270038B2 (en) * | 2019-09-09 | 2022-03-08 | Shainin II LLC | Redundancy detection with function models |
US11924350B2 (en) | 2021-07-29 | 2024-03-05 | Digital Asset (Switzerland) GmbH | Cryptographically enforced partial blinding for distributed system |
US20230069285A1 (en) * | 2021-08-19 | 2023-03-02 | Bank Of America Corporation | Cognitive scrum master assistance interface for developers |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6047300A (en) * | 1997-05-15 | 2000-04-04 | Microsoft Corporation | System and method for automatically correcting a misspelled word |
JP2002041544A (ja) * | 2000-07-25 | 2002-02-08 | Toshiba Corp | テキスト情報分析装置 |
JP4351186B2 (ja) | 2005-05-19 | 2009-10-28 | 富士通株式会社 | 仕様書確認方法、仕様書確認プログラム、該プログラムを記録した記録媒体、および仕様書確認装置 |
KR101254247B1 (ko) * | 2007-01-18 | 2013-04-12 | 중앙대학교 산학협력단 | 메모리 액세스 로그 분석을 통한 프로그램 표절 검출 장치및 방법 |
JP2008250760A (ja) * | 2007-03-30 | 2008-10-16 | Nec Corp | 自然言語解析による要件定義支援システムシステム設計支援システム、要件定義支援装置、システム設計支援方法及びプログラム |
US7925605B1 (en) * | 2007-09-13 | 2011-04-12 | The United States Of America As Represented By The Secretary Of The Navy | Evolutionary expert systems and methods using meta-rules matching |
JP5005510B2 (ja) * | 2007-11-07 | 2012-08-22 | 株式会社日立製作所 | ソフトウェアの設計支援方法、設計支援装置及び設計支援プログラム |
US20090226872A1 (en) * | 2008-01-16 | 2009-09-10 | Nicholas Langdon Gunther | Electronic grading system |
US8583571B2 (en) * | 2009-07-30 | 2013-11-12 | Marchex, Inc. | Facility for reconciliation of business records using genetic algorithms |
WO2011139687A1 (en) * | 2010-04-26 | 2011-11-10 | The Trustees Of The Stevens Institute Of Technology | Systems and methods for automatically detecting deception in human communications expressed in digital form |
WO2012026197A1 (ja) * | 2010-08-24 | 2012-03-01 | 日本電気株式会社 | 文書分析システム、文書分析方法、文書分析プログラムおよび記録媒体 |
WO2012147428A1 (ja) * | 2011-04-27 | 2012-11-01 | 日本電気株式会社 | テキストクラスタリング装置、テキストクラスタリング方法、およびコンピュータ読み取り可能な記録媒体 |
-
2013
- 2013-11-11 JP JP2014553025A patent/JP6260791B2/ja not_active Expired - Fee Related
- 2013-11-11 US US14/652,592 patent/US9483234B2/en active Active
- 2013-11-11 WO PCT/JP2013/080966 patent/WO2014097790A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
JPWO2014097790A1 (ja) | 2017-01-12 |
US20160188297A1 (en) | 2016-06-30 |
WO2014097790A1 (ja) | 2014-06-26 |
US9483234B2 (en) | 2016-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6260791B2 (ja) | 要求間矛盾判定システム、要求間矛盾判定方法、および、要求間矛盾判定プログラム | |
US9858270B2 (en) | Converting data into natural language form | |
US8224641B2 (en) | Language identification for documents containing multiple languages | |
US8484238B2 (en) | Automatically generating regular expressions for relaxed matching of text patterns | |
US20130191718A1 (en) | Rule based apparatus for modifying word annotations | |
JP5862893B2 (ja) | 文書分析システム、文書分析方法及び文書分析プログラム | |
US20140350913A1 (en) | Translation device and method | |
WO2005059771A1 (ja) | 対訳判断装置、方法及びプログラム | |
US10042880B1 (en) | Automated identification of start-of-reading location for ebooks | |
JP2013105321A (ja) | 文書処理装置、文書構成要素間の関係解析方法およびプログラム | |
JP2019082931A (ja) | 検索装置、類似度算出方法、およびプログラム | |
JP2020190970A (ja) | 文書処理装置およびその方法、プログラム | |
Krishna et al. | A dataset for sanskrit word segmentation | |
JP6867963B2 (ja) | 要約評価装置、方法、プログラム、及び記憶媒体 | |
JP6327799B2 (ja) | 自然言語推論システム、自然言語推論方法及びプログラム | |
WO2009113289A1 (ja) | 新規事例生成装置、新規事例生成方法及び新規事例生成用プログラム | |
JP2004272352A (ja) | 類似度計算方法、装置、プログラムおよび該プログラムを格納した記録媒体 | |
JP7415495B2 (ja) | 文書処理プログラム、文書処理装置、及び文書処理方法 | |
JP2008077512A (ja) | 文書解析装置、および文書解析方法、並びにコンピュータ・プログラム | |
JP5911931B2 (ja) | 述語項構造抽出装置、方法、プログラム、及びコンピュータ読取り可能な記録媒体 | |
WO2012124301A1 (ja) | 関連仕様対応付けシステム、関連仕様対応付け方法およびプログラム | |
JP4039205B2 (ja) | 自然言語処理システム及び自然言語処理方法、並びにコンピュータ・プログラム | |
JP4417967B2 (ja) | 用例データベース及び用例検索システム | |
JP6172447B2 (ja) | 関連性判定システム、方法、およびプログラム | |
Eger | Designing and comparing G2P-type lemmatizers for a morphology-rich language |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161006 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20171115 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171128 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6260791 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |