(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-20
(45)【発行日】2023-03-01
(54)【発明の名称】情報処理プログラム、情報処理方法、および情報処理装置
(51)【国際特許分類】
G06F 16/215 20190101AFI20230221BHJP
【FI】
G06F16/215
(21)【出願番号】P 2021524613
(86)(22)【出願日】2019-06-06
(86)【国際出願番号】 JP2019022610
(87)【国際公開番号】W WO2020245993
(87)【国際公開日】2020-12-10
【審査請求日】2021-08-12
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】辻 拓人
(72)【発明者】
【氏名】野間 唯
(72)【発明者】
【氏名】宇治橋 善史
(72)【発明者】
【氏名】尾上 浩一
(72)【発明者】
【氏名】坂巻 慶行
【審査官】吉田 誠
(56)【参考文献】
【文献】特開2015-028699(JP,A)
【文献】特開2016-071712(JP,A)
【文献】特表2016-502701(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00 - 16/958
(57)【特許請求の範囲】
【請求項1】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
取得した前記複数の正規表現のそれぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの数に基づいて、前記正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの中から選択した、第1の部分データと第2の部分データとの類似度に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項1または2に記載の情報処理プログラム。
【請求項4】
算出した前記それぞれの正規表現の尤度に基づいて、前記複数の正規表現のいずれかの正規表現を選択し、
選択した前記いずれかの正規表現を利用して、前記データ群を加工して出力する、
処理を前記コンピュータに実行させることを特徴とする請求項1~3のいずれか一つに記載の情報処理プログラム。
【請求項5】
前記取得する処理は、
前記データ群に含まれる1以上のデータと、前記1以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、前記複数の正規表現を生成する、ことを特徴とする請求項1~4のいずれか一つに記載の情報処理プログラム。
【請求項6】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
取得した前記複数の正規表現のそれぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの数に基づいて、前記正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項7】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
取得した前記複数の正規表現のそれぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの数に基づいて、前記正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
制御部を有することを特徴とする情報処理装置。
【請求項8】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
取得した前記複数の正規表現のそれぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの中から選択した、第1の部分データと第2の部分データとの類似度に基づいて、前記正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項9】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
取得した前記複数の正規表現のそれぞれの正規表現について、前記データ群のそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置に基づいて、前記正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【0002】
従来、ユーザが指定した入力内容と出力内容とに基づいて、入力内容をどのように処理すれば出力内容が生成可能かを推測し、入力内容から出力内容を生成可能なプログラムを自動生成するPBE(Programming By Example)と呼ばれる技術がある。この技術は、例えば、ユーザが指定した元データと加工データとに基づいて、元データをどのように処理すれば加工データが生成可能かを推測し、元データを含むデータ群を加工するためのプログラムを自動生成する場合に適用される。
【0003】
先行技術としては、例えば、複数の正規表現の中で、複数の文書データの各々における複数の正規表現の各々に適合するテキスト部分の数が、複数の文書データの各々における所望のテキスト部分の数と一致する度合いの高い正規表現を決定するものがある。また、例えば、入力されたコンテキストから抽出された組織名および電話番号の組み合わせが、予め登録された組織のホワイトリストDB(DataBase)に存在するか否かを検索した結果に基づいて、コンテキストの送信元の信頼度を表示する技術がある。また、例えば、マルウェア解析結果から得られた悪性URL(Uniform Resource Locator)と過去のネットワークアクセスの特徴量を基に、アクセスログから悪性URLと類似するURLを検索する技術がある。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2015-28699号公報
【文献】特開2007-58587号公報
【文献】国際公開第2015/114804号
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、どのような正規表現を用いれば、データ群のそれぞれのデータ上において、ユーザが加工を所望する箇所を正確に特定することができるかを判断することが難しい。結果として、ユーザの意図に沿ってデータ群のそれぞれのデータを加工することができるプログラムを自動生成することが難しい。
【0006】
1つの側面では、本発明は、データ群に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、算出した前記それぞれの正規表現の尤度を出力する情報処理プログラム、情報処理方法、および情報処理装置が提案される。
【発明の効果】
【0008】
一態様によれば、データ群に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることが可能になる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
【
図2】
図2は、情報処理システム200の一例を示す説明図である。
【
図3】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
【
図4】
図4は、クライアント装置201のハードウェア構成例を示すブロック図である。
【
図5】
図5は、情報処理装置100の機能的構成例を示すブロック図である。
【
図6】
図6は、情報処理装置100の具体的な機能的構成例を示すブロック図である。
【
図7】
図7は、情報処理装置100の動作例を示す説明図(その1)である。
【
図8】
図8は、情報処理装置100の動作例を示す説明図(その2)である。
【
図9】
図9は、それぞれの正規表現の成功度を算出する流れを示す説明図である。
【
図10】
図10は、レコード評価値を算出する一例を示す説明図(その1)である。
【
図11】
図11は、レコード評価値を算出する一例を示す説明図(その2)である。
【
図12】
図12は、分割数評価値を算出する具体例を示す説明図である。
【
図13】
図13は、距離評価値を算出する具体例を示す説明図である。
【
図14】
図14は、位置評価値を算出する具体例を示す説明図である。
【
図15】
図15は、レコード評価値を算出し、成功度を算出する具体例を示す説明図である。
【
図16】
図16は、他の正規表現の成功度を算出する具体例を示す説明図(その1)である。
【
図17】
図17は、他の正規表現の成功度を算出する具体例を示す説明図(その2)である。
【
図18】
図18は、他の正規表現の成功度を算出する具体例を示す説明図(その3)である。
【
図19】
図19は、クライアント装置201における表示画面例を示す説明図である。
【
図20】
図20は、受付処理手順の一例を示すフローチャートである。
【
図21】
図21は、推定処理手順の一例を示すフローチャートである。
【
図22】
図22は、成功度算出処理手順の一例を示すフローチャートである。
【
図23】
図23は、第1算出処理手順の一例を示すフローチャートである。
【
図24】
図24は、第2算出処理手順の一例を示すフローチャートである。
【
図25】
図25は、第3算出処理手順の一例を示すフローチャートである。
【
図26】
図26は、加工処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。
【0011】
(実施の形態にかかる情報処理方法の一実施例)
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置100は、ユーザの意図に沿ってデータ群のそれぞれのデータを加工可能にすることを支援することができるコンピュータである。
【0012】
データ群は、種類が同じ複数のデータの集合である。データ群は、例えば、形式が同じ複数のデータの集合である。データは、例えば、表形式である。データの加工は、例えば、データ上の一部の抽出、データ上の一部の変換、または、データの分割などである。
【0013】
ここで、データ群を加工するためのプログラムを自動生成するための手法が考えられる。かかる手法は、例えば、ユーザが指定した元データと加工データとに基づいて、元データをどのように処理すれば加工データが生成可能かを推測し、元データを含むデータ群を加工するためのプログラムを自動生成する。かかる手法は、具体的には、元データを加工データに加工する場合の、元データ上の加工された箇所を特定可能である正規表現を推定し、推定した正規表現を利用してプログラムを自動生成する。正規表現を推定する技術は、例えば、下記参考文献1を参照することができる。
【0014】
参考文献1:Bartoli, Alberto, et al. “Inference of regular expressions for text extraction from examples.” IEEE Transactions on Knowledge and Data Engineering 28.5 (2016): 1217-1230.
【0015】
しかしながら、かかる手法では、元データ上の加工された箇所を特定可能である正規表現が複数存在する場合があり、いずれの正規表現が、ユーザの意図に沿った正しい正規表現であるかを判断することができない。かかる手法では、例えば、どのような正規表現を用いれば、データ群のそれぞれのデータ上において、ユーザが加工を所望する箇所を正確に特定することができるかを判断することができない。結果として、ユーザの意図に沿ってデータ群のそれぞれのデータを加工することができるプログラムを自動生成することができない。
【0016】
そこで、本実施の形態では、データ群のそれぞれのデータ上の、複数の正規表現のそれぞれの正規表現に対応する箇所に関して現れる規則性に基づいて、複数の正規表現のそれぞれの正規表現の尤度を算出することができる情報処理方法について説明する。この情報処理方法によれば、それぞれの正規表現の尤度を出力し、データ群に対する加工に適した正規表現を判断可能にすることができる。
【0017】
図1において、(1-1)情報処理装置100は、複数の正規表現を取得する。複数の正規表現は、データ群110のそれぞれのデータ上から加工する箇所を探索することに利用可能である。複数の正規表現は、例えば、データ群110に含まれるデータと、当該データの加工例を示すデータとに基づき生成される。
【0018】
図1の例では、複数の正規表現は、データ群110に含まれるユーザが指定したデータ集合111と、データ集合111のそれぞれのデータの加工例を含むデータ集合121とに基づき生成される。データ集合121は、データ集合111のそれぞれのデータから、「8/1」や「4/3」を抽出する加工例を含む。
【0019】
このため、複数の正規表現は、具体的には、「8/1」や「4/3」などを特定可能である正規表現「¥d++/¥d」、「¥d/¥d」、「¥d/¥d++」、「¥d++/¥d++」が考えられる。¥dは、数字1文字を示す。¥d++は、数字n文字を示す。情報処理装置100は、具体的には、複数の正規表現「¥d++/¥d」、「¥d/¥d」、「¥d/¥d++」、「¥d++/¥d++」を取得する。
【0020】
(1-2)情報処理装置100は、データ群110のそれぞれのデータ上の、取得した複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、それぞれの正規表現の尤度を算出する。尤度は、正規表現をデータ群110に対する加工に利用する尤もらしさを示す指標値である。尤度は、例えば、データ群110の加工にあたり、どの程度ユーザの意図に沿って、加工する箇所を特定することができるかを示す指標値である。
【0021】
ここで、データ群110は、種類が同じ複数のデータの集合である。データ群110は、例えば、形式が同じ複数のデータの集合である。また、ユーザは、データ群110のそれぞれのデータを規則的に加工することを意図していると考えられる。従って、正規表現が、ユーザの意図に沿って、加工する箇所を特定可能であれば、データ群110のそれぞれのデータ上の、当該正規表現に対応する箇所にも、規則性が現れると考えられる。
【0022】
規則性は、例えば、それぞれの正規表現について、データ群110のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、データ群110のそれぞれのデータから分割した部分データの数に関して現れることが考えられる。規則性は、例えば、それぞれの正規表現について、データ群110のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置に関して現れることが考えられる。
【0023】
規則性は、例えば、それぞれの正規表現について、データ群110のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、異なる2つのデータから分割した部分データ同士の類似度に関して現れることが考えられる。規則性は、それぞれの正規表現について、データ群110のそれぞれのデータ上の、当該正規表現に対応する箇所の数に関して現れることが考えられる。
【0024】
このため、情報処理装置100は、かかる規則性を利用して、それぞれの正規表現の尤度を算出する。
図1の例では、情報処理装置100は、複数の正規表現「¥d++/¥d」、「¥d/¥d」、「¥d/¥d++」、「¥d++/¥d++」のそれぞれの正規表現の尤度を算出する。情報処理装置100が、それぞれの尤度を算出する具体例については、例えば、
図7~
図18を用いて後述する。
【0025】
(1-3)情報処理装置100は、算出したそれぞれの正規表現の尤度を出力する。情報処理装置100は、例えば、複数の正規表現「¥d++/¥d」、「¥d/¥d」、「¥d/¥d++」、「¥d++/¥d++」のそれぞれの尤度を、記憶部に記憶する。
【0026】
これにより、情報処理装置100は、データ群110に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることができる。そして、情報処理装置100は、いずれかの正規表現を利用して、ユーザの意図に沿ってデータ群110を加工することができる。また、情報処理装置100は、いずれかの正規表現を利用して、ユーザの意図に沿ってデータ群110を加工することができるプログラムを生成してもよい。
【0027】
ここで、情報処理装置100が、複数の正規表現のそれぞれの正規表現の尤度に基づいて、データ群110を加工するプログラムを自動生成する場合があってもよい。また、情報処理装置100が、複数の正規表現のそれぞれの正規表現の尤度を、情報処理装置100とは異なる装置に送信し、データ群110を加工するプログラムを自動生成させる場合があってもよい。
【0028】
(情報処理システム200の一例)
次に、
図2を用いて、
図1に示した情報処理装置100を適用した、情報処理システム200の一例について説明する。
【0029】
図2は、情報処理システム200の一例を示す説明図である。
図2において、情報処理システム200は、情報処理装置100と、1以上のクライアント装置201とを含む。
【0030】
情報処理システム200において、情報処理装置100とクライアント装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
【0031】
情報処理装置100は、データ群を記憶する。データ群は、例えば、情報処理システム200のユーザによってクライアント装置201を介して情報処理装置100に入力される。以下の説明では、情報処理システム200のユーザを、単に「ユーザ」と表記する場合がある。データ群は、例えば、予め情報処理装置100に記憶されていてもよい。
【0032】
情報処理装置100は、複数の正規表現を記憶する。情報処理装置100は、例えば、データ群に含まれる1以上のデータと、1以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、データ群の加工に利用可能である複数の正規表現を生成して記憶する。1以上のデータは、例えば、ユーザによってクライアント装置201を介して指定される。加工例を示すデータは、例えば、ユーザによってクライアント装置201を介して情報処理装置100に入力される。以下の説明では、加工例を示すデータを「加工データ」と表記する場合がある。
【0033】
情報処理装置100は、複数の正規表現のそれぞれの正規表現の尤度を算出する。情報処理装置100は、複数の正規表現のそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を利用して、データ群を加工する。また、情報処理装置100は、複数の正規表現のそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を利用して、データ群を加工するプログラムを生成してもよい。
【0034】
情報処理装置100は、複数の正規表現のそれぞれの正規表現の尤度を、クライアント装置201に表示させ、ユーザに、プログラムの生成に利用する正規表現を選択させてもよい。情報処理装置100は、例えば、サーバやPC(Personal Computer)などである。
【0035】
クライアント装置201は、情報処理装置100と通信可能なコンピュータである。クライアント装置201は、ユーザの操作入力に基づき、データ群を情報処理装置100に送信する。クライアント装置201は、ユーザの操作入力に基づき、データ群に含まれる1以上のデータの指定を受け付け、データ群に含まれる1以上のデータが指定されたことを、情報処理装置100に送信する。クライアント装置は、データ群に含まれる1以上のデータの入力を受け付けることを、データ群に含まれる1以上のデータの指定を受け付けることとして扱ってもよい。クライアント装置201は、指定の1以上のデータのそれぞれのデータの加工例を示すデータを、情報処理装置100に送信する。クライアント装置201は、例えば、PC、タブレット端末、または、スマートフォンなどである。
【0036】
これにより、情報処理システム200は、ユーザに、データ群を加工するプログラムを生成するサービスを提供する。ユーザは、クライアント装置201を介して、情報処理装置100に、データ群を取得させ、データ群に含まれる1以上のデータのそれぞれのデータの加工例を示すデータを取得させれば、データ群を加工するプログラムを取得することができる。また、ユーザは、複数の正規表現を把握し、いずれの正規表現がデータ群の加工に適するかを把握することができる。
【0037】
ここでは、情報処理装置100と、クライアント装置201とが別々の装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、クライアント装置201としても動作可能な場合があってもよい。この場合、情報処理システム200は、クライアント装置201を含まなくてもよい。
【0038】
(情報処理装置100のハードウェア構成例)
次に、
図3を用いて、情報処理装置100のハードウェア構成例について説明する。
【0039】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
図3において、情報処理装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
【0040】
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
【0041】
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
【0042】
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
【0043】
情報処理装置100は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
【0044】
(クライアント装置201のハードウェア構成例)
次に、
図4を用いて、
図2に示した情報処理システム200に含まれるクライアント装置201のハードウェア構成例について説明する。
【0045】
図4は、クライアント装置201のハードウェア構成例を示すブロック図である。
図4において、クライアント装置201は、CPU401と、メモリ402と、ネットワークI/F403と、記録媒体I/F404と、記録媒体405と、ディスプレイ406と、入力装置407とを有する。また、各構成部は、バス400によってそれぞれ接続される。
【0046】
ここで、CPU401は、クライアント装置201の全体の制御を司る。メモリ402は、例えば、ROM、RAMおよびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることで、コーディングされている処理をCPU401に実行させる。
【0047】
ネットワークI/F403は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F403は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F403は、例えば、モデムやLANアダプタなどである。
【0048】
記録媒体I/F404は、CPU401の制御に従って記録媒体405に対するデータのリード/ライトを制御する。記録媒体I/F404は、例えば、ディスクドライブ、SSD、USBポートなどである。記録媒体405は、記録媒体I/F404の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体405は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体405は、クライアント装置201から着脱可能であってもよい。
【0049】
ディスプレイ406は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ406は、例えば、CRT(Cathode Ray Tube)、液晶ディスプレイ、有機EL(Electroluminescence)ディスプレイなどである。入力装置407は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置407は、キーボードやマウスなどであってもよく、また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【0050】
クライアント装置201は、上述した構成部のほか、例えば、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、クライアント装置201は、記録媒体I/F404や記録媒体405を複数有していてもよい。また、クライアント装置201は、記録媒体I/F404や記録媒体405を有していなくてもよい。
【0051】
(情報処理装置100の機能的構成例)
次に、
図5を用いて、情報処理装置100の機能的構成例について説明する。
【0052】
図5は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部500と、取得部501と、生成部502と、算出部503と、選択部504と、加工部505と、出力部506とを含む。
【0053】
記憶部500は、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部500が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部500が、情報処理装置100とは異なる装置に含まれ、記憶部500の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0054】
取得部501~出力部506は、制御部の一例として機能する。取得部501~出力部506は、具体的には、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
【0055】
記憶部500は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部500は、例えば、データ群を記憶する。データ群は、種類が同じ複数のデータの集合である。データ群は、例えば、形式が同じ複数のデータの集合である。データは、例えば、表形式である。データ群は、例えば、取得部501に取得されたことに応じて、記憶部500に記憶される。
【0056】
記憶部500は、例えば、複数の正規表現を記憶する。複数の正規表現は、データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である。複数の正規表現は、例えば、データ群に含まれるデータと、当該データの加工例を示す加工データとに基づき生成される。複数の正規表現は、具体的には、データ群に含まれる1以上のデータと、当該1以上のデータのそれぞれのデータの加工例を示す加工データとに基づいて生成される。複数の正規表現は、例えば、取得部501に取得され、または、生成部502に生成されたことに応じて、記憶部500に記憶される。
【0057】
記憶部500は、例えば、複数の正規表現を生成する際に用いられる加工データを記憶する。記憶部500は、具体的には、データ群に含まれるデータに対応付けて、当該データの加工例を示す加工データを記憶する。記憶部500は、データ群に含まれる1以上のデータのそれぞれのデータに対応付けて、当該データの加工例を示す加工データを記憶する。加工データは、例えば、取得部501に取得されたことに応じて、記憶部500に記憶される。
【0058】
取得部501は、各機能部の処理に用いられる各種情報を取得する。取得部501は、取得した各種情報を、記憶部500に記憶し、または、各機能部に出力する。また、取得部501は、記憶部500に記憶しておいた各種情報を、各機能部に出力してもよい。取得部501は、例えば、情報処理装置100の利用者の操作入力に基づき、各種情報を取得する。取得部501は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0059】
取得部501は、データ群を取得する。取得部501は、例えば、データ群を、クライアント装置201から受信する。取得部501は、データ群に含まれるデータの指定を受け付ける。取得部501は、出力部506がデータ群をクライアント装置201に表示させたことに応じて、ユーザからの、データ群に含まれるデータの指定を、クライアント装置201を介して受け付ける。取得部501は、例えば、データ群に含まれる1以上のデータの指定を受け付ける。取得部501は、例えば、データ群に含まれる1以上のデータを、クライアント装置201から受信することにより、指定を受け付けてもよい。
【0060】
取得部501は、指定されたデータの加工例を示す加工データを取得する。取得部501は、例えば、データ群に含まれる1以上のデータのそれぞれのデータに対応付けて、当該データの加工例を示す加工データを、クライアント装置201から受信する。取得部501は、情報処理装置100において複数の正規表現を生成しない場合には、複数の正規表現を取得してもよい。取得部501は、例えば、複数の正規表現を、情報処理装置100とは異なる装置から受信する。この場合には、情報処理装置100は、生成部502を含まなくてもよい。
【0061】
生成部502は、複数の正規表現を生成する。生成部502は、データ群に含まれる指定されたデータと、指定されたデータの加工例を示す加工データとに基づいて、複数の正規表現を生成する。生成部502は、例えば、データ群に含まれる指定された1以上のデータと、指定された1以上のデータのそれぞれのデータの加工例を示す加工データとに基づいて、複数の正規表現を生成する。
【0062】
生成部502は、具体的には、指定されたデータと、指定されたデータの加工例を示す加工データとに基づいて、指定されたデータ上の加工する箇所を特定し、指定されたデータ上の加工する箇所を特定可能にする複数の正規表現を生成する。これにより、生成部502は、データ群の加工に利用する候補となる複数の正規表現を生成することができ、算出部503に、それぞれの正規表現の尤度を算出させることができる。
【0063】
また、生成部502は、加工内容を生成してもよい。加工内容は、正規表現を利用して探索された、データ群のそれぞれのデータ上の加工する箇所を、どのように加工するかを示す。生成部502は、データ群に含まれる指定されたデータと、指定されたデータの加工例を示す加工データとに基づいて、加工内容を生成する。生成部502は、例えば、データ群に含まれる指定された1以上のデータと、指定された1以上のデータのそれぞれのデータの加工例を示す加工データとに基づいて、加工内容を生成する。これにより、生成部502は、加工部505に加工内容を参照させることができる。
【0064】
算出部503は、それぞれの正規表現の尤度を算出する。尤度は、正規表現をデータ群に対する加工に利用する尤もらしさを示す指標値である。尤度は、例えば、データ群の加工にあたり、どの程度ユーザの意図に沿って、加工する箇所を特定することができるかを示す指標値である。尤度は、データ群のそれぞれのデータ上の、正規表現に対応する箇所について、所定の規則性が現れるほど、値が大きくなり、当該正規表現が、ユーザの意図に沿って、データ群のそれぞれのデータ上から、加工する箇所を特定可能であることを意味する。尤度は、具体的には、
図7~
図18に後述する成功度である。
【0065】
算出部503は、取得した複数の正規表現のそれぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所に基づいて、当該正規表現の尤度を算出する。算出部503は、例えば、それぞれの正規表現について、データ群のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、データ群のそれぞれのデータから分割した部分データの数に基づいて、当該正規表現の尤度を算出する。
【0066】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、データ群のそれぞれのデータから分割した部分データの数は、同じ数になる傾向があると考えられる。
【0067】
このため、算出部503は、具体的には、それぞれの正規表現について、データ群のそれぞれのデータから、当該正規表現に対応する箇所を基準に分割した部分データの数についての分散が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部503は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部504に参照させることができる。
【0068】
ここで、例えば、正規表現は、指定された1以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された1以上のデータのそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、指定された1以上のデータのそれぞれのデータから分割した部分データの数は、ユーザの意図を表す基準となりうる。
【0069】
従って、算出部503は、具体的には、それぞれの正規表現について、1以上のデータのそれぞれのデータから分割した部分データの数と、データ群に含まれる1以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの数とを比較する。そして、算出部503は、比較した結果に基づいて、それぞれの正規表現の尤度を算出する。
【0070】
算出部503は、より具体的には、それぞれの正規表現について、1以上のデータのそれぞれのデータから分割した部分データの数と、データ群に含まれる1以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの数との差分を算出する。そして、算出部503は、それぞれの正規表現について、算出した差分が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【0071】
算出部503は、より具体的には、それぞれの正規表現について、1以上のデータのそれぞれのデータから分割した部分データの数と、残余のデータのそれぞれのデータから分割した部分データの数との差分絶対値を算出してもよい。そして、算出部503は、それぞれの正規表現について、算出した差分絶対値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【0072】
また、算出部503は、より具体的には、それぞれの正規表現について、残余のデータのそれぞれのデータから分割した部分データの数の、1以上のデータのそれぞれのデータから分割した部分データの数との差分絶対値の統計値を算出してもよい。統計値は、最小値、最大値、平均値、最頻値などである。そして、算出部503は、それぞれの正規表現について、算出した差分絶対値の統計値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部503は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部504に参照させることができる。
【0073】
算出部503は、それぞれの正規表現について、データ群のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、異なる2つのデータから分割した部分データ同士の類似度に基づいて、当該正規表現の尤度を算出する。算出部503は、例えば、それぞれの正規表現について、データ群のそれぞれのデータから当該正規表現に対応する箇所を基準に分割した部分データの中から選択した、第1の部分データと第2の部分データとの類似度に基づいて、当該正規表現の尤度を算出する。
【0074】
第1の部分データの位置と、第2の部分データの位置とは、例えば、対応関係があることが好ましい。対応関係は、例えば、先頭から何番目の部分データであるかが対応することを意味する。対応関係は、具体的には、正規表現に対応する箇所を基準にした、相対的な位置が共通することを意味する。類似度は、第1の部分データと第2の部分データとの編集距離によって表現される。
【0075】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、異なる2つのデータから当該正規表現に対応する箇所を基準に分割した部分データ同士の類似度は、大きくなる傾向があると考えられる。
【0076】
このため、算出部503は、具体的には、それぞれの正規表現について、異なる2つのデータから当該正規表現に対応する箇所を基準に分割した部分データ同士の類似度が大きいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部503は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部504に参照させることができる。
【0077】
ここで、例えば、正規表現は、指定された1以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された1以上のデータのそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、指定された1以上のデータのそれぞれのデータから分割した部分データは、ユーザの意図を表す基準となりうる。
【0078】
従って、算出部503は、具体的には、それぞれの正規表現について、指定された1以上のデータのそれぞれのデータから分割した部分データの中から、第1の部分データを選択する。算出部503は、それぞれの正規表現について、データ群に含まれる1以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの中から、第1の部分データに対応する位置に存在する第2の部分データを選択する。算出部503は、それぞれの正規表現について、選択した第1の部分データと第2の部分データとの類似度に基づいて、正規表現の尤度を算出する。
【0079】
算出部503は、より具体的には、それぞれの正規表現について、選択した第1の部分データと第2の部分データとの類似度が大きいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【0080】
また、算出部503は、より具体的には、それぞれの正規表現について、第2の部分データを複数選択し、また、第2の部分データごとに対応する第1の部分データを1以上選択する場合があってもよい。この場合、算出部503は、それぞれの正規表現について、選択した第2の部分データごとに、第2の部分データに対応する第1の部分データのそれぞれとの類似度を算出し、類似度の統計値を算出する。統計値は、最小値、最大値、平均値、最頻値などである。そして、算出部503は、それぞれの正規表現について、算出した類似度の統計値が大きいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部503は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部504に参照させることができる。
【0081】
算出部503は、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置に基づいて、当該正規表現の尤度を算出する。位置は、例えば、正規表現に対応する箇所の先頭が、データ上の何番目の文字であるかを示す。
【0082】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置は、同じ位置になる傾向があると考えられる。
【0083】
このため、算出部503は、具体的には、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置の分散が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部503は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部504に参照させることができる。
【0084】
ここで、例えば、正規表現は、指定された1以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された1以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置は、ユーザの意図を表す基準となりうる。
【0085】
従って、算出部503は、具体的には、それぞれの正規表現について、1以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置を特定する。算出部503は、それぞれの正規表現について、データ群に含まれる1以上のデータを除いた残余のデータのそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置を特定する。算出部503は、それぞれの正規表現について、特定した位置同士を比較した結果に基づいて、当該正規表現の尤度を算出する。
【0086】
算出部503は、より具体的には、それぞれの正規表現について、特定した位置同士の差分を算出する。そして、算出部503は、それぞれの正規表現について、算出した差分が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【0087】
算出部503は、より具体的には、それぞれの正規表現について、特定した位置同士の差分絶対値を算出してもよい。そして、算出部503は、それぞれの正規表現について、算出した差分絶対値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【0088】
また、算出部503は、より具体的には、それぞれの正規表現について、残余のデータのそれぞれのデータ上から特定した位置の、1以上のデータのそれぞれのデータ上から特定した位置との差分絶対値の統計値を算出してもよい。統計値は、最小値、最大値、平均値、最頻値などである。そして、算出部503は、それぞれの正規表現について、算出した差分絶対値の統計値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部503は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部504に参照させることができる。
【0089】
算出部503は、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所の数に基づいて、当該正規表現の尤度を算出する。
【0090】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所の数は、同じ数になる傾向があると考えられる。
【0091】
このため、算出部503は、具体的には、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所の数の分散が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部503は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部504に参照させることができる。
【0092】
ここで、例えば、正規表現は、指定された1以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された1以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所の数は、ユーザの意図を表す基準となりうる。
【0093】
従って、算出部503は、具体的には、それぞれの正規表現について、1以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所の数を算出する。算出部503は、それぞれの正規表現について、データ群に含まれる1以上のデータを除いた残余のデータのそれぞれのデータ上の、当該正規表現に対応する箇所の数を算出する。算出部503は、それぞれの正規表現について、1以上のデータのそれぞれのデータについて算出した数と、残余のデータのそれぞれのデータについて算出した数との差分に基づいて、当該正規表現の尤度を算出する。
【0094】
算出部503は、より具体的には、それぞれの正規表現について、差分が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部503は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部504に参照させることができる。
【0095】
選択部504は、複数の正規表現のいずれかの正規表現を選択する。選択部504は、例えば、算出したそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を選択する。選択部504は、具体的には、尤度が最も大きい正規表現を選択する。選択部504は、具体的には、尤度が閾値以上の1以上の正規表現のいずれかの正規表現を選択してもよい。選択部504は、具体的には、尤度が大きい方から所定の順位までの1以上の正規表現を選択してもよい。これにより、選択部504は、ユーザの意図に沿ってデータ群を加工可能にすることができると判断される正規表現を、加工部505に出力することができる。このため、選択部504は、加工部505が、ユーザの意図に沿ってデータ群を加工する確率の向上を図ることができる。
【0096】
選択部504は、複数の正規表現のいずれかの正規表現の選択を受け付けてもよい。選択部504は、例えば、表示部がそれぞれの正規表現の尤度をクライアント装置201に表示させたことに応じて、ユーザからの、いずれかの正規表現の選択を、クライアント装置201を介して受け付ける。これにより、選択部504は、ユーザの意図に沿ってデータ群を加工可能にすることができると判断される正規表現を、加工部505に出力することができる。このため、選択部504は、加工部505が、ユーザの意図に沿ってデータ群を加工する確率の向上を図ることができる。
【0097】
加工部505は、データ群を加工する。加工部505は、選択したいずれかの正規表現を利用して、データ群を加工する。加工部505は、例えば、選択したいずれかの正規表現と、生成部502が生成した加工内容とに基づいて、データ群を加工する。これにより、加工部505は、データ群を加工することができ、ユーザが人手でデータ群を加工する場合に比べて、ユーザの作業量の低減化を図ることができる。
【0098】
加工部505は、データ群を加工するプログラムを生成してもよい。加工部505は、選択したいずれかの正規表現を利用して、データ群を加工するプログラムを生成する。加工部505は、例えば、選択したいずれかの正規表現と、生成部502が生成した加工内容とに基づいて、データ群を加工するプログラムを生成する。これにより、加工部505は、データ群を加工するプログラムを、ユーザに提供可能にすることができる。
【0099】
出力部506は、各種情報を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。出力部506は、例えば、データ群を出力する。出力部506は、具体的には、データ群を、クライアント装置201に送信して表示させる。これにより、出力部506は、データ群をユーザに参照させ、ユーザが、加工データを作成しやすくすることができる。
【0100】
出力部506は、いずれかの機能部の処理結果を出力する。これにより、出力部506は、各機能部の処理結果を、情報処理システム200のユーザに通知可能にすることができ、情報処理システム200の利便性の向上を図ることができる。
【0101】
出力部506は、算出したそれぞれの正規表現の尤度を出力する。出力部506は、例えば、それぞれの正規表現に、当該正規表現の尤度を対応付けて、クライアント装置201に送信して表示させる。これにより、出力部506は、それぞれの正規表現の尤度をユーザに参照させ、ユーザが、データ群の加工に利用する正規表現を選択しやすくすることができる。
【0102】
出力部506は、データ群を加工した結果を出力する。出力部506は、例えば、データ群を加工した結果を、クライアント装置201に送信して表示させる。これにより、出力部506は、データ群を加工した結果を、ユーザに参照させることができる。
【0103】
出力部506は、データ群を加工するプログラムを出力してもよい。出力部506は、データ群を加工するプログラムを、クライアント装置201に送信する。これにより、出力部506は、データ群を加工するプログラムを、ユーザが利用可能にすることができる。そして、出力部506は、ユーザが、データ群を加工する際にかかる作業量の低減化を図ることができる。また、出力部506は、ユーザが、データ群と同種の別のデータ群を加工する際に、プログラムを流用可能にすることができ、ユーザの作業量の低減化を図ることができる。
【0104】
(情報処理装置100の具体的な機能的構成例)
次に、
図6を用いて、情報処理装置100の具体的な機能的構成例について説明する。
【0105】
図6は、情報処理装置100の具体的な機能的構成例を示すブロック図である。情報処理装置100は、元データ表示部610と、ユーザ入力部620と、正規表現推定部630と、元データ加工部640とを含む。正規表現推定部630は、候補推定部631と、成功度算出部632と、正規表現選択部633とを含む。
【0106】
元データ表示部610~元データ加工部640は、例えば、
図5に示した取得部501~出力部506を実現する。元データ表示部610~元データ加工部640は、具体的には、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
【0107】
元データ表示部610は、元データ群601を読み込み、クライアント装置201に表示させる。ユーザ入力部620は、クライアント装置201から、元データ群601のいずれかの元データの指定と、指定された元データを加工した加工例を示す加工データの入力とを受け付け、推定指示を受け付ける。ユーザ入力部620は、推定指示に応じて正規表現推定部630の実行フラグを有効に設定し、正規表現推定部630に、指定された元データと、入力された加工データとを出力し、正規表現推定部630に、複数の正規表現を生成させる。
【0108】
正規表現推定部630は、実行フラグが有効である場合、指定された元データと、入力された加工データとを読み込み、複数の正規表現を生成する。候補推定部631は、指定された元データと、入力された加工データとに基づいて、元データ群601の加工に利用する候補となる複数の正規表現を推定し、成功度算出部632に出力する。成功度算出部632は、元データ群601に基づいて、複数の正規表現のそれぞれの正規表現の成功度を算出し、正規表現選択部633に出力する。正規表現選択部633は、それぞれの正規表現の成功度に基づいて、候補となる複数の正規表現のいずれかの正規表現を選択し、元データ加工部640に出力し、元データ加工部640に元データ群601を加工させる。
【0109】
元データ加工部640は、正規表現を利用して、元データ群601を加工する。元データ加工部640は、元データ群601を加工した加工後データ群602を出力する。
【0110】
(情報処理装置100の動作例)
次に、
図7および
図8を用いて、情報処理装置100の動作例について説明する。
【0111】
図7および
図8は、情報処理装置100の動作例を示す説明図である。
図7において、情報処理装置100は、元データ群を受け付ける。元データ群は、例えば、元データ710を含む。情報処理装置100は、ユーザが作成した元データ710に対応する加工データ720を受け付ける。
【0112】
以下の説明では、加工データ720が存在する元データ710を「ラベルありの元データ710」と表記する場合がある。また、元データ群は、元データ730を含む。
図7の例では、元データ730に対応する加工データは、存在しない。以下の説明では、加工データが存在しない元データ730を「ラベルなしの元データ730」と表記する場合がある。
【0113】
情報処理装置100は、符号701に示すように、元データ710と加工データ720とに基づいて、元データ群の加工に利用する候補となる複数の正規表現を生成する。複数の正規表現は、例えば、表740に示される正規表現である。
【0114】
情報処理装置100は、符号702に示すように、元データ群に基づいて、複数の正規表現のそれぞれの正規表現の成功度を算出する。成功度は、ユーザの意図に沿った加工が行われる確率が高いと判断されるほど、値が大きくなる。それぞれの正規表現の成功度は、例えば、表750に示される成功度である。
【0115】
情報処理装置100は、符号703に示すように、それぞれの正規表現の成功度に基づいて、複数の正規表現のいずれかの正規表現を、データ群の加工に利用する正規表現に選択する。情報処理装置100は、例えば、最も成功度が大きい正規表現「¥d++/¥d++」を選択する。次に、
図8の説明に移行する。
【0116】
図8において、情報処理装置100は、選択した最も成功度が大きい正規表現「¥d++/¥d++」を利用して、ラベルなしの元データ730を加工する。これにより、情報処理装置100は、ラベルありの元データ710を加工データ720に加工する際と同様の加工内容で、ラベルなしの元データ730を加工することができる。情報処理装置100は、例えば、ラベルなしの元データ730から、「9/3」、「1/24」、「12/14」などを抽出する加工を行うことができる。
【0117】
(それぞれの正規表現の成功度を算出する流れ)
次に、
図9を用いて、それぞれの正規表現の成功度を算出する流れについて説明する。
【0118】
図9は、それぞれの正規表現の成功度を算出する流れを示す説明図である。
図9の例では、情報処理装置100が、正規表現「¥d/¥d」の成功度を算出する場合について説明する。
図9において、情報処理装置100は、元データ群900を記憶する。
【0119】
元データ群900は、元データ910,920,930,940,950を含む。元データ910,920は、ラベルありである。元データ930,940,950は、ラベルなしである。
【0120】
情報処理装置100は、元データ910,920,930,940,950を、正規表現「¥d/¥d」に対応する箇所を基準に分割する。元データ910は、例えば、部分データ911,912に分割される。元データ920は、例えば、部分データ921,922に分割される。元データ930は、例えば、部分データ931,932に分割される。元データ940は、例えば、部分データ941,942に分割される。元データ950は、例えば、部分データ951,952,953に分割される。
【0121】
情報処理装置100は、分割結果に基づいて、表960に示すように、それぞれのラベルなしの元データ930,940,950について、レコード評価値「0」、「2」、「6」を算出する。レコード評価値は、分割数評価値と距離評価値と位置評価値との合計評価値である。分割数評価値と距離評価値と位置評価値との合計評価値は、例えば、
図10および
図11に後述するように算出される。情報処理装置100は、正規表現「¥d/¥d」の成功度として、レコード評価値の総和の逆数「1/8」を算出する。
【0122】
(レコード評価値を算出する一例)
次に、
図10および
図11を用いて、情報処理装置100が、レコード評価値を算出する一例について説明する。
【0123】
図10および
図11は、レコード評価値を算出する一例を示す説明図である。
図10において、情報処理装置100は、分割結果に基づいて、マッチ情報1000を生成する。マッチ情報1000は、マッチ位置配列1010と、マッチインデックス配列1020とを含む。
【0124】
マッチ位置配列1010は、元データ910,920,930,940,950のマッチ位置を含む。マッチ位置は、元データ910,920,930,940,950上で、正規表現「¥d/¥d」に対応する箇所の先頭が、何文字目に位置するかを示す。マッチ位置は、正規表現「¥d/¥d」に対応する箇所の先頭が、n文字目に位置する場合、n-1の値が設定される。
【0125】
マッチインデックス配列1020は、元データ910,920,930,940,950のマッチインデックスを含む。マッチインデックスは、元データ910,920,930,940,950上で、正規表現「¥d/¥d」に対応する箇所を含む部分データが、先頭から何番目の部分データであるかを示す。マッチインデックスは、正規表現「¥d/¥d」に対応する箇所を含む部分データが、先頭からn番目の部分データである場合、n-1の値が設定される。次に、
図11の説明に移行する。
【0126】
図11において、情報処理装置100は、マッチ情報1000を参照して、分割結果に基づいて、元データ930,940,950に対応する分割数評価値と距離評価値と位置評価値とを算出する。
【0127】
分割数評価値は、元データ930,940,950の分割数が、元データ910,920の分割数と、どの程度異なるかを示す評価値である。分割数は、部分データの数である。分割数評価値は、例えば、分割数の差分絶対値によって表現される。元データ930,940,950に対応する分割数評価値は、例えば、表1101に示すようになる。情報処理装置100が、分割数評価値を算出する具体例については、例えば、
図12を用いて後述する。
【0128】
距離評価値は、元データ930,940,950の部分データが、当該部分データと対応する位置に存在する、元データ910,920の部分データと、どの程度異なるかを示す評価値である。距離評価値は、部分データ間の編集距離により表現される。元データ930,940,950に対応する距離評価値は、例えば、表1102に示すようになる。情報処理装置100が、距離評価値を算出する具体例については、例えば、
図13を用いて後述する。
【0129】
位置評価値は、元データ930,940,950のマッチ位置が、元データ910,920のマッチ位置と、どの程度異なるかを示す評価値である。位置評価値は、マッチ位置の差分絶対値により表現される。元データ930,940,950に対応する位置評価値は、例えば、表1103に示すようになる。情報処理装置100が、位置評価値を算出する具体例については、例えば、
図14を用いて後述する。
【0130】
情報処理装置100は、元データ930,940,950に対応する分割数評価値と距離評価値と位置評価値との合計を、元データ930,940,950に対応するレコード評価値として算出する。元データ930,940,950に対応するレコード評価値は、表1104に示すようになる。情報処理装置100が、レコード評価値を算出する具体例については、例えば、
図15を用いて後述する。
【0131】
(レコード評価値を算出し、成功度を算出する具体例)
次に、
図12~
図15を用いて、情報処理装置100が、正規表現「¥d/¥d」に関し、元データ930,940,950に対応する分割数評価値と距離評価値と位置評価値とを算出し、レコード評価値を算出し、成功度を算出する具体例について説明する。まず、
図12の説明に移行し、情報処理装置100が、分割数評価値を算出する具体例について説明する。
【0132】
図12は、分割数評価値を算出する具体例を示す説明図である。
図12において、情報処理装置100は、正規表現「¥d/¥d」に基づく分割結果に基づいて、元データ910,920,930,940,950の分割数「2」、「2」、「2」、「2」、「3」を算出する。元データ910,920,930,940,950の分割数は、例えば、表1200に示すようになる。
【0133】
情報処理装置100は、ラベルなしの元データ930の分割数と、ラベルありの元データ910,920の分割数それぞれとの差分絶対値の最小値を、元データ930に対応する分割数評価値として算出する。情報処理装置100は、例えば、元データ930の分割数評価値「0」を算出する。情報処理装置100は、同様に、ラベルなしの元データ940,950の分割数評価値「0」、「1」を算出する。元データ930,940,950に対応する分割数評価値は、例えば、表1210に示すようになる。
【0134】
ここでは、情報処理装置100が、分割数評価値の算出に、差分絶対値の最小値を用いる場合について説明したが、これに限らない。例えば、情報処理装置100が、分割数評価値の算出に、最小値以外の差分絶対値の統計値を用いる場合があってもよい。統計値は、例えば、平均値、最大値、最頻値などである。次に、
図13の説明に移行し、情報処理装置100が、距離評価値を算出する具体例について説明する。
【0135】
図13は、距離評価値を算出する具体例を示す説明図である。
図13において、情報処理装置100は、正規表現「¥d/¥d」に基づくマッチインデックスを基準に、相対的に同一の位置に存在する部分データのグループを特定する。
【0136】
情報処理装置100は、例えば、部分データ951単独のグループ1301を特定する。情報処理装置100は、例えば、部分データ911,921,931,941,952のグループ1302を特定する。情報処理装置100は、例えば、部分データ912,922,932,942,953のグループ1303を特定する。
【0137】
情報処理装置100は、グループ1303の部分データ912,922,932,942,953を、正規表現に置換する。正規表現は、例えば、表1300に示すようになる。情報処理装置100は、ラベルなしの元データ930の部分データ932に対応する正規表現と、ラベルありの元データ910,920の部分データ912,922に対応する正規表現との編集距離のうち、最小の編集距離「0」を算出する。
【0138】
情報処理装置100は、同様に、グループ1303について、ラベルなしの元データ940,950に対応する最小の編集距離「2」、「2」を算出する。情報処理装置100は、同様に、グループ1302について、ラベルなしの元データ930,940,950に対応する最小の編集距離「0」、「0」、「0」を算出する。
【0139】
情報処理装置100は、グループ1301の部分データ951を、正規表現に置換する。ここで、グループ1301は、ラベルありの元データ910,920の部分データ911,912,921,922のいずれも含まないため、ラベルありの元データ910,920に対応する正規表現を「null」に設定する。情報処理装置100は、ラベルなしの元データ950の部分データ951に対応する正規表現と「null」との編集距離「2」を算出する。
【0140】
情報処理装置100は、ラベルなしの元データ930,940,950に対応する編集距離の総和「0+0」、「0+2」、「2+0+2」を、距離評価値として算出する。ここでは、情報処理装置100が、距離評価値の算出に、最小の編集距離を用いる場合について説明したが、これに限らない。例えば、情報処理装置100が、距離評価値の算出に、最小値以外の編集距離の統計値を用いる場合があってもよい。統計値は、例えば、平均値、最大値、最頻値などである。次に、
図14の説明に移行し、情報処理装置100が、位置評価値を算出する具体例について説明する。
【0141】
図14は、位置評価値を算出する具体例を示す説明図である。
図14において、情報処理装置100は、正規表現「¥d/¥d」に基づくマッチ位置配列1010を参照して、ラベルなしの元データ930のマッチ位置と、ラベルありの元データ910,920のマッチ位置それぞれとを取得する。情報処理装置100は、ラベルなしの元データ930のマッチ位置と、ラベルありの元データ910,920のマッチ位置それぞれとの差分絶対値の最小値を、元データ930に対応する位置評価値として算出する。情報処理装置100は、例えば、元データ930のマッチ位置評価値「0」を算出する。
【0142】
情報処理装置100は、同様に、ラベルなしの元データ940,950の位置評価値「0」、「1」を算出する。元データ930,940,950に対応する位置評価値は、例えば、表1400に示すようになる。ここでは、情報処理装置100が、位置評価値の算出に、差分絶対値の最小値を用いる場合について説明したが、これに限らない。例えば、情報処理装置100が、位置評価値の算出に、最小値以外の差分絶対値の統計値を用いる場合があってもよい。統計値は、例えば、平均値、最大値、最頻値などである。次に、
図15の説明に移行し、情報処理装置100が、元データ930,940,950に対応する分割数評価値と距離評価値と位置評価値とに基づいて、レコード評価値を算出し、成功度を算出する具体例について説明する。
【0143】
図15は、レコード評価値を算出し、成功度を算出する具体例を示す説明図である。
図15において、情報処理装置100は、元データ930に対応する分割数評価値「0」と距離評価値「0」と位置評価値「0」の合計「0」を、元データ930に対応するレコード評価値「0」として算出する。情報処理装置100は、同様に、元データ940,950に対応するレコード評価値「2」、「6」を算出する。
【0144】
情報処理装置100は、元データ930,940,950に対応するレコード評価値「0」、「2」、「6」の和の逆数「1/8」を、正規表現「¥d/¥d」の成功度「1/8」として算出する。次に、
図16~
図18の説明に移行し、情報処理装置100が、他の正規表現「¥d++/¥d」、「¥d/¥d++」、「¥d++/¥d++」の成功度を算出する具体例について説明する。
【0145】
図16~
図18は、他の正規表現の成功度を算出する具体例を示す説明図である。
図16において、情報処理装置100は、元データ910,920,930,940,950を、正規表現「¥d++/¥d」に対応する箇所を基準に分割する。元データ910は、例えば、部分データ1611,1612に分割される。元データ920は、例えば、部分データ1621,1622に分割される。元データ930は、例えば、部分データ1631,1632に分割される。元データ940は、例えば、部分データ1641,1642に分割される。元データ950は、例えば、部分データ1651,1652に分割される。
【0146】
情報処理装置100は、正規表現「¥d++/¥d」に基づく分割結果に基づいて、
図12と同様に、分割数を算出し、分割数評価値「0」を算出する。分割数は、例えば、表1660に示すようになる。また、情報処理装置100は、正規表現「¥d++/¥d」に基づく分割結果に基づいて、
図13と同様に、編集距離を算出し、距離評価値「6」を算出する。編集距離は、例えば、表1670に示すようになる。
【0147】
また、情報処理装置100は、正規表現「¥d++/¥d」に基づく分割結果に基づいて、
図14と同様に、マッチ位置を参照して、位置評価値「0」を算出する。マッチ位置は、例えば、表1680に示すようになる。また、情報処理装置100は、
図15と同様に、正規表現「¥d++/¥d」の成功度「1/6」を算出する。次に、
図17の説明に移行する。
【0148】
図17において、情報処理装置100は、元データ910,920,930,940,950を、正規表現「¥d/¥d++」に対応する箇所を基準に分割する。元データ910は、例えば、部分データ1711,1712に分割される。元データ920は、例えば、部分データ1721,1722に分割される。元データ930は、例えば、部分データ1731,1732に分割される。元データ940は、例えば、部分データ1741,1742に分割される。元データ950は、例えば、部分データ1751,1752,1753に分割される。
【0149】
情報処理装置100は、正規表現「¥d/¥d++」に基づく分割結果に基づいて、
図12と同様に、分割数を算出し、分割数評価値「1」を算出する。分割数は、例えば、表1760に示すようになる。また、情報処理装置100は、正規表現「¥d/¥d++」に基づく分割結果に基づいて、
図13と同様に、編集距離を算出し、距離評価値「6」を算出する。編集距離は、例えば、表1770に示すようになる。
【0150】
また、情報処理装置100は、正規表現「¥d/¥d++」に基づく分割結果に基づいて、
図14と同様に、マッチ位置を参照して、位置評価値「1」を算出する。マッチ位置は、例えば、表1780に示すようになる。また、情報処理装置100は、
図15と同様に、正規表現「¥d/¥d++」の成功度「1/8」を算出する。次に、
図18の説明に移行する。
【0151】
図18において、情報処理装置100は、元データ910,920,930,940,950を、正規表現「¥d++/¥d++」に対応する箇所を基準に分割する。元データ910は、例えば、部分データ1811,1812に分割される。元データ920は、例えば、部分データ1821,1822に分割される。元データ930は、例えば、部分データ1831,1832に分割される。元データ940は、例えば、部分データ1841,1842に分割される。元データ950は、例えば、部分データ1851,1852に分割される。
【0152】
情報処理装置100は、正規表現「¥d++/¥d++」に基づく分割結果に基づいて、
図12と同様に、分割数を算出し、分割数評価値「0」を算出する。分割数は、例えば、表1860に示すようになる。また、情報処理装置100は、正規表現「¥d++/¥d++」に基づく分割結果に基づいて、
図13と同様に、編集距離を算出し、距離評価値「4」を算出する。編集距離は、例えば、表1870に示すようになる。
【0153】
また、情報処理装置100は、正規表現「¥d++/¥d++」に基づく分割結果に基づいて、
図14と同様に、マッチ位置を参照して、位置評価値「0」を算出する。マッチ位置は、例えば、表1880に示すようになる。また、情報処理装置100は、
図15と同様に、正規表現「¥d++/¥d++」の成功度「1/4」を算出する。これにより、情報処理装置100は、元データ群900に対する加工に、どのような正規表現を用いることが好ましいかを判断する指標となる、それぞれの正規表現の成功度を算出することができる。
【0154】
そして、情報処理装置100は、それぞれの正規表現の成功度に基づいて、ユーザが、いずれの正規表現を利用して、元データ群900を加工すれば、ユーザの意図に沿って元データ群900が加工可能であるかを判断しやすくすることができる。情報処理装置100は、例えば、それぞれの正規表現の成功度を、クライアント装置201に表示させ、ユーザに把握可能にすることができる。このため、ユーザは、元データ群900を加工しやすくなり、作業量の低減化を図ることができる。
【0155】
また、情報処理装置100は、それぞれの正規表現の成功度に基づいて、いずれかの正規表現を利用して、ユーザの意図に沿って元データ群900を加工してもよい。また、情報処理装置100は、それぞれの正規表現の成功度に基づいて、いずれかの正規表現を利用して、ユーザの意図に沿って元データ群900を加工することができるプログラムを生成してもよい。次に、
図19の説明に移行し、情報処理装置100が、それぞれの正規表現の成功度を、クライアント装置201に表示させる場合の、クライアント装置201における表示画面例について説明する。
【0156】
(クライアント装置201における表示画面例)
図19は、クライアント装置201における表示画面例を示す説明図である。
図19において、情報処理装置100は、
図9~
図18において算出した、それぞれの正規表現の成功度の一覧1900を、クライアント装置201に送信する。クライアント装置201は、それぞれの正規表現の成功度の一覧1900を受信すると、表示画面1910を表示する。
【0157】
クライアント装置201は、表示画面1910の表示領域1911上に、それぞれの正規表現の成功度の一覧1900と、それぞれの正規表現の選択を受け付けるチェックボックス1940とを表示する。
図19の例では、クライアント装置201は、ユーザの操作入力に基づき、正規表現「¥d++/¥d++」の選択を受け付ける。
【0158】
クライアント装置201は、正規表現「¥d++/¥d++」の選択を受け付けると、正規表現「¥d++/¥d++」を、情報処理装置100に送信する。情報処理装置100は、正規表現「¥d++/¥d++」を利用して、元データ群900を加工し、元データ群900と対応付けて加工後データ群1930を、クライアント装置201に送信する。クライアント装置201は、元データ群900と対応付けて加工後データ群1930を受信すると、表示画面1910の表示領域1912上に、元データ群900と対応付けて加工後データ群1930を表示する。
【0159】
これにより、情報処理装置100は、それぞれの正規表現の成功度に基づいて、ユーザが、いずれの正規表現を利用して、元データ群900を加工すれば、ユーザの意図に沿って元データ群900が加工可能であるかを判断しやすくすることができる。情報処理装置100は、例えば、元データ群900のうち、ラベルなしの元データ930,940,950に対しても、ユーザの意図に沿って加工可能である正規表現を判断しやすくすることができる。
【0160】
情報処理装置100は、例えば、それぞれの正規表現の成功度を、クライアント装置201に表示させ、ユーザに把握可能にすることができる。また、情報処理装置100は、ユーザが選択した正規表現を利用して、元データ群900を加工した結果を、ユーザに把握可能にすることができ、作業量の低減化を図ることができる。
【0161】
ここでは、情報処理装置100が、元データ群900を加工する場合について説明したが、これに限らない。例えば、クライアント装置201が、元データ群900を情報処理装置100から受信、または、元データ群900を予め記憶しておき、元データ群900を加工する場合があってもよい。
【0162】
以上の説明では、情報処理装置100が、分割数評価値と距離評価値と位置評価値とに基づいて、レコード評価値を算出し、正規表現の成功度を算出する場合について説明したが、これに限らない。例えば、情報処理装置100が、分割数評価値と距離評価値と位置評価値とのいずれか2種類の評価値に基づいて、レコード評価値を算出し、正規表現の成功度を算出する場合があってもよい。また、例えば、情報処理装置100が、分割数評価値と距離評価値と位置評価値とのいずれかを、そのままレコード評価値として扱い、正規表現の成功度を算出する場合があってもよい。
【0163】
(受付処理手順)
次に、
図20を用いて、情報処理装置100が実行する、受付処理手順の一例について説明する。受付処理は、例えば、
図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0164】
図20は、受付処理手順の一例を示すフローチャートである。
図20において、元データ表示部610は、元データ群を読み込む(ステップS2001)。そして、元データ表示部610は、読み込んだ元データ群を、クライアント装置201に表示させる(ステップS2002)。
【0165】
次に、ユーザ入力部620は、クライアント装置201から、元データ群のいずれかの元データの指定と、指定された元データを加工する加工例を示す加工データの入力とを受け付ける(ステップS2003)。そして、ユーザ入力部620は、クライアント装置201から、推定指示を受け付けたか否かを判定する(ステップS2004)。
【0166】
ここで、推定指示を受け付けていない場合(ステップS2004:No)、ユーザ入力部620は、ステップS2003の処理に戻る。一方で、推定指示を受け付けている場合(ステップS2004:Yes)、ユーザ入力部620は、ステップS2005の処理に移行する。
【0167】
ステップS2005では、ユーザ入力部620は、正規表現推定部630の実行フラグを有効に設定し、正規表現推定部630に、指定された元データと、入力された加工データとを出力し、
図21に後述する推定処理を実行させる(ステップS2005)。そして、情報処理装置100は、受付処理を終了する。これにより、情報処理装置100は、複数の正規表現の生成に用いる各種情報を取得することができ、
図21に後述する推定処理において利用可能にすることができる。
【0168】
(推定処理手順)
次に、
図21を用いて、情報処理装置100が実行する、推定処理手順の一例について説明する。推定処理は、例えば、
図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0169】
図21は、推定処理手順の一例を示すフローチャートである。
図21において、正規表現推定部630は、実行フラグが有効であるか否かを判定する(ステップS2101)。
【0170】
ここで、実行フラグが有効ではない場合(ステップS2101:No)、正規表現推定部630は、ステップS2101の処理に戻る。一方で、実行フラグが有効である場合(ステップS2101:Yes)、正規表現推定部630は、ステップS2102の処理に移行する。
【0171】
ステップS2102では、正規表現推定部630は、ユーザ入力部620から、指定された元データと、入力された加工データとを読み込み、候補推定部631に出力する(ステップS2102)。そして、候補推定部631は、元データ群の加工に利用する候補となる複数の正規表現を推定し、成功度算出部632に出力する(ステップS2103)。
【0172】
次に、成功度算出部632は、
図22に後述する成功度算出処理を実行し、複数の正規表現のそれぞれの正規表現の成功度を、正規表現選択部633に出力する(ステップS2104)。そして、正規表現選択部633は、それぞれの正規表現の成功度に基づいて、候補となる複数の正規表現のいずれかの正規表現を選択する(ステップS2105)。
【0173】
次に、正規表現選択部633は、元データ加工部640に、選択した正規表現を出力し、元データ加工部640に、
図26に後述する加工処理を実行させる(ステップS2106)。そして、情報処理装置100は、推定処理を終了する。これにより、情報処理装置100は、元データ群の加工に利用する候補となる複数の正規表現を推定し、
図26に後述する加工処理において元データ群の加工に利用可能にすることができる。
【0174】
(成功度算出処理手順)
次に、
図22を用いて、情報処理装置100が実行する、成功度算出処理手順の一例について説明する。成功度算出処理は、例えば、
図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0175】
図22は、成功度算出処理手順の一例を示すフローチャートである。
図22において、成功度算出部632は、元データ群を読み込む(ステップS2201)。そして、成功度算出部632は、候補となる複数の正規表現のうち、まだ処理していない正規表現を選択する(ステップS2202)。
【0176】
次に、成功度算出部632は、
図23に後述する第1算出処理を実行する(ステップS2203)。そして、成功度算出部632は、
図24に後述する第2算出処理を実行する(ステップS2204)。
【0177】
次に、成功度算出部632は、
図25に後述する第3算出処理を実行する(ステップS2205)。そして、成功度算出部632は、候補となる複数の正規表現のうち、すべての正規表現を選択したか否かを判定する(ステップS2206)。
【0178】
ここで、まだ選択していない正規表現がある場合(ステップS2206:No)、成功度算出部632は、ステップS2202の処理に戻る。一方で、すべての正規表現を選択している場合(ステップS2206:Yes)、情報処理装置100は、成功度算出処理を終了する。これにより、情報処理装置100は、それぞれの正規表現の成功度を算出することができ、いずれの正規表現が、ユーザの意図に沿って元データ群を加工可能な確率が高いのかを参照可能にすることができる。
【0179】
(第1算出処理手順)
次に、
図23を用いて、情報処理装置100が実行する、第1算出処理手順の一例について説明する。第1算出処理は、例えば、
図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0180】
図23は、第1算出処理手順の一例を示すフローチャートである。
図23において、成功度算出部632は、元データごとに、選択した正規表現にマッチした箇所をスプリットで分割する(ステップS2301)。そして、成功度算出部632は、分割した配列の中で、選択した正規表現にマッチする部分のマッチインデックスを算出する(ステップS2302)。
【0181】
次に、成功度算出部632は、元データの中で、何番目の座標に、選択した正規表現にマッチした箇所が存在するかを特定する(ステップS2303)。そして、情報処理装置100は、第1算出処理を終了する。
【0182】
(第2算出処理手順)
次に、
図24を用いて、情報処理装置100が実行する、第2算出処理手順の一例について説明する。第2算出処理は、例えば、
図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0183】
図24は、第2算出処理手順の一例を示すフローチャートである。
図24において、成功度算出部632は、元データ群のそれぞれの元データの分割数に基づいて、元データ群のうち対応する加工データが存在しない元データごとに、分割数評価値を算出する(ステップS2401)。
【0184】
次に、成功度算出部632は、元データ群のそれぞれの元データの部分間の編集距離に基づいて、元データ群のうち対応する加工データが存在しない元データごとに、距離評価値を算出する(ステップS2402)。
【0185】
次に、成功度算出部632は、元データ群のそれぞれの元データの中で、正規表現にマッチした箇所が存在する座標に基づいて、元データ群のうち対応する加工データが存在しない元データごとに、位置評価値を算出する(ステップS2403)。そして、情報処理装置100は、第2算出処理を終了する。
【0186】
(第3算出処理手順)
次に、
図25を用いて、情報処理装置100が実行する、第3算出処理手順の一例について説明する。第3算出処理は、例えば、
図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0187】
図25は、第3算出処理手順の一例を示すフローチャートである。
図25において、成功度算出部632は、元データ群のうち対応する加工データが存在しない元データごとに、分割数評価値と距離評価値と位置評価値とを合計した合計評価値を算出する(ステップS2501)。
【0188】
次に、成功度算出部632は、元データ群のうち対応する加工データが存在しない元データごとの合計評価値の総和の逆数を、選択した正規表現の成功度として算出する(ステップS2502)。そして、情報処理装置100は、第3算出処理を終了する。
【0189】
(加工処理手順)
次に、
図26を用いて、情報処理装置100が実行する、加工処理手順の一例について説明する。加工処理は、例えば、
図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0190】
図26は、加工処理手順の一例を示すフローチャートである。
図26において、元データ加工部640は、正規表現選択部633から、正規表現を読み込む(ステップS2601)。
【0191】
次に、元データ加工部640は、元データ群を読み込む(ステップS2602)。そして、元データ加工部640は、読み込んだ正規表現を利用して、読み込んだ元データ群を加工する(ステップS2603)。
【0192】
次に、元データ加工部640は、加工した元データ群を保存する(ステップS2604)。そして、情報処理装置100は、加工処理を終了する。これにより、情報処理装置100は、元データ群を自動で加工することができ、ユーザが人手で元データ群を加工する場合に比べて、ユーザの作業量の低減化を図ることができる。
【0193】
ここで、情報処理装置100は、
図20~
図26のそれぞれのフローチャートの一部ステップの処理の順序を入れ替えて実行してもよい。例えば、ステップS2301~S2303の処理の順序は入れ替え可能である。また、情報処理装置100は、
図20~
図26のそれぞれのフローチャートの一部ステップの処理を省略してもよい。例えば、ステップS2401~S2403のいずれかの処理は省略可能である。
【0194】
以上説明したように、情報処理装置100によれば、データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得することができる。情報処理装置100によれば、データ群のそれぞれのデータ上の、取得した複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、それぞれの正規表現をデータ群に対する加工に利用する尤度を算出することができる。情報処理装置100によれば、算出したそれぞれの正規表現の尤度を出力することができる。これにより、情報処理装置100は、データ群に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることができる。このため、情報処理装置100は、いずれかの正規表現を利用して、ユーザの意図に沿ってデータ群を加工可能にすることができる。また、情報処理装置100は、ユーザの作業量の低減化を図ることができる。
【0195】
情報処理装置100によれば、それぞれの正規表現について、データ群のそれぞれのデータを正規表現に対応する箇所を基準に分割した場合の、データ群のそれぞれのデータから分割した部分データの数に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置100は、データ群のそれぞれのデータから分割した部分データの数に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【0196】
情報処理装置100によれば、データ群に含まれる1以上のデータと、1以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成された複数の正規表現を取得することができる。情報処理装置100によれば、それぞれの正規表現について、1以上のデータのそれぞれのデータから分割した部分データの数と、残余のデータのそれぞれのデータから分割した部分データの数とを比較することができる。情報処理装置100によれば、比較した結果に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置100は、ユーザの意図が反映されている確率が高いと判断される、複数の正規表現の生成に用いた1以上のデータに関して現れる規則性を、尤度を算出する基準とすることができ、尤度を算出する精度の向上を図ることができる。
【0197】
情報処理装置100によれば、それぞれの正規表現について、データ群のそれぞれのデータから、正規表現に対応する箇所を基準に分割した部分データの中から、第1の部分データと第2の部分データとを選択することができる。情報処理装置100によれば、選択した第1の部分データと第2の部分データとの類似度に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置100は、第1の部分データと、第2の部分データとの類似性に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【0198】
情報処理装置100によれば、データ群に含まれる1以上のデータと、1以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成された複数の正規表現を取得することができる。情報処理装置100によれば、それぞれの正規表現について、1以上のデータのそれぞれのデータから分割した部分データの中から、第1の部分データを選択することができる。情報処理装置100によれば、残余のデータのそれぞれのデータから分割した部分データの中から、第1の部分データに対応する位置に存在する第2の部分データを選択することができる。情報処理装置100によれば、それぞれの正規表現について、選択した第1の部分データと、選択した第2の部分データとの類似度に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置100は、ユーザの意図が反映されている確率が高いと判断される、複数の正規表現の生成に用いた1以上のデータに関して現れる規則性を、尤度を算出する基準とすることができ、尤度を算出する精度の向上を図ることができる。
【0199】
情報処理装置100によれば、類似度を、第1の部分データと第2の部分データとの編集距離によって表現することができる。これにより、情報処理装置100は、第1の部分データと第2の部分データとの類似度を算出することができる。
【0200】
情報処理装置100によれば、それぞれの正規表現について、データ群のそれぞれのデータ上の正規表現に対応する箇所が存在する位置に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置100は、データ群のそれぞれのデータ上の正規表現に対応する箇所が存在する位置に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【0201】
情報処理装置100によれば、データ群に含まれる1以上のデータと、1以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成された複数の正規表現を取得することができる。情報処理装置100によれば、それぞれの正規表現について、1以上のデータのそれぞれのデータ上の正規表現に対応する箇所が存在する位置と、残余のデータのそれぞれのデータ上の正規表現に対応する箇所が存在する位置とを比較することができる。情報処理装置100によれば、比較した結果に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置100は、ユーザの意図が反映されている確率が高いと判断される、複数の正規表現の生成に用いた1以上のデータに関して現れる規則性を、尤度を算出する基準とすることができ、尤度を算出する精度の向上を図ることができる。
【0202】
情報処理装置100によれば、それぞれの正規表現について、データ群のそれぞれのデータ上の正規表現に対応する箇所の数に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置100は、データ群のそれぞれのデータ上の正規表現に対応する箇所の数に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【0203】
情報処理装置100によれば、算出したそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を選択し、選択したいずれかの正規表現を利用して、データ群を加工して出力することができる。これにより、情報処理装置100は、データ群を自動で加工する際に、ユーザの意図に沿って加工される確率の向上を図ることができる。また、情報処理装置100は、ユーザが人手でデータ群を加工する場合に比べて、ユーザの作業量の低減化を図ることができる。
【0204】
情報処理装置100によれば、データ群に含まれる1以上のデータと、1以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、複数の正規表現を生成することができる。これにより、情報処理装置100は、複数の正規表現を自動で生成することができる。このため、情報処理装置100は、ユーザが複数の正規表現を生成せずに済むようにして、ユーザの作業量の低減化を図ることができる。
【0205】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明した情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【0206】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0207】
(付記1)データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0208】
(付記2)前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの数に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記1に記載の情報処理プログラム。
【0209】
(付記3)前記複数の正規表現は、前記データ群に含まれる1以上のデータと、前記1以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成され、
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記1以上のデータのそれぞれのデータから分割した部分データの数と、前記データ群に含まれる前記1以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの数とを比較した結果に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記2に記載の情報処理プログラム。
【0210】
(付記4)前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの中から選択した、第1の部分データと第2の部分データとの類似度に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0211】
(付記5)前記複数の正規表現は、前記データ群に含まれる1以上のデータと、前記1以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成され、
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記1以上のデータのそれぞれのデータから分割した部分データの中から選択した第1の部分データと、前記データ群に含まれる前記1以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの中から選択した、前記第1の部分データに対応する位置に存在する第2の部分データとの類似度に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記4に記載の情報処理プログラム。
【0212】
(付記6)前記類似度は、前記第1の部分データと前記第2の部分データとの編集距離によって表現される、ことを特徴とする付記4または5に記載の情報処理プログラム。
【0213】
(付記7)前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記1~6のいずれか一つに記載の情報処理プログラム。
【0214】
(付記8)前記複数の正規表現は、前記データ群に含まれる1以上のデータと、前記1以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成され、
前記算出する処理は、
前記それぞれの正規表現について、前記1以上のデータのそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置と、前記データ群に含まれる前記1以上のデータを除いた残余のデータのそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置とを比較した結果に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記7に記載の情報処理プログラム。
【0215】
(付記9)前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータ上の前記正規表現に対応する箇所の数に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記1~8のいずれか一つに記載の情報処理プログラム。
【0216】
(付記10)算出した前記それぞれの正規表現の尤度に基づいて、前記複数の正規表現のいずれかの正規表現を選択し、
選択した前記いずれかの正規表現を利用して、前記データ群を加工して出力する、
処理を前記コンピュータに実行させることを特徴とする付記1~9のいずれか一つに記載の情報処理プログラム。
【0217】
(付記11)前記取得する処理は、
前記データ群に含まれる1以上のデータと、前記1以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、前記複数の正規表現を生成する、ことを特徴とする付記1~10のいずれか一つに記載の情報処理プログラム。
【0218】
(付記12)データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【0219】
(付記13)データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0220】
100 情報処理装置
110 データ群
111,121 データ集合
200 情報処理システム
201 クライアント装置
210 ネットワーク
300,400 バス
301,401 CPU
302,402 メモリ
303,403 ネットワークI/F
304,404 記録媒体I/F
305,405 記録媒体
406 ディスプレイ
407 入力装置
500 記憶部
501 取得部
502 生成部
503 算出部
504 選択部
505 加工部
506 出力部
601,900 元データ群
602,1930 加工後データ群
610 元データ表示部
620 ユーザ入力部
630 正規表現推定部
631 候補推定部
632 成功度算出部
633 正規表現選択部
640 元データ加工部
701~703 符号
710,730,910,920,930,940,950 元データ
720 加工データ
740,750,960,1101~1104,1200,1210,1300,1400,1660,1670,1680,1760,1770,1780,1860,1870,1880 表
911,912,921,922,931,932,941,942,951~953,1611,1612,1621,1622,1631,1632,1641,1642,1651,1652,1711,1712,1721,1722,1731,1732,1741,1742,1751~1753,1811,1812,1821,1822,1831,1832,1841,1842,1851,1852 部分データ
1000 マッチ情報
1010 マッチ位置配列
1020 マッチインデックス配列
1301~1303 グループ
1900 一覧
1910 表示画面
1940 チェックボックス