以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。図1は、第1実施形態に係る共通操作情報生成装置の一例を示した図である。図1に示した共通操作情報生成装置10は、第1実施形態に係る共通操作情報生成装置の一例である。
図1に示すように、共通操作情報生成装置10は、記憶部11及び演算部12を有する。
記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置、或いは、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置である。演算部12は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。但し、演算部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路であってもよい。演算部12は、例えば、記憶部11又は他のメモリに記憶されたプログラムを実行する。
記憶部11は、複数の操作に関する情報が該操作の実行順に記された手順情報21、22、23を記憶する。記号A、B、…、Iは、それぞれ1つの操作を表す「操作に関する情報」の一例である。この例では操作をアルファベットで表現しているが、文字や数字などのコンピュータが認識可能な任意の記号を利用することができる。
以下では、記号Aで表される操作を操作Aと表記する。操作B、…、Iについても同様である。また、連続する複数の操作を「操作列」と称し、例えば、連続する操作A、Bを操作列ABと表記する。
操作A、B、…、Iは、例えば、コンピュータへのログイン操作やアプリケーションプログラムの起動操作など、コンピュータに対してユーザが行う任意の操作である。図1(#1)に示すように、手順情報21には、実行順に操作A、B、…、Iが記されている。つまり、手順情報21には、操作列ABCDEFGHが記されている。同様に、手順情報22には操作列ACEFGIが記され、手順情報23には操作列ABCEGHが記されている。
図1(#2)に示すように、演算部12は、記憶部11から手順情報21、22、23を取得し、2以上の手順情報の間で共通する操作の組を第1操作列(この例では3つの操作列AB、CE、FG)として生成する。さらに、演算部12は、手順情報の間で共通しない操作の組を第1操作列(この例では、6つの操作列A、C、DE、GH、H、I)として生成する。
第1操作列を生成する方法としては、例えば、SW法を利用する方法や、第1操作列それぞれの長さがより長く、手順情報21、22、23それぞれの分割数がより少なくなるように手順情報21、22、23を複数の第1操作列に分割する方法などが適用できる。
第1操作列を生成した演算部12は、図1(#3)に示すように、第1操作列に対するクラスタリングを行い、第1操作列をクラスタ31、32、…、36に分類する。そして、演算部12は、クラスタ31、32、…、36各々における操作毎の出現頻度を該操作の省略可能性として評価する。
例えば、クラスタ31には3つの操作列AB、A、ABが含まれる。また、操作列AB、A、ABにはそれぞれ操作Aが含まれる。この場合、クラスタ31における操作Aの出現頻度は3となる。同様に、操作Bの出現頻度は2、操作Cの出現頻度は3となる。操作D、E、F、G、Hの出現頻度は図1(#4)にまとめて示されている。
但し、操作Eの出現頻度は、クラスタ32における出現頻度である。操作Eは、2つのクラスタ32、36に出現している。この場合、演算部12は、いずれかのクラスタにおける出現頻度を選択する。例えば、演算部12は、クラスタ32、36それぞれに含まれる操作列の数を比較し、操作列の数が多いクラスタ32における操作Eの出現頻度を選択する。
ところで、類似度に基づいて操作列を分類するクラスタリングの性質から、同じクラスタに含まれる複数の操作列は類似する操作列である。つまり、同じクラスタに含まれる複数の操作列は実質的に同じ内容を示す操作列である可能性が高いと評価できる。
例えば、類似した操作列(同じクラスタに属する操作列)が3つある場合、3つの操作列全てに出現する操作は省略してもよい可能性(省略可能性)が低いと考えられる。一方、1つの操作列にしか出現しない操作は省略可能性が高いと考えられる。この考えによれば、例えば、同じクラスタに含まれる操作のうち、一部の操作列にしか含まれない操作は省略可能性が高いと評価することができる。
演算部12は、手順情報21、22、23から、省略可能な操作を省略した場合の共通性に基づいて、2以上の手順情報の間で共通する操作の組を第2操作列(この例では操作列A[B]C、EF、GH)として生成する。[…]は省略可能性が高いと評価された操作を表す。例えば、操作列A[B]Cは、操作列ACと実質的に共通するとみなされる。
第2操作列の生成に際し、演算部12は、省略可能な操作を省略した場合の共通性を考慮するために次のような方法を用いうる。
1つの方法は、SW法のように、比較対象にする2つの操作列の各操作の一致及び不一致を評価し、一致する操作の連続性から操作の組を切り出す方法において、省略可能性が高いと評価される操作の部分では連続性があると判断する方法である。他の方法は、省略可能性が高いと評価される操作を手順情報21、22、23から除去し、除去後の手順情報21、22、23を用いて第2操作列を生成する方法である。
いずれの方法を適用しても、クラスタリングによって得られた操作列間の類似度(つまり、実質的な共通性)が、手順情報間で共通する操作列を特定する際に考慮される。そのため、手順情報の作成者により一部の操作が省略されても、省略部分の相違にとらわれて内容的に同じ操作列が手順情報間で非共通の操作列と判断されるリスクを低減することができるようになる。その結果、実質的に同じ操作列を効率的にまとめることができ、操作の自動化に際し管理の効率向上や処理負担の低減に寄与する。
以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。
第2実施形態は、実行順に複数の操作が記述された手順書から、これら複数の操作をコンピュータに自動実行させるための処理フローを生成する技術に関する。以下、実行順が連続する複数の操作を「操作列」と称する。この技術は、2以上の手順書間で共通する操作列(以下、共通操作列)を特定し、各手順書を共通操作列と、共通操作列以外の操作列(以下、非共通操作列)とに分割する方法を提供する。
第2実施形態は、まず、なるべく多くの手順書で各共通操作列が共通化され、かつ、各共通操作列の長さがなるべく長くなるように各共通操作列を特定する方法(A)を提供する。さらに、第2実施形態は、操作列の中に含まれる各操作の省略可能性を評価し、省略可能性を考慮して実質的に共通する操作列同士を共通操作列として特定可能にする方法(B)を提供する。「実質的に共通する」とは、省略してもよいと評価される操作(省略可能性が高い操作)を省略した場合に同じ操作列となることを意味する。
以下、上記方法(A)及び方法(B)について説明する。
[2−1.方法(A):共通操作列の特定方法]
図2〜図6を参照しながら、上記方法(A)に係る共通操作列の特定方法について説明する。また、共通操作列と共に非共通操作列の特定方法についても述べる。
(操作列への変換)
図2は、第2実施形態に係る共通操作列の特定方法について説明するための第1の図である。
手作業で行う操作の流れを記載した手順書は、自然言語で記述されていることが多い。図2の例において、手順書#1には「操作#1:ログイン」などと記述され、手順書#2には「操作#1:ログオン」などと記述されている。「ログイン」と「ログオン」とは同じ内容の操作であるため、コンピュータにおいては同じ処理が実行される。そこで、手順書を自動化する際、このような表現のゆらぎは、同じ内容の操作を自動分類するための辞書データ及び自然言語処理アルゴリズムなどを利用して吸収される。
例えば、図2に示した手順書#1、#2の記載内容は、表現のゆらぎを吸収することで4つの記号「A」、「B」、「C」、「D」によって表現することができる。コンピュータは、これらABCDを並べた記号列を操作列として用いる。図2の例では、操作#1をA、操作#2をB、操作#3をC、操作#4をDというアルファベットで表現したが、各操作の表現に用いる記号の種類はこれに限定されない。コンピュータが認識可能な記号であれば、数字や各種言語の文字などを含む任意の記号が適用可能である。
上記のように、1つの記号が1つの操作を表現していることから、以下では、1つの記号を「操作」、連続する複数の操作を表す記号列を「操作列」と称する場合がある。
(共通性と分割性)
第2実施形態では、共通操作列を特定する際、共通性、分割性という2つの要素が考慮される。そこで、図3〜図6を参照しながら、共通性及び分割性について説明する。
図3は、第2実施形態に係る共通操作列の特定方法について説明するための第2の図である。
図3の例は、手順書#1、#2、#3の分割方法を示している。手順書#1は、操作列ABCDEを含む。手順書#2は、操作列ABCDを含む。手順書#3は、操作列CDEFGを含む。
操作Aは、手順書#1、#2に共通して含まれる。また、操作Bは、手順書#1、#2に共通して含まれる。そして、操作Aと操作Bとは連続しているから、操作列ABも手順書#1、#2に共通して含まれる。とすると、手順書#1、#2を分割する際、操作A、操作Bをそれぞれ共通操作列とする方法と、操作列ABを共通操作列とする方法とが存在する。図3の例は、操作列ABを共通操作列とした場合の分割方法を示している。
同様に、操作C、操作D、操作列CDのいずれを共通操作列にするかも任意に選択可能であるが、図3の例では操作列CDが共通操作列とされている。このように、共通操作列の決め方には自由度があるが、第2実施形態では上述した共通性及び分割性を考慮して共通操作列が決められる。図3の例では、操作列AB、操作列CD、操作Eが2以上の手順書に含まれる共通操作列であり、操作列FGが非共通操作列である。
共通性とは、1つの共通操作列を共通して含む手順書の多さを言う。個々の共通操作列が多くの手順書に利用されていれば、管理対象となる操作列の数を減らすことができ、自動化の処理が効率化される。また、分割性とは、1つの手順書を分割して得られる操作列の数の少なさを言う。1つ1つの手順書に含まれる操作列が少なければ、共通操作列と非共通操作列とを組み合わせて手順書を再現する際に、組み合わせる操作列の数を少なく抑えることができ、処理負荷を減らすことが可能になる。
ただ、分割数が少なくなると、分割により手順書から切り出される共通操作列の長さが長くなる。共通操作列の長さが長いと、その共通操作列を共通して含む手順書の数が減る傾向にある。つまり、分割性と共通性とはトレードオフの関係にある。そこで、第2実施形態では、共通操作列を特定する際に分割性と共通性のバランスが考慮される。
図4は、第2実施形態に係る共通操作列の特定方法について説明するための第3の図である。
図4は、図3に例示した分割方法に対応する共通性と分割性のバランスを示している。図4(A)は、共通操作列及び非共通操作列のそれぞれに対応する利用数を示している。利用数とは、1つの操作列を共通して含む手順書の数を表す。例えば、手順書#1、#2に共通して含まれる共通操作列ABの利用数は2である。同様に、手順書#1、#2、#3に共通して含まれる共通操作列CDの利用数は3である。また、手順書#3だけに含まれる非共通操作列FGの利用数は1である。
一方、図4(B)は、各手順書に対応する分割数を示している。分割数とは、手順書がいくつの操作列に分割されたかを表す。例えば、3つの共通操作列AB、CD、Eに分割されている手順書#1の分割数は3である。同様に、2つの共通操作列AB、CDに分割されている手順書#2の分割数は2である。また、2つの共通操作列CD、Eと、1つの非共通操作列FGとに分割されている手順書#3の分割数は3である。
上記の利用数を用いると、例えば、下記の式(1)で与えられる共通性指標QCを利用して共通性を定量化することができる。図4(A)の場合、利用数の合計が8(2+3+2+1)、操作列の数が4(AB、CD、E、FG)であるから、共通性指標QCは2となる。また、上記の分割数を用いると、下記の式(2)で与えられる分割性指標QDを利用して分割性を定量化することができる。図4(B)の場合、分割数の合計が8(3+2+3)、手順書の数が3であるから、分割性指標QDは約2.7となる。
共通性指標QCが大きいほど共通性が良好であり、分割性指標QDが小さいほど分割性が良好である。ただ、共通性と分割性とはトレードオフの関係にある。
ここで、分割数が最小になる場合(図5)及び利用数が最大になる場合(図6)の例を示す。
図5は、第2実施形態に係る共通操作列の特定方法について説明するための第4の図である。
図5の例は、分割数が最小になる分割方法(つまり、分割しない方法)を示している。この場合、手順書#1、#2、#3のそれぞれに含まれる手順書毎の操作列全体が共通操作列又は非共通操作列として得られる。この例では全く同じ内容の手順書がないから、分割により得られる3つの操作列はいずれも非共通操作列(操作列ABCDE、ABCD、CDEFG)となる。この場合、図5(A)及び(B)に示すように、いずれの操作列も利用数が1となり、いずれの手順書も分割数が1となる。
上記の式(1)及び式(2)を用いると、共通性指標QCは1となり、分割性指標QDは1となる。このことから、図4の例に比べ、図5の例は共通性が悪く、分割性が良いことが分かる。
図6は、第2実施形態に係る共通操作列の特定方法について説明するための第5の図である。
図6の例は、利用数が最大になる分割方法(つまり、1つ1つの操作に分割する方法)を示している。この場合、手順書#1、#2、#3に含まれる操作A、B、C、D、E、F、Gがそれぞれ共通操作列又は非共通操作列として得られる。この例では、操作列A、B、C、D、Eがそれぞれ共通操作列となり、操作列F、Gがそれぞれ非共通操作列となる。この場合、図6(A)に示すように、共通操作列A、B、C、D、Eの利用数はそれぞれ2、2、3、3、2となる。また、図6(B)に示すように、手順書#1、#2、#3の分割数はそれぞれ5、4、5となる。
上記の式(1)及び式(2)を用いると、共通性指標QCは2となり、分割性指標QDは役4.7となる。このことから、図4の例に比べ、図5の例は共通性が良く、分割性が悪いことが分かる。
分割数が最小になる場合(図5)、利用数が最大になる場合(図6)、両者の中間に位置するような状態にある場合(図4)の3通りの例を示した。これらの例からも分かるように共通性と分割性とはトレードオフの関係にあるから、第2実施形態は、共通性と分割性のバランスを評価するバランス指標Q(下記の式(3))を導入し、バランス指標Qが最大となるように共通操作列を特定する方法を提供する。なお、非共通操作列は長さが最大となるように決められる。
上記の式(3)において、利用数合計の最大値とは、利用数が最大となる分割方法(図6参照)で分割した場合の利用数の合計値を表す。図6の例では、利用数合計の最大値が14(2+2+3+3+2+1+1)となる。一方、上記の式(3)において、分割数合計の最小値とは、分割数が最小となる分割方法(図5参照)で分割した場合の分割数の合計値を表す。図5の例では、分割数合計の最小値が3(1+1+1)となる。
以上、共通操作列の特定方法について説明した。
[2−2.方法(B):省略可能性の考慮]
上記のバランス指標Qが最大となるように共通操作列及び非共通操作列が特定されることで、共通性と分割性のバランスが良好となる手順書の分割が実現される。
ただ、人により作成され、人により使用されることを前提とする手順書では一部の操作について記載が省略されることがある。2つの操作列の一方に操作の省略があると、人間であれば省略を容易に判断できる場合であっても、コンピュータは、多くの場合、省略の有無を判断することが難しい。そのため、実質的に同じ内容の操作列が複数の手順書に共通して含まれていても、これらの操作列が非共通操作列と判断されるリスクが高い。
そこで、第2実施形態は、図7に示すように、操作の省略可能性を評価し、その評価結果を考慮して共通操作列を特定する方法を提供する。図7は、第2実施形態に係る省略可能性を考慮した共通操作列の特定方法について説明するための図である。なお、図7において鎖線で接続された操作列は共通操作列を表す。
図7(A)に示すような3つの手順書#1、#2、#3が与えられた場合、例えば、省略を考慮しないと図7(B)に示すような分割がされうる。図7(A)において[B]と表記した操作が省略できる操作であれば、図7(B)にある2つの操作列A、ABは実質的に同じ内容を示す操作列といえる。また、操作Bの省略可能性を考慮すれば、2つの操作列ABC、ACも実質的に同じ内容を示す操作列といえる。
こうした省略可能性を考慮すると、例えば、図7(C)に示すような分割がされうる。図7(C)では、外形的には異なるが、実質的には内容が共通する2つの操作列ABC、ACが共通操作列として特定されている。その結果、手順書#1の分割数は減り、操作列A[B]C(つまり、操作列ABC、AC)の利用数が増える(バランス指標Qが改善する)。第2実施形態は、上述した方法(A)のように手順書を分割する方法において、図7(C)に示すように操作の省略可能性を考慮する方法を提供する。
以上、省略可能性の考慮について説明した。
以下、上記の方法(A)及び(B)を実現可能な情報処理装置100のハードウェア及び機能について説明し、さらに、第2実施形態に係る共通操作列の特定に関する処理の流れについて順次説明する。なお、情報処理装置100は、第2実施形態に係る情報処理装置の一例である。
[2−3.ハードウェア]
図8は、第2実施形態に係る共通操作列の特定方法を実現する情報処理装置のハードウェアの一例を示した図である。情報処理装置100が有する機能は、例えば、図8に示すハードウェア資源を用いて実現することが可能である。つまり、情報処理装置100が有する機能は、コンピュータプログラムを用いて図8に示すハードウェアを制御することにより実現される。
図8に示すように、このハードウェアは、主に、CPU902と、ROM(Read Only Memory)904と、RAM906と、ホストバス908と、ブリッジ910とを有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926とを有する。
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
これらの要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、ボタン、スイッチ、及びレバーなどが用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラが用いられることもある。
出力部918としては、例えば、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、又はELD(Electro-Luminescence Display)などのディスプレイ装置が用いられる。また、出力部918として、スピーカやヘッドホンなどのオーディオ出力装置、又はプリンタなどが用いられることもある。つまり、出力部918は、情報を視覚的又は聴覚的に出力することが可能な装置である。
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、HDDなどの磁気記憶デバイスが用いられる。また、記憶部920として、SSD(Solid State Drive)やRAMディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
ドライブ922は、着脱可能な記録媒体であるリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
接続ポート924は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)、RS−232Cポート、又は光オーディオ端子など、外部接続機器930を接続するためのポートである。外部接続機器930としては、例えば、プリンタなどが用いられる。
通信部926は、ネットワーク932に接続するための通信デバイスである。通信部926としては、例えば、有線又は無線LAN(Local Area Network)用の通信回路、WUSB(Wireless USB)用の通信回路、光通信用の通信回路やルータ、ADSL(Asymmetric Digital Subscriber Line)用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられる。通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークであり、例えば、インターネット、LAN、放送網、衛星通信回線などを含む。
以上、情報処理装置100のハードウェアについて説明した。
[2−4.機能]
次に、情報処理装置100の機能について説明する。
図9は、第2実施形態に係る情報処理装置の機能の一例を示した図である。
図9に示すように、情報処理装置100は、記憶部101、記号化部102、操作列分割部103、及びポイント計算部104を有する。
なお、記憶部101の機能は、上述したRAM906や記憶部920などを用いて実現できる。また、記号化部102、操作列分割部103、及びポイント計算部104の機能は、上述したCPU902などを用いて実現できる。
記憶部101は、複数の手順書101aを記憶する。手順書101aには、それぞれ実行順に複数の操作が記載されている。図2に示した手順書#1、#2は、それぞれ手順書101aの一例である。記号化部102は、図2に示すように、手順書101aに記載された操作を記号で表現する。このとき、記号化部102は、表現のゆらぎなどを除去し、同じ内容の操作を同じ記号で表現する(記号化)。以下、記号A、B、…で表現された操作をそれぞれ操作A、B、…と表記する。
操作列分割部103は、記号化部102により記号化され、操作列で表現された手順書101aを複数の操作列に分割する。そして、操作列分割部103は、分割した複数の操作列をポイント計算部104に入力する。ポイント計算部104は、操作列分割部103から入力された複数の操作列を操作列間の類似度に基づいてクラスタリングする。そして、ポイント計算部104は、クラスタ毎に各操作の出現頻度を計数し、出現頻度に基づいて省略可能性の高さを示すポイントを計算する。
ポイント計算部104は、計算した操作毎のポイントを操作列分割部103に入力する。ポイントの入力を受けた操作列分割部103は、ポイント計算部104から入力されたポイントを利用して複数の手順書101aの操作列から共通操作列を特定し、特定した共通操作列に基づいて手順書101aを複数の操作列に分割する。
(操作列の分割)
ここで、クラスタリングに用いる複数の操作列を生成するために各手順書101aの操作列を分割する方法について、図10を参照しながら、さらに説明する。図10は、第2実施形態に係る操作列の分割方法(操作列の分割)の一例を示した図である。
図10は、手順書#1(操作列ABCDEFGH)、手順書#2(操作列ACEFGI)、手順書#3(操作列ABCEGH)を分割する例を示している。まず、操作列分割部103は、手順書の組毎に共通操作列を特定する。例えば、手順書#1、#2の組について、操作列分割部103は、共通操作列A、C、EFGを特定する。但し、操作列EFGは操作列E、F、Gの組、操作列EF、Gの組、及び操作列E、FGの組に分解できるから、操作列E、F、G、EF、FGも共通操作列である。
手順書#1、#2間で共通操作列A、C、EFGを特定した場合、操作列分割部103は、手順書#1を複数の操作列A、B、C、D、EFG、Hに分解し、手順書#2を複数の操作列A、C、EFG、Iに分割できる。同様に、操作列分割部103は、手順書#2、#3の組、手順書#3、#1の組についても共通操作列を特定し、共通操作列の特定結果に応じて手順書#1、#2、#3を分割する。
図10(B)は、共通操作列の特定結果に応じて手順書#1、#2、#3を分割した結果を示している。図10(B)の中で「A|B」は、操作列ABを操作列Aと操作列Bとに分割したことを意味する。例えば、共通操作列A、C、EFGを用いて分割した手順書#1は、図10(B)の中でA|B|C|D|EFG|Hと表記され、複数の操作列A、B、C、D、EFG、Hに分割されている。操作列B、D、Hは非共通操作列である。
操作列分割部103は、図10(B)のように手順書#1、#2、#3を分割して得た共通操作列及び非共通操作列を、図10(C)に示すように接頭辞毎にまとめる。例えば、接頭辞Aを有する操作列は操作列AB、ABCである。また、接頭辞ABを有する操作列はABCである。操作列ABCは共通操作列であるから、操作列ABCを分割した操作列A、ABはいずれも共通操作列である。
上記の性質を利用し、操作列分割部103は、接頭辞の種類毎に最短の操作列で手順書#1、#2、#3を分割した場合のバランス指標Q(上記の式(3)を参照)を基準に、共通操作列の長さを延長しながら手順書#1、#2、#3の最適な分割方法を探索する。以下、同じ接頭辞を有する操作列のうち、最短の操作列より長い操作列を「延長候補」と表現する場合がある。例えば、操作列AB、ABCは、操作列Aの延長候補である。
(操作列の延長)
図11は、第2実施形態に係る操作列の分割方法(操作列の延長)の一例を示した第1の図である。
図11(A)は、図10(C)に記載した操作列のまとまりを最短の操作列と延長候補とに分けて整理した例である。操作列分割部103は、接頭辞毎に最短の操作列の次に長い延長候補を特定し、特定した延長候補を利用して手順書#1、#2、#3を分割する。
例えば、操作列Aを延長した延長候補ABを利用する場合、操作列分割部103は、図11(B)に示すように、操作列A、AB、B、C、D、E、F、G、H、Iを利用して手順書#1、#2、#3を分割する。そして、操作列分割部103は、分割後の手順書#1、#2、#3の状態に基づいてバランス指標Qを計算する。
同様に、操作列分割部103は、図11(B)から(G)に示すように、延長候補BC、CE、EF、FG、GHをそれぞれ利用して手順書#1、#2、#3を分割した結果に基づいてバランス指標Qを計算する。そして、操作列分割部103は、バランス指標Qが最大となる延長候補を選択する。図11の例では同じ値となるから、操作列分割部103は、辞書順で最初に位置する延長候補ABを選択する。
また、操作列分割部103は、図11(H)に示すように、延長候補を操作列の欄に移動し、操作列Aを接頭辞とする延長候補から操作列ABを削除する。さらに、操作列分割部103は、操作列ABを接頭辞とする延長候補の欄に延長候補ABCを移動する。そして、操作列分割部103は、延長候補ABを共通操作列として採用した場合に衝突する延長候補を削除する。
例えば、図11(B)に示した手順書#1、#2、#3の分割方法において、操作列Bを操作列BCに延長すると、延長候補として既に確定した操作列AB(確定部)が再び分解される。このように確定部を再び分解することが上記の衝突である。このような衝突が生じないように、図11(H)の例では、操作列BCが延長候補から除外されている。
次に、操作列分割部103は、図11(B)の分割方法及び図11(H)の延長候補に基づき、図12に示すように操作列を延長する。図12は、第2実施形態に係る操作列の分割方法(操作列の延長)の一例を示した第2の図である。延長候補の選択方法は図11の例と同じであるが、操作列分割部103は、操作列の延長によってバランス指標Qが改善したかを確認する。バランス指標Qが改善しない場合、操作列分割部103は、操作列を延長せず、手順書#1、#2、#3の分割結果を出力する。
図12の例ではバランス指標Qが改善しているため、操作列分割部103は、操作列Cを延長した延長候補CEを採用する。また、操作列分割部103は、衝突回避のために延長候補EF、EFGを削除する。次に、操作列分割部103は、図12(B)の分割方法及び図12(G)の延長候補に基づき、図13に示すように操作列を延長する。図13は、第2実施形態に係る操作列の分割方法(操作列の延長)の一例を示した第3の図である。延長候補の選択方法は図12の例と同じである。
図13の処理が完了すると延長候補がなくなるため、操作列分割部103は、図13(D)に示すように、手順書#1、#2、#3の分割結果を出力する。つまり、操作列分割部103は、手順書#1を分割した操作列AB、C、DE、FG、Hと、手順書#2を分割した操作列A、CE、FG、Iと、手順書#3を分割した操作列AB、CE、GHとを出力する。これらの操作列はポイント計算部104によるクラスタリングに用いられる。
(ポイントの計算)
次に、図14を参照しながら、操作の省略可能性の高さを示すポイントの計算について説明する。図14は、第2実施形態に係るポイント計算方法の一例を示した図である。
ポイント計算部104は、図14(A)に示すように、操作列分割部103が出力した操作列をクラスタリングする。例えば、ポイント計算部104は、該操作列の集合から2つずつ操作列の組を抽出して該操作列間の類似度を計算し、計算した類似度に基づいて操作列をクラスタに分類する。なお、類似度は、例えば、操作列を表現した記号列間のハミング距離などに基づいて計算されうる。
例えば、図14(A)に示すように、手順書#1、#3の操作列ABがクラスタ#1に分類され(S1)、手順書#2、#3の操作列CEがクラスタ#2に分類され(S2)、手順書#2、#3にある操作列FGがクラスタ#4に分類される(S3)。また、操作列A、ABの類似度から手順書#2の操作列Aがクラスタ#1に分類され(S4)、操作列C、CEの類似度から手順書#1の操作列Cがクラスタ#2に分類される(S5)。
また、手順書#3の操作列GHと手順書#1の操作列Hとの類似度から、これらの操作列GH、Hがクラスタ#5に分類され(S6)、残った操作列DE、Iがそれぞれクラスタ#3、#6に分類される(S7、S8)。このようにして分類された操作列を手順書#1、#2、#3及びクラスタ#1、#2、…、#6にそれぞれ対応付けて整理すると、図14(B)のように表現することができる。
ポイント計算部104は、図14(C)に示すように、各クラスタについて操作毎に出現頻度を計算し、計算した出現頻度に基づいて省略可能性の高さを示すポイントを計算する。例えば、ポイント計算部104は、クラスタ#1に含まれる操作Aの出現頻度を計数する。この場合、クラスタ#1には操作Aが3つ出現しているから、ポイント計算部104は、操作Aの出現頻度を3とする。
また、ポイント計算部104は、クラスタ#1に含まれる操作列の数を計数し、操作列の数に対する出現頻度で与えられるポイントを計算する。この例ではクラスタ#1における操作列の数が3であるから、ポイントは1となる。同様に、ポイント計算部104は、図14(C)に示すように、操作B、C、…、Eのポイントを計算する。また、クラスタ#2、#6の両方に操作Eが出現しているため、ポイント計算部104は、操作列の数が多いクラスタ#2における操作Eのポイントを採用する。操作Gについても同様である。
(ポイントを考慮したSW法及び操作列の延長)
操作列分割部103により計算された操作毎のポイントは、ポイント計算部104に入力され、手順書#1、#2、#3の分割に利用される。ここでは、手順書#1、#2、#3を分割する方法として、通常のSW法を改良し、上記のポイントを利用して、各操作の省略可能性を操作列の連続性に反映させる方法を提案する。
図15は、第2実施形態に係る操作列の分割方法(ポイントを考慮したSW法)の一例を示した図である。図15は、手順書#1(操作列ACEFGI)と手順書#2(操作列ABCDEFGH)から共通操作列を特定する例を示している。説明の都合上、図15には、列番号i(i=0,…,6)、行番号j(j=0,…,8)が付されている。また、セル(枡目)の位置を座標(Nx,Ny)で表現する場合がある。
操作列分割部103は、図15に示すような表を生成し、操作列ACEFGIの各操作と、操作列ABCDEFGHの各操作とが対応するセルに初期値(0)を設定する。また、操作列分割部103は、各操作に対応するポイントに−1をかけた値を表の枠外に設定する。図15の例では、操作Aに対応付けて値−1が設定され、操作Bに対応付けて値−0.6が設定されている。
次に、操作列分割部103は、各セルのスコアを計算し、計算したスコアを表の各セルに記載する。座標(i,j)のセルに記載するスコアV(i,j)は、下記の式(4)で与えられる。但し、i,j≧2であり、aiはi列の操作、bjはj行の操作である。
V(i,j)=max{0,
V(i−1,j−1)+U(ai,bj),
V(i−1,j)+ポイント,
V(i,j−1)+ポイント}
但し、ai=biのときはS(ai,bj)=1、
ai≠bjのときはS(ai,bj)=0とする。
…(4)
操作列分割部103は、スコアが0ではないセルを追跡する。図15には、追跡する順序が矢印で示されている。このとき、操作列分割部103は、V(i−1,j−1)<V(j,i)となった場合に追跡を進めない。例えば、座標(5,7)のセルから右、下、右下方向への矢印が付されない。操作列分割部103は、追跡した一連のセルの中で最大スコアのセルを特定する。異なる始点から追跡した一連のセルが複数ある場合、操作列分割部103は、それぞれ一連のセルの中で最大スコアのセルを特定する。
操作列分割部103は、最大スコアのセルから左上方に向けて、スコアが0になるセルまで逆方向にセルを探索する。例えば、操作列分割部103は、最大スコア1.4のセルから逆方向にセルを探索し、座標(1,1)のセルに達したところで探索を終了する。そして、操作列分割部103は、最大スコアのセルと、探索を終了したスコアが0でないセルとを頂点とする矩形のセルのブロックを特定する。
操作列分割部103は、特定したブロックに対応する2つの操作列を共通操作列として抽出する。図15の例では、2つの座標(1,1)、(2,3)を頂点とするブロックが特定され、このブロックに対応する操作列AC、ABCが共通操作列として抽出される。さらに、2つの座標(3,5)、(5,7)を頂点とするブロックが特定され、このブロックに対応する操作列EFGが共通操作列として抽出される。操作列分割部103は、図15に示すように、抽出した共通操作列を利用して手順書#1、#2を分割する。
図15において、共通操作列として2つの操作列ABC、ACが抽出されたが、操作Bの有無について両者は異なる。しかし、両者の違いは操作Bの省略可能性を考慮した結果である。この結果は、省略可能性の高さを加味した実質的な共通性に基づくと、操作列ABC、ACが共通とみなせることを示している。つまり、この例では、操作Bが省略可能性の高い操作([B]と表記)であると判断される。
操作列分割部103は、手順書#2、#3の組、手順書#3、#1の組についても同様の方法で共通操作列を抽出し、手順書#1、#2、#3を分割する。その分割結果を図16(A)に示した。図16は、第2実施形態に係る操作列の分割方法(ポイントを考慮した操作列の延長)の一例を示した図である。
操作列分割部103は、図16(B)に示すように上記の分割結果から操作列を抽出し、図11から図13に示した方法と同様にして操作列を延長する。このとき、図16(C)に示すように、延長候補となる操作列ABC、ABはA[B]Cに統合される。この操作列の延長により、手順書#1、#2、#3は、図16(D)に示すように複数の共通操作列及び非共通操作列に分割される。
なお、操作列分割部103は、省略可能性の高い操作Bをユーザに提示し、実際に省略可能であるかをユーザに判断させてもよい。ユーザが操作Bを省略可能であると判断し、その判断結果を情報処理装置100に入力した場合、操作列分割部103は、図16(D)の分割結果を出力する。一方、ユーザが操作Bを省略可能ではないと判断し、その判断結果を情報処理装置100に入力した場合、操作列分割部103は、操作Bについて図16(C)に示した延長候補の統合をせずに操作列を延長し、手順書#1、#2、#3の分割結果を出力する。
以上、情報処理装置100の機能について説明した。かかる機能により、操作列間の実質的な共通性に基づいて複数の手順書を分割することが可能になる。その結果、一部操作の省略があっても操作列の内容に応じた適切な共通操作列の抽出が実現でき、操作列の管理や操作の自動化を効率的に行うことが可能になる。
[2−5.処理の流れ]
次に、複数の手順書から共通操作列及び非共通操作列を抽出する際に情報処理装置100が実行する処理の流れについて説明する。以下、手順書の分割に係る処理(分割処理)、操作列の延長に係る処理(延長処理)、ポイントの計算に係る処理(ポイント計算処理)、ポイントに基づく共通操作列の特定に係る処理(操作列の特定処理)について、フロー図を参照しながら順次説明する。
(分割処理)
まず、分割処理について説明する。
図17は、第2実施形態に係る操作列の分割処理の流れを示したフロー図である。なお、分割対象となる複数の手順書は既に記号化されているものとする。
(S111)操作列分割部103は、パラメータpを1に設定する。
(S112)操作列分割部103は、p番目の手順書の操作列を取得する。つまり、操作列分割部103は、p番目の手順書を記憶部101から読み出し、読み出した手順書に記載された全操作を含む操作列を抽出する。
(S113)操作列分割部103は、パラメータqをp+1に設定する。
(S114)操作列分割部103は、q番目の手順書の操作列を取得する。つまり、操作列分割部103は、q番目の手順書を記憶部101から読み出し、読み出した手順書に記載された全操作を含む操作列を抽出する。
(S115)操作列分割部103は、取得した操作列(p番目の手順書の操作列とq番目の手順書の操作列)間における共通操作列と非共通操作列を特定する。つまり、操作列分割部103は、図10に示した方法と同様に、2つの手順書間で共通する操作列を抽出し、抽出した操作列を共通操作列として特定する。また、操作列分割部103は、共通操作列とならない操作列を非共通操作列として特定する。
(S116)操作列分割部103は、共通操作列及び非共通操作列として特定した操作列(図10(C)を参照)を記憶部101に保存する。
(S117)操作列分割部103は、q番目の手順書が最後の手順書であるか否かを判断する。q番目の手順書が最後の手順書である場合、処理はS119へと進む。一方、q番目の手順書が最後の手順書でない場合、処理はS118へと進む。
(S118)操作列分割部103は、パラメータqを1増加させる。S118の処理が完了すると、処理はS114へと進む。
(S119)操作列分割部103は、p+1番目の手順書が最後の手順書であるか否かを判断する。p+1番目の手順書が最後の手順書である場合、図17に示した一連の処理は終了する。一方、p+1番目の手順書が最後の手順書でない場合、処理はS120へと進む。
(S120)操作列分割部103は、パラメータpを1増加させる。S120の処理が完了すると、処理はS112へと進む。
(延長処理)
次に、延長処理について説明する。
図18は、第2実施形態に係る操作列の延長処理の流れを示した第1のフロー図である。図19は、第2実施形態に係る操作列の延長処理の流れを示した第2のフロー図である。図20は、第2実施形態に係る操作列の延長処理の流れを示した第3のフロー図である。図21は、第2実施形態に係る操作列の延長処理の流れを示した第4のフロー図である。
(S131)操作列分割部103は、上述した分割処理において、記憶部101に保存した操作列を読み出し、読み出した操作列を並べたリストL1を生成する。
(S132)操作列分割部103は、リストL1の中で同じ操作列を特定し、特定した同じ操作列をマージ(統合)する。
(S133)操作列分割部103は、リストL1に並んだ操作列を辞書順にソートする。例えば、操作がアルファベットで記載されている場合、操作列分割部103は、アルファベットの順に操作列をソートする。図10(C)の例では、A、AB、ABC、B、BC、C、CE、…の順にリストL1の操作列がソートされる。
(S134)操作列分割部103は、リストL1に記載された各操作列の先頭に位置する操作の種類毎に最短操作列を特定する。例えば、図10(C)のように、先頭の操作A(つまり、Aで表される種類)に対応する操作列A、AB、ABCがある場合、操作列分割部103は、最短操作列として操作列Aを特定する。同様に、先頭の操作Bに対応する操作列B、BCがある場合、操作列分割部103は、最短操作列として操作列Bを特定する。
(S135)操作列分割部103は、最短操作列として特定した操作列のリスト(リストL2)を生成する。S135の処理が完了すると、処理は図19のS136へと進む。
(S136)操作列分割部103は、パラメータpを1に設定する。
(S137)操作列分割部103は、最短操作列を並べたリストL2のp番目に位置する操作列を特定する。ここで、リストL2のp番目の操作列は、上述した分割処理において得られた全ての操作列を並べたリストL1のm番目の操作列であるとする。
(S138)操作列分割部103は、パラメータnをm+1に設定する。
(S139)操作列分割部103は、リストL1にn番目の操作列があるか否かを判定する。m番目の操作列がリストL1の最後に位置する操作列である場合、n番目(つまり、m+1番目)の操作列はないと判定される。リストL1にn番目の操作列がある場合、処理はS140へと進む。一方、リストL1にn番目の操作列がない場合、処理はS143へと進む。
(S140)操作列分割部103は、リストL1のm番目に位置する操作列の接頭辞と、リストL1のn番目に位置する操作列の接頭辞とが同じであるか否かを判定する。例えば、m番目に位置する操作列がA、n番目に位置する操作列がABCである場合、両者は同じ接頭辞Aを有する。この場合は両者の接頭辞が同じであると判定される。両者の接頭辞が同じであると判定された場合、処理はS141へと進む。一方、両者の接頭辞が同じでないと判定された場合、処理はS143へと進む。
(S141)操作列分割部103は、リストL1のm番目に位置する操作列に対応付けて、リストL1のn番目に位置する操作列をリストL3に記録する。つまり、リストL3は、最短操作列であるm番目の操作列と、m番目の操作列を延長したn番目の操作列(延長候補)とを対応付けたリストである(図11(A)などを参照)。
(S142)操作列分割部103は、パラメータnを1増加させる。S142の処理が完了すると、処理はS139へと進む。
(S143)操作列分割部103は、パラメータpを1増加させる。
(S144)操作列分割部103は、リストL2にp番目の操作列があるか否かを判定する。p−1番目の操作列がリストL2の最後に位置する場合、p番目の操作列はないと判定される。p番目の操作列があると判定された場合、処理はS137へと進む。一方、p番目の操作列がないと判定された場合、処理は図20のS145へと進む。
(S145)操作列分割部103は、利用数合計の最大値と、分割数合計の最小値とを計算する。利用数合計の最大値は、図6に示すように各手順書を1つ1つの操作に分割した場合の利用数の合計値である。一方、分割数合計の最小値は、図5に示すように各手順書の分割数が1になるように(つまり、分割しないように)した場合の分割数の合計値である。
(S146)操作列分割部103は、パラメータqを1に設定する。
(S147)操作列分割部103は、リストL2のq番目に位置する操作列が延長可能であるかを判定する。例えば、操作列分割部103は、リストL3を参照し、リストL2のq番目に位置する操作列に対応する延長候補があるか否かを判定する。q番目の操作列が延長可能である場合、処理はS148へとすすむ。一方、q番目の操作列が延長可能でない場合、処理はS152へとすすむ。
(S148)操作列分割部103は、リストL3に基づき、リストL2のq番目に位置する操作列を延長した延長候補を特定する。例えば、操作列分割部103は、リストL2のq番目に位置する操作列をリストL3から抽出し、抽出した操作列に対応する延長候補のうち、最も短い延長候補を特定する。
(S149)操作列分割部103は、特定した延長候補を用いて手順書を分割する。例えば、操作列分割部103は、図11(B)などに示したように、リストL2の操作列に加え、特定した延長候補を利用して複数の手順書を分割する。
(S150)操作列分割部103は、確定部の再分割(衝突)が生じるか否かを判定する。図11の例では、延長候補を特定した後で、衝突が生じる延長候補を図11(H)のリストから削除したが、延長候補を利用して手順書を分割する工程で衝突の有無を判断する仕組みを採用してもよい。図20の処理は、この仕組みを採用している。特定した延長候補を利用することで衝突が生じる場合、処理はS152へとすすむ。一方、特定した延長候補を利用しても衝突が生じない場合、処理はS151へとすすむ。
(S151)操作列分割部103は、特定した延長候補を利用して分割した分割結果に基づいて、上記の式(3)で与えられるバランス指標Qを計算する。
(S152)操作列分割部103は、パラメータqを1増加させる。
(S153)操作列分割部103は、リストL2にq番目の操作列があるか否かを判定する。q−1番目の操作列がリストL2の最後に位置する場合、q番目の操作列はないと判定される。q番目の操作列がある場合、処理はS147へとすすむ。一方、q番目の操作列がない場合、処理はS154へと進む。
(S154)操作列分割部103は、バランス指標Qが最大となる延長候補を特定する。つまり、操作列分割部103は、既に計算したバランス指標Qの最大値を特定し、その最大値の計算に利用した延長候補を特定する。S154の処理が完了すると、処理は、図21のS155へと進む。
(S155)操作列分割部103は、バランス指標Qが改善したか否かを判定する。つまり、操作列分割部103は、特定した延長候補を利用する前のバランス指標Qに比べ、該延長候補を利用した場合のバランス指標Qが改善(増加)したか否かを判定する。バランス指標Qが改善した場合、処理はS156へと進む。一方、バランス指標Qが改善しない場合、処理はS158へと進む。
(S156)操作列分割部103は、特定した延長候補を用いてリストL2、L3を再構築する。つまり、操作列分割部103は、特定した延長候補をリストL2に加え、図11(H)などに示すように、該延長候補とS150で衝突が生じると判定された延長候補とをリストL3から削除する。
(S157)操作列分割部103は、リストL3に操作列があるか否かを判定する。つまり、操作列分割部103は、延長候補が存在するか否かを判定する。リストL3に操作列がある場合、処理は図20のS146へと進む。一方、リストL3に操作列がない場合、処理はS158へと進む。
(S158)操作列分割部103は、リストL2の操作列による手順書の分割結果を出力する。S158の処理が完了すると、図18から図21に示した一連の処理は終了する。なお、分割結果は、ポイント計算部104に入力される。
(ポイント計算処理)
次に、ポイント計算処理について説明する。
図22は、第2実施形態に係るポイント計算処理の流れを示した第1のフロー図である。図23は、第2実施形態に係るポイント計算処理の流れを示した第2のフロー図である。
(S161)ポイント計算部104は、パラメータkを1に設定する。
(S162)ポイント計算部104は、操作列分割部103から入力された分割結果に含まれる複数の操作列(操作列の集合)のうち、k番目の操作列を1つ選択する。
(S163)ポイント計算部104は、操作列の集合から、k番目の操作列とは別の操作列を1つ選択する。
(S164)ポイント計算部104は、選択した2つの操作列間の類似度を計算する。例えば、ポイント計算部104は、操作列を表す記号列を比較してハミング距離を求め、ハミング距離に基づく類似度(例えば、ハミング距離の逆数など)を計算する。また、ポイント計算部104は、計算した類似度を記憶部101に保存する。
(S165)ポイント計算部104は、S164で計算した類似度が、k番目の操作列について現在までの最大の類似度か否かを判定する。つまり、ポイント計算部104は、k番目の操作列について過去に計算した類似度を記憶部101から読み出し、S164で計算した類似度(現在の類似度)が、記憶部101から読み出したいずれの類似度よりも大きい場合に最大の類似度であると判定する。最大の類似度であると判定された場合、処理はS166へと進む。一方、最大の類似度ではないと判定された場合、処理はS167へと進む。
(S166)ポイント計算部104は、計算した類似度及び該類似度の計算に用いた2つの操作列を対応付けてリストL4に記録する。つまり、ポイント計算部104は、クラスタにまとめる操作列の候補をリストL4に記録する。
(S167)ポイント計算部104は、k番目の操作列とは別の操作列を全て選択し終えたか否かを判定する。k番目の操作列とは別の操作列を全て選択し終えた場合、処理はS168へと進む。一方、k番目の操作列とは別の操作列を選択し終えていない場合、処理はS163へと進む。
(S168)ポイント計算部104は、k番目の操作列についてリストL4に記録した類似度の中で最大の類似度(最大類似度)を特定し、最大類似度が閾値TSより大きいか否かを判定する。閾値TSは予め設定される。最大類似度が閾値TSより大きい場合、処理はS169へと進む。一方、最大類似度が閾値TSより大きくない場合、処理は図23のS172へと進む。
(S169)ポイント計算部104は、リストL4に記録した操作列をクラスタにまとめる。つまり、ポイント計算部104は、k番目の操作列に類似する操作列の組により1つのクラスタを生成する。
(S170)ポイント計算部104は、パラメータkを1増加させる。
(S171)ポイント計算部104は、操作列の集合にk番目の操作列があるか否かを判定する。k−1番目の操作列が、操作列の集合における最後の操作列であった場合、k番目の操作列はないと判定される。k番目の操作列がある場合、処理はS162へと進む。一方、k番目の操作列がない場合、処理は図23のS172へと進む。
(S172)ポイント計算部104は、クラスタを1つ選択する。
(S173)ポイント計算部104は、選択したクラスタ内の操作列数を計数する。例えば、図14(B)に示したクラスタ#1内の操作列数は3となる。
(S174)ポイント計算部104は、選択したクラスタ内の操作を1つ選択する。例えば、図14(B)に示したクラスタ#1の場合、2種類の操作A、Bが存在する。この場合、ポイント計算部104は、操作A、Bから1つの操作を選択する。
(S175)ポイント計算部104は、選択した操作の出現頻度を計数する。例えば、図14(B)に示したクラスタ#1の場合、操作Aの出現頻度は3であり、操作Bの出現頻度は2である。
(S176)ポイント計算部104は、計数した出現頻度及び操作列数から、操作の省略可能性の高さを表すポイントを計算する。例えば、ポイントは、図14(C)に示すように、出現頻度を操作列数で割った値により与えられる。類似した操作列が3つある場合、3つの操作列全てに出現する操作は省略可能性が低いと考えられる。一方、1つの操作列にしか出現しない操作は省略可能性が高いと考えられる。この考えによれば、上記のポイントは省略可能性の高さを表しているといえる。
(S177)ポイント計算部104は、クラスタ内の全操作を選択し終えたか否かを判定する。図14(B)に示したクラスタ#1の場合、2種類の操作A、Bがいずれも選択され、それぞれポイントが計算されたならば、クラスタ内の全操作を選択し終えたと判定される。クラスタ内の全操作を選択し終えた場合、処理はS178へと進む。一方、クラスタ内に未選択の操作がある場合、処理はS174へと進む。
(S178)ポイント計算部104は、全てのクラスタを選択し終えたか否かを判定する。全てのクラスタを選択し終えた場合、処理はS179へと進む。一方、未選択のクラスタが存在する場合、処理はS172へと進む。
(S179)ポイント計算部104は、複数のポイントが計算された操作を特定する。つまり、ポイント計算部104は、同じ操作が複数のクラスタ内に存在するか確認し、複数のクラスタに含まれる操作を特定する。図14(B)の例では、操作Gがクラスタ#3、#4に含まれ、操作Eがクラスタ#2、#6に含まれる。この場合、ポイント計算部104は、操作G、Eを特定する。
(S180)ポイント計算部104は、特定した操作に対し、操作列数が大きいクラスタにおけるポイントを対応付ける。図14(B)の例において操作Eを含むクラスタ#2、#6の操作列数はそれぞれ3、1である。この場合、ポイント計算部104は、操作Eに対し、操作列数が大きいクラスタ#2におけるポイントを対応付ける。
なお、図14(B)の例において操作Gを含むクラスタ#3、#4の操作列数はいずれも2である。この場合、ポイント計算部104は、ポイントが1となるクラスタがあるか否かを判定する。この例ではクラスタ#3における操作Gのポイントが1であるから、ポイント計算部104は、クラスタ#3におけるポイントを操作Gに対応付ける。ポイントが1となるクラスタがない場合、ポイント計算部104は、操作列数が同じクラスタのいずれを選択してもよい。
S180の処理が完了すると、図22及び図23に示した一連の処理は終了する。なお、各操作に対応付けられたポイントは操作列分割部103に入力される。
(操作列の特定処理)
次に、操作列の特定処理について説明する。
図24は、第2実施形態に係る操作列の特定処理の流れを示したフロー図である。
(S191)操作列分割部103は、手順書の組(2つの手順書)を選択する。
(S192)操作列分割部103は、操作列特定用の表(図15を参照)を作成する。表のセル数は、各手順書に含まれる操作の数に応じて設定される。
(S193)操作列分割部103は、表に各操作のポイントを設定する。このとき、操作列分割部103は、表の各列に割り当てられる操作について、該操作に対応付けられたポイントに−1をかけた値を表に設定する。
(S194)操作列分割部103は、上記の式(4)に基づいて表のセルに入るスコアを計算する。そして、操作列分割部103は、計算したスコアを表の各セルに記入する。
(S195)操作列分割部103は、図15に示すように、スコアが0ではない連続するセルを追跡する。また、操作列分割部103は、追跡した一連のセルのスコアの中から最大スコアを特定し、最大スコアのセルから左上方に逆追跡して操作列を特定する。このとき、操作列分割部103は、最大スコアのセルと、逆追跡の際にスコアが0となる直前にあるセルとを頂点とする矩形のブロック(図15の太線で囲んだセルのブロック)を特定し、この領域に対応する操作列を手順書毎に特定する。
(S196)操作列分割部103は、手順書の組を選択し終えたか否かを判定する。手順書の組を選択し終えた場合、処理はS197へと進む。一方、未選択の手順書の組がある場合、処理はS191へと進む。
(S197)操作列分割部103は、特定した操作列の集合をリストL1に設定する。
(S198)操作列分割部103は、設定したリストL1に基づき、図18のS132以降、図18から図21に示した一連の処理を実行し、手順書の分割結果を出力する。S198の処理が完了すると、図24に示した一連の処理は終了する。
以上、情報処理装置100が実行する処理の流れについて説明した。かかる処理を実行することにより、操作列間の実質的な共通性に基づいて複数の手順書を分割することが可能になる。その結果、一部操作の省略があっても操作列の内容に応じた適切な共通操作列の抽出が実現でき、操作列の管理や操作の自動化を効率的に行うことが可能になる。
[2−6.変形例]
ここで、操作列の特定処理の変形例について説明する。この変形例は、操作列特定用の表(図15を参照)にポイントを反映させるのではなく、ポイントが小さい操作を手順書から省略し、省略後の手順書を利用して共通操作列を特定する方法を提供する。
図25は、第2実施形態の一変形例に係る操作列の特定処理の流れを示したフロー図である。なお、ポイントは計算済みであるとする。
(S201)操作列分割部103は、操作とポイントの組を1つ選択する。
(S202)操作列分割部103は、ポイントが閾値TPより小さいか否かを判定する。閾値TP(例えば、0.9など)は予め設定される。また、クラスタに含まれる操作列数と出現頻度が同じ操作は省略できないと考えられるため、閾値TPは1未満の値に設定される。
(S203)操作列分割部103は、選択した操作を省略可能リストに記録する。つまり、省略可能リストに記録された操作が手順書から削除される。
(S204)操作列分割部103は、操作とポイントの組を全て選択し終えたか否かを判定する。全ての組を選択し終えた場合、処理はS205へと進む。一方、未選択の組がある場合、処理はS201へと進む。
(S205)操作列分割部103は、省略可能リストの操作を各手順書から削除する。このとき、操作列分割部103は、省略可能リストの操作をユーザに提示し、省略できない操作を指定させてもよい。この場合、操作列分割部103は、指定された操作を省略可能リストから削除し、その操作を手順書から削除しないようにする。
(S206)操作列分割部103は、省略可能な操作が削除された手順書を用いて、図17に示した処理を実行する。
(S207)操作列分割部103は、図18から図21に示した処理を実行する。そして、操作列分割部103は、手順書の分割結果を出力する。S207の処理が完了すると、図25に示した一連の処理は終了する。
以上、変形例について説明した。この変形例の場合も、操作列間の実質的な共通性に基づいて複数の手順書を分割することが可能になる。その結果、一部操作の省略があっても操作列の内容に応じた適切な共通操作列の抽出が実現でき、操作列の管理や操作の自動化を効率的に行うことが可能になる。
以上、第2実施形態について説明した。