(57)【要約】  情報処理装置（１００）は、元データ群（９００）を、それぞれの正規表現に対応する箇所を基準に分割した結果に基づいて、それぞれの正規表現の成功度を算出する。情報処理装置（１００）は、それぞれの正規表現の成功度の一覧（１９００）を、クライアント装置（２０１）に表示させる。クライアント装置（２０１）は、ユーザの操作入力に基づき、正規表現の選択を受け付け、情報処理装置（１００）に送信する。情報処理装置（１００）は、選択された正規表現を利用して、元データ群（９００）を加工し、元データ群（９００）と対応付けて加工後データ群（１９３０）を、クライアント装置（２０１）に表示させる。
2020245993.tif 000002
【特許請求の範囲】
【請求項１】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項２】
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの数に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項１に記載の情報処理プログラム。
【請求項３】
前記複数の正規表現は、前記データ群に含まれる１以上のデータと、前記１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成され、
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記１以上のデータのそれぞれのデータから分割した部分データの数と、前記データ群に含まれる前記１以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの数とを比較した結果に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項２に記載の情報処理プログラム。
【請求項４】
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの中から選択した、第１の部分データと第２の部分データとの類似度に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項１〜３のいずれか一つに記載の情報処理プログラム。
【請求項５】
前記複数の正規表現は、前記データ群に含まれる１以上のデータと、前記１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成され、
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記１以上のデータのそれぞれのデータから分割した部分データの中から選択した第１の部分データと、前記データ群に含まれる前記１以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの中から選択した、前記第１の部分データに対応する位置に存在する第２の部分データとの類似度に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項４に記載の情報処理プログラム。
【請求項６】
前記類似度は、前記第１の部分データと前記第２の部分データとの編集距離によって表現される、ことを特徴とする請求項４または５に記載の情報処理プログラム。
【請求項７】
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項１〜６のいずれか一つに記載の情報処理プログラム。
【請求項８】
前記複数の正規表現は、前記データ群に含まれる１以上のデータと、前記１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成され、
前記算出する処理は、
前記それぞれの正規表現について、前記１以上のデータのそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置と、前記データ群に含まれる前記１以上のデータを除いた残余のデータのそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置とを比較した結果に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項７に記載の情報処理プログラム。
【請求項９】
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータ上の前記正規表現に対応する箇所の数に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項１〜８のいずれか一つに記載の情報処理プログラム。
【請求項１０】
算出した前記それぞれの正規表現の尤度に基づいて、前記複数の正規表現のいずれかの正規表現を選択し、
選択した前記いずれかの正規表現を利用して、前記データ群を加工して出力する、
処理を前記コンピュータに実行させることを特徴とする請求項１〜９のいずれか一つに記載の情報処理プログラム。
【請求項１１】
前記取得する処理は、
前記データ群に含まれる１以上のデータと、前記１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、前記複数の正規表現を生成する、ことを特徴とする請求項１〜１０のいずれか一つに記載の情報処理プログラム。
【請求項１２】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項１３】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【０００２】
従来、ユーザが指定した入力内容と出力内容とに基づいて、入力内容をどのように処理すれば出力内容が生成可能かを推測し、入力内容から出力内容を生成可能なプログラムを自動生成するＰＢＥ（Ｐｒｏｇｒａｍｍｉｎｇ  Ｂｙ  Ｅｘａｍｐｌｅ）と呼ばれる技術がある。この技術は、例えば、ユーザが指定した元データと加工データとに基づいて、元データをどのように処理すれば加工データが生成可能かを推測し、元データを含むデータ群を加工するためのプログラムを自動生成する場合に適用される。【０００３】
先行技術としては、例えば、複数の正規表現の中で、複数の文書データの各々における複数の正規表現の各々に適合するテキスト部分の数が、複数の文書データの各々における所望のテキスト部分の数と一致する度合いの高い正規表現を決定するものがある。また、例えば、入力されたコンテキストから抽出された組織名および電話番号の組み合わせが、予め登録された組織のホワイトリストＤＢ（ＤａｔａＢａｓｅ）に存在するか否かを検索した結果に基づいて、コンテキストの送信元の信頼度を表示する技術がある。また、例えば、マルウェア解析結果から得られた悪性ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）と過去のネットワークアクセスの特徴量を基に、アクセスログから悪性ＵＲＬと類似するＵＲＬを検索する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−２８６９９号公報
【特許文献２】特開２００７−５８５８７号公報
【特許文献３】国際公開第２０１５／１１４８０４号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、どのような正規表現を用いれば、データ群のそれぞれのデータ上において、ユーザが加工を所望する箇所を正確に特定することができるかを判断することが難しい。結果として、ユーザの意図に沿ってデータ群のそれぞれのデータを加工することができるプログラムを自動生成することが難しい。【０００６】
１つの側面では、本発明は、データ群に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様によれば、データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、算出した前記それぞれの正規表現の尤度を出力する情報処理プログラム、情報処理方法、および情報処理装置が提案される。
【発明の効果】
【０００８】
一態様によれば、データ群に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
【図２】図２は、情報処理システム２００の一例を示す説明図である。
【図３】図３は、情報処理装置１００のハードウェア構成例を示すブロック図である。
【図４】図４は、クライアント装置２０１のハードウェア構成例を示すブロック図である。
【図５】図５は、情報処理装置１００の機能的構成例を示すブロック図である。
【図６】図６は、情報処理装置１００の具体的な機能的構成例を示すブロック図である。
【図７】図７は、情報処理装置１００の動作例を示す説明図（その１）である。
【図８】図８は、情報処理装置１００の動作例を示す説明図（その２）である。
【図９】図９は、それぞれの正規表現の成功度を算出する流れを示す説明図である。
【図１０】図１０は、レコード評価値を算出する一例を示す説明図（その１）である。
【図１１】図１１は、レコード評価値を算出する一例を示す説明図（その２）である。
【図１２】図１２は、分割数評価値を算出する具体例を示す説明図である。
【図１３】図１３は、距離評価値を算出する具体例を示す説明図である。
【図１４】図１４は、位置評価値を算出する具体例を示す説明図である。
【図１５】図１５は、レコード評価値を算出し、成功度を算出する具体例を示す説明図である。
【図１６】図１６は、他の正規表現の成功度を算出する具体例を示す説明図（その１）である。
【図１７】図１７は、他の正規表現の成功度を算出する具体例を示す説明図（その２）である。
【図１８】図１８は、他の正規表現の成功度を算出する具体例を示す説明図（その３）である。
【図１９】図１９は、クライアント装置２０１における表示画面例を示す説明図である。
【図２０】図２０は、受付処理手順の一例を示すフローチャートである。
【図２１】図２１は、推定処理手順の一例を示すフローチャートである。
【図２２】図２２は、成功度算出処理手順の一例を示すフローチャートである。
【図２３】図２３は、第１算出処理手順の一例を示すフローチャートである。
【図２４】図２４は、第２算出処理手順の一例を示すフローチャートである。
【図２５】図２５は、第３算出処理手順の一例を示すフローチャートである。
【図２６】図２６は、加工処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかる情報処理方法の一実施例）
図１は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置１００は、ユーザの意図に沿ってデータ群のそれぞれのデータを加工可能にすることを支援することができるコンピュータである。
【００１２】
データ群は、種類が同じ複数のデータの集合である。データ群は、例えば、形式が同じ複数のデータの集合である。データは、例えば、表形式である。データの加工は、例えば、データ上の一部の抽出、データ上の一部の変換、または、データの分割などである。
【００１３】
ここで、データ群を加工するためのプログラムを自動生成するための手法が考えられる。かかる手法は、例えば、ユーザが指定した元データと加工データとに基づいて、元データをどのように処理すれば加工データが生成可能かを推測し、元データを含むデータ群を加工するためのプログラムを自動生成する。かかる手法は、具体的には、元データを加工データに加工する場合の、元データ上の加工された箇所を特定可能である正規表現を推定し、推定した正規表現を利用してプログラムを自動生成する。正規表現を推定する技術は、例えば、下記参考文献１を参照することができる。
【００１４】
参考文献１：Ｂａｒｔｏｌｉ，  Ａｌｂｅｒｔｏ，  ｅｔ  ａｌ．  “Ｉｎｆｅｒｅｎｃｅ  ｏｆ  ｒｅｇｕｌａｒ  ｅｘｐｒｅｓｓｉｏｎｓ  ｆｏｒ  ｔｅｘｔ  ｅｘｔｒａｃｔｉｏｎ  ｆｒｏｍ  ｅｘａｍｐｌｅｓ．”  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｋｎｏｗｌｅｄｇｅ  ａｎｄ  Ｄａｔａ  Ｅｎｇｉｎｅｅｒｉｎｇ  ２８．５  （２０１６）：  １２１７−１２３０．
【００１５】
しかしながら、かかる手法では、元データ上の加工された箇所を特定可能である正規表現が複数存在する場合があり、いずれの正規表現が、ユーザの意図に沿った正しい正規表現であるかを判断することができない。かかる手法では、例えば、どのような正規表現を用いれば、データ群のそれぞれのデータ上において、ユーザが加工を所望する箇所を正確に特定することができるかを判断することができない。結果として、ユーザの意図に沿ってデータ群のそれぞれのデータを加工することができるプログラムを自動生成することができない。
【００１６】
そこで、本実施の形態では、データ群のそれぞれのデータ上の、複数の正規表現のそれぞれの正規表現に対応する箇所に関して現れる規則性に基づいて、複数の正規表現のそれぞれの正規表現の尤度を算出することができる情報処理方法について説明する。この情報処理方法によれば、それぞれの正規表現の尤度を出力し、データ群に対する加工に適した正規表現を判断可能にすることができる。
【００１７】
図１において、（１−１）情報処理装置１００は、複数の正規表現を取得する。複数の正規表現は、データ群１１０のそれぞれのデータ上から加工する箇所を探索することに利用可能である。複数の正規表現は、例えば、データ群１１０に含まれるデータと、当該データの加工例を示すデータとに基づき生成される。
【００１８】
図１の例では、複数の正規表現は、データ群１１０に含まれるユーザが指定したデータ集合１１１と、データ集合１１１のそれぞれのデータの加工例を含むデータ集合１２１とに基づき生成される。データ集合１２１は、データ集合１１１のそれぞれのデータから、「８／１」や「４／３」を抽出する加工例を含む。
【００１９】
このため、複数の正規表現は、具体的には、「８／１」や「４／３」などを特定可能である正規表現「￥ｄ＋＋／￥ｄ」、「￥ｄ／￥ｄ」、「￥ｄ／￥ｄ＋＋」、「￥ｄ＋＋／￥ｄ＋＋」が考えられる。￥ｄは、数字１文字を示す。￥ｄ＋＋は、数字ｎ文字を示す。情報処理装置１００は、具体的には、複数の正規表現「￥ｄ＋＋／￥ｄ」、「￥ｄ／￥ｄ」、「￥ｄ／￥ｄ＋＋」、「￥ｄ＋＋／￥ｄ＋＋」を取得する。
【００２０】
（１−２）情報処理装置１００は、データ群１１０のそれぞれのデータ上の、取得した複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、それぞれの正規表現の尤度を算出する。尤度は、正規表現をデータ群１１０に対する加工に利用する尤もらしさを示す指標値である。尤度は、例えば、データ群１１０の加工にあたり、どの程度ユーザの意図に沿って、加工する箇所を特定することができるかを示す指標値である。
【００２１】
ここで、データ群１１０は、種類が同じ複数のデータの集合である。データ群１１０は、例えば、形式が同じ複数のデータの集合である。また、ユーザは、データ群１１０のそれぞれのデータを規則的に加工することを意図していると考えられる。従って、正規表現が、ユーザの意図に沿って、加工する箇所を特定可能であれば、データ群１１０のそれぞれのデータ上の、当該正規表現に対応する箇所にも、規則性が現れると考えられる。
【００２２】
規則性は、例えば、それぞれの正規表現について、データ群１１０のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、データ群１１０のそれぞれのデータから分割した部分データの数に関して現れることが考えられる。規則性は、例えば、それぞれの正規表現について、データ群１１０のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置に関して現れることが考えられる。
【００２３】
規則性は、例えば、それぞれの正規表現について、データ群１１０のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、異なる２つのデータから分割した部分データ同士の類似度に関して現れることが考えられる。規則性は、それぞれの正規表現について、データ群１１０のそれぞれのデータ上の、当該正規表現に対応する箇所の数に関して現れることが考えられる。
【００２４】
このため、情報処理装置１００は、かかる規則性を利用して、それぞれの正規表現の尤度を算出する。図１の例では、情報処理装置１００は、複数の正規表現「￥ｄ＋＋／￥ｄ」、「￥ｄ／￥ｄ」、「￥ｄ／￥ｄ＋＋」、「￥ｄ＋＋／￥ｄ＋＋」のそれぞれの正規表現の尤度を算出する。情報処理装置１００が、それぞれの尤度を算出する具体例については、例えば、図７〜図１８を用いて後述する。
【００２５】
（１−３）情報処理装置１００は、算出したそれぞれの正規表現の尤度を出力する。情報処理装置１００は、例えば、複数の正規表現「￥ｄ＋＋／￥ｄ」、「￥ｄ／￥ｄ」、「￥ｄ／￥ｄ＋＋」、「￥ｄ＋＋／￥ｄ＋＋」のそれぞれの尤度を、記憶部に記憶する。
【００２６】
これにより、情報処理装置１００は、データ群１１０に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることができる。そして、情報処理装置１００は、いずれかの正規表現を利用して、ユーザの意図に沿ってデータ群１１０を加工することができる。また、情報処理装置１００は、いずれかの正規表現を利用して、ユーザの意図に沿ってデータ群１１０を加工することができるプログラムを生成してもよい。
【００２７】
ここで、情報処理装置１００が、複数の正規表現のそれぞれの正規表現の尤度に基づいて、データ群１１０を加工するプログラムを自動生成する場合があってもよい。また、情報処理装置１００が、複数の正規表現のそれぞれの正規表現の尤度を、情報処理装置１００とは異なる装置に送信し、データ群１１０を加工するプログラムを自動生成させる場合があってもよい。
【００２８】
（情報処理システム２００の一例）
次に、図２を用いて、図１に示した情報処理装置１００を適用した、情報処理システム２００の一例について説明する。
【００２９】
図２は、情報処理システム２００の一例を示す説明図である。図２において、情報処理システム２００は、情報処理装置１００と、１以上のクライアント装置２０１とを含む。
【００３０】
情報処理システム２００において、情報処理装置１００とクライアント装置２０１とは、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００３１】
情報処理装置１００は、データ群を記憶する。データ群は、例えば、情報処理システム２００のユーザによってクライアント装置２０１を介して情報処理装置１００に入力される。以下の説明では、情報処理システム２００のユーザを、単に「ユーザ」と表記する場合がある。データ群は、例えば、予め情報処理装置１００に記憶されていてもよい。
【００３２】
情報処理装置１００は、複数の正規表現を記憶する。情報処理装置１００は、例えば、データ群に含まれる１以上のデータと、１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、データ群の加工に利用可能である複数の正規表現を生成して記憶する。１以上のデータは、例えば、ユーザによってクライアント装置２０１を介して指定される。加工例を示すデータは、例えば、ユーザによってクライアント装置２０１を介して情報処理装置１００に入力される。以下の説明では、加工例を示すデータを「加工データ」と表記する場合がある。
【００３３】
情報処理装置１００は、複数の正規表現のそれぞれの正規表現の尤度を算出する。情報処理装置１００は、複数の正規表現のそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を利用して、データ群を加工する。また、情報処理装置１００は、複数の正規表現のそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を利用して、データ群を加工するプログラムを生成してもよい。
【００３４】
情報処理装置１００は、複数の正規表現のそれぞれの正規表現の尤度を、クライアント装置２０１に表示させ、ユーザに、プログラムの生成に利用する正規表現を選択させてもよい。情報処理装置１００は、例えば、サーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などである。
【００３５】
クライアント装置２０１は、情報処理装置１００と通信可能なコンピュータである。クライアント装置２０１は、ユーザの操作入力に基づき、データ群を情報処理装置１００に送信する。クライアント装置２０１は、ユーザの操作入力に基づき、データ群に含まれる１以上のデータの指定を受け付け、データ群に含まれる１以上のデータが指定されたことを、情報処理装置１００に送信する。クライアント装置は、データ群に含まれる１以上のデータの入力を受け付けることを、データ群に含まれる１以上のデータの指定を受け付けることとして扱ってもよい。クライアント装置２０１は、指定の１以上のデータのそれぞれのデータの加工例を示すデータを、情報処理装置１００に送信する。クライアント装置２０１は、例えば、ＰＣ、タブレット端末、または、スマートフォンなどである。
【００３６】
これにより、情報処理システム２００は、ユーザに、データ群を加工するプログラムを生成するサービスを提供する。ユーザは、クライアント装置２０１を介して、情報処理装置１００に、データ群を取得させ、データ群に含まれる１以上のデータのそれぞれのデータの加工例を示すデータを取得させれば、データ群を加工するプログラムを取得することができる。また、ユーザは、複数の正規表現を把握し、いずれの正規表現がデータ群の加工に適するかを把握することができる。
【００３７】
ここでは、情報処理装置１００と、クライアント装置２０１とが別々の装置である場合について説明したが、これに限らない。例えば、情報処理装置１００が、クライアント装置２０１としても動作可能な場合があってもよい。この場合、情報処理システム２００は、クライアント装置２０１を含まなくてもよい。
【００３８】
（情報処理装置１００のハードウェア構成例）
次に、図３を用いて、情報処理装置１００のハードウェア構成例について説明する。
【００３９】
図３は、情報処理装置１００のハードウェア構成例を示すブロック図である。図３において、情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、記録媒体Ｉ／Ｆ３０４と、記録媒体３０５とを有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００４０】
ここで、ＣＰＵ３０１は、情報処理装置１００の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００４１】
ネットワークＩ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ３０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ３０３は、例えば、モデムやＬＡＮアダプタなどである。
【００４２】
記録媒体Ｉ／Ｆ３０４は、ＣＰＵ３０１の制御に従って記録媒体３０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ３０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体３０５は、記録媒体Ｉ／Ｆ３０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体３０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体３０５は、情報処理装置１００から着脱可能であってもよい。
【００４３】
情報処理装置１００は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置１００は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を複数有していてもよい。また、情報処理装置１００は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を有していなくてもよい。
【００４４】
（クライアント装置２０１のハードウェア構成例）
次に、図４を用いて、図２に示した情報処理システム２００に含まれるクライアント装置２０１のハードウェア構成例について説明する。
【００４５】
図４は、クライアント装置２０１のハードウェア構成例を示すブロック図である。図４において、クライアント装置２０１は、ＣＰＵ４０１と、メモリ４０２と、ネットワークＩ／Ｆ４０３と、記録媒体Ｉ／Ｆ４０４と、記録媒体４０５と、ディスプレイ４０６と、入力装置４０７とを有する。また、各構成部は、バス４００によってそれぞれ接続される。
【００４６】
ここで、ＣＰＵ４０１は、クライアント装置２０１の全体の制御を司る。メモリ４０２は、例えば、ＲＯＭ、ＲＡＭおよびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ４０１のワークエリアとして使用される。メモリ４０２に記憶されるプログラムは、ＣＰＵ４０１にロードされることで、コーディングされている処理をＣＰＵ４０１に実行させる。
【００４７】
ネットワークＩ／Ｆ４０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ４０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ４０３は、例えば、モデムやＬＡＮアダプタなどである。
【００４８】
記録媒体Ｉ／Ｆ４０４は、ＣＰＵ４０１の制御に従って記録媒体４０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ４０４は、例えば、ディスクドライブ、ＳＳＤ、ＵＳＢポートなどである。記録媒体４０５は、記録媒体Ｉ／Ｆ４０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体４０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体４０５は、クライアント装置２０１から着脱可能であってもよい。
【００４９】
ディスプレイ４０６は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ４０６は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、液晶ディスプレイ、有機ＥＬ（Ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイなどである。入力装置４０７は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置４０７は、キーボードやマウスなどであってもよく、また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００５０】
クライアント装置２０１は、上述した構成部のほか、例えば、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、クライアント装置２０１は、記録媒体Ｉ／Ｆ４０４や記録媒体４０５を複数有していてもよい。また、クライアント装置２０１は、記録媒体Ｉ／Ｆ４０４や記録媒体４０５を有していなくてもよい。
【００５１】
（情報処理装置１００の機能的構成例）
次に、図５を用いて、情報処理装置１００の機能的構成例について説明する。
【００５２】
図５は、情報処理装置１００の機能的構成例を示すブロック図である。情報処理装置１００は、記憶部５００と、取得部５０１と、生成部５０２と、算出部５０３と、選択部５０４と、加工部５０５と、出力部５０６とを含む。
【００５３】
記憶部５００は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域によって実現される。以下では、記憶部５００が、情報処理装置１００に含まれる場合について説明するが、これに限らない。例えば、記憶部５００が、情報処理装置１００とは異なる装置に含まれ、記憶部５００の記憶内容が情報処理装置１００から参照可能である場合があってもよい。
【００５４】
取得部５０１〜出力部５０６は、制御部の一例として機能する。取得部５０１〜出力部５０６は、具体的には、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、ネットワークＩ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【００５５】
記憶部５００は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部５００は、例えば、データ群を記憶する。データ群は、種類が同じ複数のデータの集合である。データ群は、例えば、形式が同じ複数のデータの集合である。データは、例えば、表形式である。データ群は、例えば、取得部５０１に取得されたことに応じて、記憶部５００に記憶される。
【００５６】
記憶部５００は、例えば、複数の正規表現を記憶する。複数の正規表現は、データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である。複数の正規表現は、例えば、データ群に含まれるデータと、当該データの加工例を示す加工データとに基づき生成される。複数の正規表現は、具体的には、データ群に含まれる１以上のデータと、当該１以上のデータのそれぞれのデータの加工例を示す加工データとに基づいて生成される。複数の正規表現は、例えば、取得部５０１に取得され、または、生成部５０２に生成されたことに応じて、記憶部５００に記憶される。
【００５７】
記憶部５００は、例えば、複数の正規表現を生成する際に用いられる加工データを記憶する。記憶部５００は、具体的には、データ群に含まれるデータに対応付けて、当該データの加工例を示す加工データを記憶する。記憶部５００は、データ群に含まれる１以上のデータのそれぞれのデータに対応付けて、当該データの加工例を示す加工データを記憶する。加工データは、例えば、取得部５０１に取得されたことに応じて、記憶部５００に記憶される。
【００５８】
取得部５０１は、各機能部の処理に用いられる各種情報を取得する。取得部５０１は、取得した各種情報を、記憶部５００に記憶し、または、各機能部に出力する。また、取得部５０１は、記憶部５００に記憶しておいた各種情報を、各機能部に出力してもよい。取得部５０１は、例えば、情報処理装置１００の利用者の操作入力に基づき、各種情報を取得する。取得部５０１は、例えば、情報処理装置１００とは異なる装置から、各種情報を受信してもよい。
【００５９】
取得部５０１は、データ群を取得する。取得部５０１は、例えば、データ群を、クライアント装置２０１から受信する。取得部５０１は、データ群に含まれるデータの指定を受け付ける。取得部５０１は、出力部５０６がデータ群をクライアント装置２０１に表示させたことに応じて、ユーザからの、データ群に含まれるデータの指定を、クライアント装置２０１を介して受け付ける。取得部５０１は、例えば、データ群に含まれる１以上のデータの指定を受け付ける。取得部５０１は、例えば、データ群に含まれる１以上のデータを、クライアント装置２０１から受信することにより、指定を受け付けてもよい。
【００６０】
取得部５０１は、指定されたデータの加工例を示す加工データを取得する。取得部５０１は、例えば、データ群に含まれる１以上のデータのそれぞれのデータに対応付けて、当該データの加工例を示す加工データを、クライアント装置２０１から受信する。取得部５０１は、情報処理装置１００において複数の正規表現を生成しない場合には、複数の正規表現を取得してもよい。取得部５０１は、例えば、複数の正規表現を、情報処理装置１００とは異なる装置から受信する。この場合には、情報処理装置１００は、生成部５０２を含まなくてもよい。
【００６１】
生成部５０２は、複数の正規表現を生成する。生成部５０２は、データ群に含まれる指定されたデータと、指定されたデータの加工例を示す加工データとに基づいて、複数の正規表現を生成する。生成部５０２は、例えば、データ群に含まれる指定された１以上のデータと、指定された１以上のデータのそれぞれのデータの加工例を示す加工データとに基づいて、複数の正規表現を生成する。
【００６２】
生成部５０２は、具体的には、指定されたデータと、指定されたデータの加工例を示す加工データとに基づいて、指定されたデータ上の加工する箇所を特定し、指定されたデータ上の加工する箇所を特定可能にする複数の正規表現を生成する。これにより、生成部５０２は、データ群の加工に利用する候補となる複数の正規表現を生成することができ、算出部５０３に、それぞれの正規表現の尤度を算出させることができる。
【００６３】
また、生成部５０２は、加工内容を生成してもよい。加工内容は、正規表現を利用して探索された、データ群のそれぞれのデータ上の加工する箇所を、どのように加工するかを示す。生成部５０２は、データ群に含まれる指定されたデータと、指定されたデータの加工例を示す加工データとに基づいて、加工内容を生成する。生成部５０２は、例えば、データ群に含まれる指定された１以上のデータと、指定された１以上のデータのそれぞれのデータの加工例を示す加工データとに基づいて、加工内容を生成する。これにより、生成部５０２は、加工部５０５に加工内容を参照させることができる。
【００６４】
算出部５０３は、それぞれの正規表現の尤度を算出する。尤度は、正規表現をデータ群に対する加工に利用する尤もらしさを示す指標値である。尤度は、例えば、データ群の加工にあたり、どの程度ユーザの意図に沿って、加工する箇所を特定することができるかを示す指標値である。尤度は、データ群のそれぞれのデータ上の、正規表現に対応する箇所について、所定の規則性が現れるほど、値が大きくなり、当該正規表現が、ユーザの意図に沿って、データ群のそれぞれのデータ上から、加工する箇所を特定可能であることを意味する。尤度は、具体的には、図７〜図１８に後述する成功度である。
【００６５】
算出部５０３は、取得した複数の正規表現のそれぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所に基づいて、当該正規表現の尤度を算出する。算出部５０３は、例えば、それぞれの正規表現について、データ群のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、データ群のそれぞれのデータから分割した部分データの数に基づいて、当該正規表現の尤度を算出する。
【００６６】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、データ群のそれぞれのデータから分割した部分データの数は、同じ数になる傾向があると考えられる。
【００６７】
このため、算出部５０３は、具体的には、それぞれの正規表現について、データ群のそれぞれのデータから、当該正規表現に対応する箇所を基準に分割した部分データの数についての分散が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００６８】
ここで、例えば、正規表現は、指定された１以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された１以上のデータのそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、指定された１以上のデータのそれぞれのデータから分割した部分データの数は、ユーザの意図を表す基準となりうる。
【００６９】
従って、算出部５０３は、具体的には、それぞれの正規表現について、１以上のデータのそれぞれのデータから分割した部分データの数と、データ群に含まれる１以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの数とを比較する。そして、算出部５０３は、比較した結果に基づいて、それぞれの正規表現の尤度を算出する。
【００７０】
算出部５０３は、より具体的には、それぞれの正規表現について、１以上のデータのそれぞれのデータから分割した部分データの数と、データ群に含まれる１以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの数との差分を算出する。そして、算出部５０３は、それぞれの正規表現について、算出した差分が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【００７１】
算出部５０３は、より具体的には、それぞれの正規表現について、１以上のデータのそれぞれのデータから分割した部分データの数と、残余のデータのそれぞれのデータから分割した部分データの数との差分絶対値を算出してもよい。そして、算出部５０３は、それぞれの正規表現について、算出した差分絶対値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【００７２】
また、算出部５０３は、より具体的には、それぞれの正規表現について、残余のデータのそれぞれのデータから分割した部分データの数の、１以上のデータのそれぞれのデータから分割した部分データの数との差分絶対値の統計値を算出してもよい。統計値は、最小値、最大値、平均値、最頻値などである。そして、算出部５０３は、それぞれの正規表現について、算出した差分絶対値の統計値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００７３】
算出部５０３は、それぞれの正規表現について、データ群のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、異なる２つのデータから分割した部分データ同士の類似度に基づいて、当該正規表現の尤度を算出する。算出部５０３は、例えば、それぞれの正規表現について、データ群のそれぞれのデータから当該正規表現に対応する箇所を基準に分割した部分データの中から選択した、第１の部分データと第２の部分データとの類似度に基づいて、当該正規表現の尤度を算出する。
【００７４】
第１の部分データの位置と、第２の部分データの位置とは、例えば、対応関係があることが好ましい。対応関係は、例えば、先頭から何番目の部分データであるかが対応することを意味する。対応関係は、具体的には、正規表現に対応する箇所を基準にした、相対的な位置が共通することを意味する。類似度は、第１の部分データと第２の部分データとの編集距離によって表現される。
【００７５】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、異なる２つのデータから当該正規表現に対応する箇所を基準に分割した部分データ同士の類似度は、大きくなる傾向があると考えられる。
【００７６】
このため、算出部５０３は、具体的には、それぞれの正規表現について、異なる２つのデータから当該正規表現に対応する箇所を基準に分割した部分データ同士の類似度が大きいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００７７】
ここで、例えば、正規表現は、指定された１以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された１以上のデータのそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、指定された１以上のデータのそれぞれのデータから分割した部分データは、ユーザの意図を表す基準となりうる。
【００７８】
従って、算出部５０３は、具体的には、それぞれの正規表現について、指定された１以上のデータのそれぞれのデータから分割した部分データの中から、第１の部分データを選択する。算出部５０３は、それぞれの正規表現について、データ群に含まれる１以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの中から、第１の部分データに対応する位置に存在する第２の部分データを選択する。算出部５０３は、それぞれの正規表現について、選択した第１の部分データと第２の部分データとの類似度に基づいて、正規表現の尤度を算出する。
【００７９】
算出部５０３は、より具体的には、それぞれの正規表現について、選択した第１の部分データと第２の部分データとの類似度が大きいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【００８０】
また、算出部５０３は、より具体的には、それぞれの正規表現について、第２の部分データを複数選択し、また、第２の部分データごとに対応する第１の部分データを１以上選択する場合があってもよい。この場合、算出部５０３は、それぞれの正規表現について、選択した第２の部分データごとに、第２の部分データに対応する第１の部分データのそれぞれとの類似度を算出し、類似度の統計値を算出する。統計値は、最小値、最大値、平均値、最頻値などである。そして、算出部５０３は、それぞれの正規表現について、算出した類似度の統計値が大きいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００８１】
算出部５０３は、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置に基づいて、当該正規表現の尤度を算出する。位置は、例えば、正規表現に対応する箇所の先頭が、データ上の何番目の文字であるかを示す。
【００８２】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置は、同じ位置になる傾向があると考えられる。
【００８３】
このため、算出部５０３は、具体的には、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置の分散が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００８４】
ここで、例えば、正規表現は、指定された１以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された１以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置は、ユーザの意図を表す基準となりうる。
【００８５】
従って、算出部５０３は、具体的には、それぞれの正規表現について、１以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置を特定する。算出部５０３は、それぞれの正規表現について、データ群に含まれる１以上のデータを除いた残余のデータのそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置を特定する。算出部５０３は、それぞれの正規表現について、特定した位置同士を比較した結果に基づいて、当該正規表現の尤度を算出する。
【００８６】
算出部５０３は、より具体的には、それぞれの正規表現について、特定した位置同士の差分を算出する。そして、算出部５０３は、それぞれの正規表現について、算出した差分が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【００８７】
算出部５０３は、より具体的には、それぞれの正規表現について、特定した位置同士の差分絶対値を算出してもよい。そして、算出部５０３は、それぞれの正規表現について、算出した差分絶対値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【００８８】
また、算出部５０３は、より具体的には、それぞれの正規表現について、残余のデータのそれぞれのデータ上から特定した位置の、１以上のデータのそれぞれのデータ上から特定した位置との差分絶対値の統計値を算出してもよい。統計値は、最小値、最大値、平均値、最頻値などである。そして、算出部５０３は、それぞれの正規表現について、算出した差分絶対値の統計値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００８９】
算出部５０３は、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所の数に基づいて、当該正規表現の尤度を算出する。
【００９０】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所の数は、同じ数になる傾向があると考えられる。
【００９１】
このため、算出部５０３は、具体的には、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所の数の分散が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００９２】
ここで、例えば、正規表現は、指定された１以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された１以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所の数は、ユーザの意図を表す基準となりうる。
【００９３】
従って、算出部５０３は、具体的には、それぞれの正規表現について、１以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所の数を算出する。算出部５０３は、それぞれの正規表現について、データ群に含まれる１以上のデータを除いた残余のデータのそれぞれのデータ上の、当該正規表現に対応する箇所の数を算出する。算出部５０３は、それぞれの正規表現について、１以上のデータのそれぞれのデータについて算出した数と、残余のデータのそれぞれのデータについて算出した数との差分に基づいて、当該正規表現の尤度を算出する。
【００９４】
算出部５０３は、より具体的には、それぞれの正規表現について、差分が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００９５】
選択部５０４は、複数の正規表現のいずれかの正規表現を選択する。選択部５０４は、例えば、算出したそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を選択する。選択部５０４は、具体的には、尤度が最も大きい正規表現を選択する。選択部５０４は、具体的には、尤度が閾値以上の１以上の正規表現のいずれかの正規表現を選択してもよい。選択部５０４は、具体的には、尤度が大きい方から所定の順位までの１以上の正規表現を選択してもよい。これにより、選択部５０４は、ユーザの意図に沿ってデータ群を加工可能にすることができると判断される正規表現を、加工部５０５に出力することができる。このため、選択部５０４は、加工部５０５が、ユーザの意図に沿ってデータ群を加工する確率の向上を図ることができる。
【００９６】
選択部５０４は、複数の正規表現のいずれかの正規表現の選択を受け付けてもよい。選択部５０４は、例えば、表示部がそれぞれの正規表現の尤度をクライアント装置２０１に表示させたことに応じて、ユーザからの、いずれかの正規表現の選択を、クライアント装置２０１を介して受け付ける。これにより、選択部５０４は、ユーザの意図に沿ってデータ群を加工可能にすることができると判断される正規表現を、加工部５０５に出力することができる。このため、選択部５０４は、加工部５０５が、ユーザの意図に沿ってデータ群を加工する確率の向上を図ることができる。
【００９７】
加工部５０５は、データ群を加工する。加工部５０５は、選択したいずれかの正規表現を利用して、データ群を加工する。加工部５０５は、例えば、選択したいずれかの正規表現と、生成部５０２が生成した加工内容とに基づいて、データ群を加工する。これにより、加工部５０５は、データ群を加工することができ、ユーザが人手でデータ群を加工する場合に比べて、ユーザの作業量の低減化を図ることができる。
【００９８】
加工部５０５は、データ群を加工するプログラムを生成してもよい。加工部５０５は、選択したいずれかの正規表現を利用して、データ群を加工するプログラムを生成する。加工部５０５は、例えば、選択したいずれかの正規表現と、生成部５０２が生成した加工内容とに基づいて、データ群を加工するプログラムを生成する。これにより、加工部５０５は、データ群を加工するプログラムを、ユーザに提供可能にすることができる。
【００９９】
出力部５０６は、各種情報を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークＩ／Ｆ３０３による外部装置への送信、または、メモリ３０２や記録媒体３０５などの記憶領域への記憶である。出力部５０６は、例えば、データ群を出力する。出力部５０６は、具体的には、データ群を、クライアント装置２０１に送信して表示させる。これにより、出力部５０６は、データ群をユーザに参照させ、ユーザが、加工データを作成しやすくすることができる。
【０１００】
出力部５０６は、いずれかの機能部の処理結果を出力する。これにより、出力部５０６は、各機能部の処理結果を、情報処理システム２００のユーザに通知可能にすることができ、情報処理システム２００の利便性の向上を図ることができる。
【０１０１】
出力部５０６は、算出したそれぞれの正規表現の尤度を出力する。出力部５０６は、例えば、それぞれの正規表現に、当該正規表現の尤度を対応付けて、クライアント装置２０１に送信して表示させる。これにより、出力部５０６は、それぞれの正規表現の尤度をユーザに参照させ、ユーザが、データ群の加工に利用する正規表現を選択しやすくすることができる。
【０１０２】
出力部５０６は、データ群を加工した結果を出力する。出力部５０６は、例えば、データ群を加工した結果を、クライアント装置２０１に送信して表示させる。これにより、出力部５０６は、データ群を加工した結果を、ユーザに参照させることができる。
【０１０３】
出力部５０６は、データ群を加工するプログラムを出力してもよい。出力部５０６は、データ群を加工するプログラムを、クライアント装置２０１に送信する。これにより、出力部５０６は、データ群を加工するプログラムを、ユーザが利用可能にすることができる。そして、出力部５０６は、ユーザが、データ群を加工する際にかかる作業量の低減化を図ることができる。また、出力部５０６は、ユーザが、データ群と同種の別のデータ群を加工する際に、プログラムを流用可能にすることができ、ユーザの作業量の低減化を図ることができる。
【０１０４】
（情報処理装置１００の具体的な機能的構成例）
次に、図６を用いて、情報処理装置１００の具体的な機能的構成例について説明する。
【０１０５】
図６は、情報処理装置１００の具体的な機能的構成例を示すブロック図である。情報処理装置１００は、元データ表示部６１０と、ユーザ入力部６２０と、正規表現推定部６３０と、元データ加工部６４０とを含む。正規表現推定部６３０は、候補推定部６３１と、成功度算出部６３２と、正規表現選択部６３３とを含む。
【０１０６】
元データ表示部６１０〜元データ加工部６４０は、例えば、図５に示した取得部５０１〜出力部５０６を実現する。元データ表示部６１０〜元データ加工部６４０は、具体的には、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、ネットワークＩ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【０１０７】
元データ表示部６１０は、元データ群６０１を読み込み、クライアント装置２０１に表示させる。ユーザ入力部６２０は、クライアント装置２０１から、元データ群６０１のいずれかの元データの指定と、指定された元データを加工した加工例を示す加工データの入力とを受け付け、推定指示を受け付ける。ユーザ入力部６２０は、推定指示に応じて正規表現推定部６３０の実行フラグを有効に設定し、正規表現推定部６３０に、指定された元データと、入力された加工データとを出力し、正規表現推定部６３０に、複数の正規表現を生成させる。
【０１０８】
正規表現推定部６３０は、実行フラグが有効である場合、指定された元データと、入力された加工データとを読み込み、複数の正規表現を生成する。候補推定部６３１は、指定された元データと、入力された加工データとに基づいて、元データ群６０１の加工に利用する候補となる複数の正規表現を推定し、成功度算出部６３２に出力する。成功度算出部６３２は、元データ群６０１に基づいて、複数の正規表現のそれぞれの正規表現の成功度を算出し、正規表現選択部６３３に出力する。正規表現選択部６３３は、それぞれの正規表現の成功度に基づいて、候補となる複数の正規表現のいずれかの正規表現を選択し、元データ加工部６４０に出力し、元データ加工部６４０に元データ群６０１を加工させる。
【０１０９】
元データ加工部６４０は、正規表現を利用して、元データ群６０１を加工する。元データ加工部６４０は、元データ群６０１を加工した加工後データ群６０２を出力する。
【０１１０】
（情報処理装置１００の動作例）
次に、図７および図８を用いて、情報処理装置１００の動作例について説明する。
【０１１１】
図７および図８は、情報処理装置１００の動作例を示す説明図である。図７において、情報処理装置１００は、元データ群を受け付ける。元データ群は、例えば、元データ７１０を含む。情報処理装置１００は、ユーザが作成した元データ７１０に対応する加工データ７２０を受け付ける。
【０１１２】
以下の説明では、加工データ７２０が存在する元データ７１０を「ラベルありの元データ７１０」と表記する場合がある。また、元データ群は、元データ７３０を含む。図７の例では、元データ７３０に対応する加工データは、存在しない。以下の説明では、加工データが存在しない元データ７３０を「ラベルなしの元データ７３０」と表記する場合がある。
【０１１３】
情報処理装置１００は、符号７０１に示すように、元データ７１０と加工データ７２０とに基づいて、元データ群の加工に利用する候補となる複数の正規表現を生成する。複数の正規表現は、例えば、表７４０に示される正規表現である。
【０１１４】
情報処理装置１００は、符号７０２に示すように、元データ群に基づいて、複数の正規表現のそれぞれの正規表現の成功度を算出する。成功度は、ユーザの意図に沿った加工が行われる確率が高いと判断されるほど、値が大きくなる。それぞれの正規表現の成功度は、例えば、表７５０に示される成功度である。
【０１１５】
情報処理装置１００は、符号７０３に示すように、それぞれの正規表現の成功度に基づいて、複数の正規表現のいずれかの正規表現を、データ群の加工に利用する正規表現に選択する。情報処理装置１００は、例えば、最も成功度が大きい正規表現「￥ｄ＋＋／￥ｄ＋＋」を選択する。次に、図８の説明に移行する。
【０１１６】
図８において、情報処理装置１００は、選択した最も成功度が大きい正規表現「￥ｄ＋＋／￥ｄ＋＋」を利用して、ラベルなしの元データ７３０を加工する。これにより、情報処理装置１００は、ラベルありの元データ７１０を加工データ７２０に加工する際と同様の加工内容で、ラベルなしの元データ７３０を加工することができる。情報処理装置１００は、例えば、ラベルなしの元データ７３０から、「９／３」、「１／２４」、「１２／１４」などを抽出する加工を行うことができる。
【０１１７】
（それぞれの正規表現の成功度を算出する流れ）
次に、図９を用いて、それぞれの正規表現の成功度を算出する流れについて説明する。
【０１１８】
図９は、それぞれの正規表現の成功度を算出する流れを示す説明図である。図９の例では、情報処理装置１００が、正規表現「￥ｄ／￥ｄ」の成功度を算出する場合について説明する。図９において、情報処理装置１００は、元データ群９００を記憶する。
【０１１９】
元データ群９００は、元データ９１０，９２０，９３０，９４０，９５０を含む。元データ９１０，９２０は、ラベルありである。元データ９３０，９４０，９５０は、ラベルなしである。
【０１２０】
情報処理装置１００は、元データ９１０，９２０，９３０，９４０，９５０を、正規表現「￥ｄ／￥ｄ」に対応する箇所を基準に分割する。元データ９１０は、例えば、部分データ９１１，９１２に分割される。元データ９２０は、例えば、部分データ９２１，９２２に分割される。元データ９３０は、例えば、部分データ９３１，９３２に分割される。元データ９４０は、例えば、部分データ９４１，９４２に分割される。元データ９５０は、例えば、部分データ９５１，９５２，９５３に分割される。
【０１２１】
情報処理装置１００は、分割結果に基づいて、表９６０に示すように、それぞれのラベルなしの元データ９３０，９４０，９５０について、レコード評価値「０」、「２」、「６」を算出する。レコード評価値は、分割数評価値と距離評価値と位置評価値との合計評価値である。分割数評価値と距離評価値と位置評価値との合計評価値は、例えば、図１０および図１１に後述するように算出される。情報処理装置１００は、正規表現「￥ｄ／￥ｄ」の成功度として、レコード評価値の総和の逆数「１／８」を算出する。
【０１２２】
（レコード評価値を算出する一例）
次に、図１０および図１１を用いて、情報処理装置１００が、レコード評価値を算出する一例について説明する。
【０１２３】
図１０および図１１は、レコード評価値を算出する一例を示す説明図である。図１０において、情報処理装置１００は、分割結果に基づいて、マッチ情報１０００を生成する。マッチ情報１０００は、マッチ位置配列１０１０と、マッチインデックス配列１０２０とを含む。
【０１２４】
マッチ位置配列１０１０は、元データ９１０，９２０，９３０，９４０，９５０のマッチ位置を含む。マッチ位置は、元データ９１０，９２０，９３０，９４０，９５０上で、正規表現「￥ｄ／￥ｄ」に対応する箇所の先頭が、何文字目に位置するかを示す。マッチ位置は、正規表現「￥ｄ／￥ｄ」に対応する箇所の先頭が、ｎ文字目に位置する場合、ｎ−１の値が設定される。
【０１２５】
マッチインデックス配列１０２０は、元データ９１０，９２０，９３０，９４０，９５０のマッチインデックスを含む。マッチインデックスは、元データ９１０，９２０，９３０，９４０，９５０上で、正規表現「￥ｄ／￥ｄ」に対応する箇所を含む部分データが、先頭から何番目の部分データであるかを示す。マッチインデックスは、正規表現「￥ｄ／￥ｄ」に対応する箇所を含む部分データが、先頭からｎ番目の部分データである場合、ｎ−１の値が設定される。次に、図１１の説明に移行する。
【０１２６】
図１１において、情報処理装置１００は、マッチ情報１０００を参照して、分割結果に基づいて、元データ９３０，９４０，９５０に対応する分割数評価値と距離評価値と位置評価値とを算出する。
【０１２７】
分割数評価値は、元データ９３０，９４０，９５０の分割数が、元データ９１０，９２０の分割数と、どの程度異なるかを示す評価値である。分割数は、部分データの数である。分割数評価値は、例えば、分割数の差分絶対値によって表現される。元データ９３０，９４０，９５０に対応する分割数評価値は、例えば、表１１０１に示すようになる。情報処理装置１００が、分割数評価値を算出する具体例については、例えば、図１２を用いて後述する。
【０１２８】
距離評価値は、元データ９３０，９４０，９５０の部分データが、当該部分データと対応する位置に存在する、元データ９１０，９２０の部分データと、どの程度異なるかを示す評価値である。距離評価値は、部分データ間の編集距離により表現される。元データ９３０，９４０，９５０に対応する距離評価値は、例えば、表１１０２に示すようになる。情報処理装置１００が、距離評価値を算出する具体例については、例えば、図１３を用いて後述する。
【０１２９】
位置評価値は、元データ９３０，９４０，９５０のマッチ位置が、元データ９１０，９２０のマッチ位置と、どの程度異なるかを示す評価値である。位置評価値は、マッチ位置の差分絶対値により表現される。元データ９３０，９４０，９５０に対応する位置評価値は、例えば、表１１０３に示すようになる。情報処理装置１００が、位置評価値を算出する具体例については、例えば、図１４を用いて後述する。
【０１３０】
情報処理装置１００は、元データ９３０，９４０，９５０に対応する分割数評価値と距離評価値と位置評価値との合計を、元データ９３０，９４０，９５０に対応するレコード評価値として算出する。元データ９３０，９４０，９５０に対応するレコード評価値は、表１１０４に示すようになる。情報処理装置１００が、レコード評価値を算出する具体例については、例えば、図１５を用いて後述する。
【０１３１】
（レコード評価値を算出し、成功度を算出する具体例）
次に、図１２〜図１５を用いて、情報処理装置１００が、正規表現「￥ｄ／￥ｄ」に関し、元データ９３０，９４０，９５０に対応する分割数評価値と距離評価値と位置評価値とを算出し、レコード評価値を算出し、成功度を算出する具体例について説明する。まず、図１２の説明に移行し、情報処理装置１００が、分割数評価値を算出する具体例について説明する。
【０１３２】
図１２は、分割数評価値を算出する具体例を示す説明図である。図１２において、情報処理装置１００は、正規表現「￥ｄ／￥ｄ」に基づく分割結果に基づいて、元データ９１０，９２０，９３０，９４０，９５０の分割数「２」、「２」、「２」、「２」、「３」を算出する。元データ９１０，９２０，９３０，９４０，９５０の分割数は、例えば、表１２００に示すようになる。
【０１３３】
情報処理装置１００は、ラベルなしの元データ９３０の分割数と、ラベルありの元データ９１０，９２０の分割数それぞれとの差分絶対値の最小値を、元データ９３０に対応する分割数評価値として算出する。情報処理装置１００は、例えば、元データ９３０の分割数評価値「０」を算出する。情報処理装置１００は、同様に、ラベルなしの元データ９４０，９５０の分割数評価値「０」、「１」を算出する。元データ９３０，９４０，９５０に対応する分割数評価値は、例えば、表１２１０に示すようになる。
【０１３４】
ここでは、情報処理装置１００が、分割数評価値の算出に、差分絶対値の最小値を用いる場合について説明したが、これに限らない。例えば、情報処理装置１００が、分割数評価値の算出に、最小値以外の差分絶対値の統計値を用いる場合があってもよい。統計値は、例えば、平均値、最大値、最頻値などである。次に、図１３の説明に移行し、情報処理装置１００が、距離評価値を算出する具体例について説明する。
【０１３５】
図１３は、距離評価値を算出する具体例を示す説明図である。図１３において、情報処理装置１００は、正規表現「￥ｄ／￥ｄ」に基づくマッチインデックスを基準に、相対的に同一の位置に存在する部分データのグループを特定する。
【０１３６】
情報処理装置１００は、例えば、部分データ９５１単独のグループ１３０１を特定する。情報処理装置１００は、例えば、部分データ９１１，９２１，９３１，９４１，９５２のグループ１３０２を特定する。情報処理装置１００は、例えば、部分データ９１２，９２２，９３２，９４２，９５３のグループ１３０３を特定する。
【０１３７】
情報処理装置１００は、グループ１３０３の部分データ９１２，９２２，９３２，９４２，９５３を、正規表現に置換する。正規表現は、例えば、表１３００に示すようになる。情報処理装置１００は、ラベルなしの元データ９３０の部分データ９３２に対応する正規表現と、ラベルありの元データ９１０，９２０の部分データ９１２，９２２に対応する正規表現との編集距離のうち、最小の編集距離「０」を算出する。
【０１３８】
情報処理装置１００は、同様に、グループ１３０３について、ラベルなしの元データ９４０，９５０に対応する最小の編集距離「２」、「２」を算出する。情報処理装置１００は、同様に、グループ１３０２について、ラベルなしの元データ９３０，９４０，９５０に対応する最小の編集距離「０」、「０」、「０」を算出する。
【０１３９】
情報処理装置１００は、グループ１３０１の部分データ９５１を、正規表現に置換する。ここで、グループ１３０１は、ラベルありの元データ９１０，９２０の部分データ９１１，９１２，９２１，９２２のいずれも含まないため、ラベルありの元データ９１０，９２０に対応する正規表現を「ｎｕｌｌ」に設定する。情報処理装置１００は、ラベルなしの元データ９５０の部分データ９５１に対応する正規表現と「ｎｕｌｌ」との編集距離「２」を算出する。
【０１４０】
情報処理装置１００は、ラベルなしの元データ９３０，９４０，９５０に対応する編集距離の総和「０＋０」、「０＋２」、「２＋０＋２」を、距離評価値として算出する。ここでは、情報処理装置１００が、距離評価値の算出に、最小の編集距離を用いる場合について説明したが、これに限らない。例えば、情報処理装置１００が、距離評価値の算出に、最小値以外の編集距離の統計値を用いる場合があってもよい。統計値は、例えば、平均値、最大値、最頻値などである。次に、図１４の説明に移行し、情報処理装置１００が、位置評価値を算出する具体例について説明する。
【０１４１】
図１４は、位置評価値を算出する具体例を示す説明図である。図１４において、情報処理装置１００は、正規表現「￥ｄ／￥ｄ」に基づくマッチ位置配列１０１０を参照して、ラベルなしの元データ９３０のマッチ位置と、ラベルありの元データ９１０，９２０のマッチ位置それぞれとを取得する。情報処理装置１００は、ラベルなしの元データ９３０のマッチ位置と、ラベルありの元データ９１０，９２０のマッチ位置それぞれとの差分絶対値の最小値を、元データ９３０に対応する位置評価値として算出する。情報処理装置１００は、例えば、元データ９３０のマッチ位置評価値「０」を算出する。
【０１４２】
情報処理装置１００は、同様に、ラベルなしの元データ９４０，９５０の位置評価値「０」、「１」を算出する。元データ９３０，９４０，９５０に対応する位置評価値は、例えば、表１４００に示すようになる。ここでは、情報処理装置１００が、位置評価値の算出に、差分絶対値の最小値を用いる場合について説明したが、これに限らない。例えば、情報処理装置１００が、位置評価値の算出に、最小値以外の差分絶対値の統計値を用いる場合があってもよい。統計値は、例えば、平均値、最大値、最頻値などである。次に、図１５の説明に移行し、情報処理装置１００が、元データ９３０，９４０，９５０に対応する分割数評価値と距離評価値と位置評価値とに基づいて、レコード評価値を算出し、成功度を算出する具体例について説明する。
【０１４３】
図１５は、レコード評価値を算出し、成功度を算出する具体例を示す説明図である。図１５において、情報処理装置１００は、元データ９３０に対応する分割数評価値「０」と距離評価値「０」と位置評価値「０」の合計「０」を、元データ９３０に対応するレコード評価値「０」として算出する。情報処理装置１００は、同様に、元データ９４０，９５０に対応するレコード評価値「２」、「６」を算出する。
【０１４４】
情報処理装置１００は、元データ９３０，９４０，９５０に対応するレコード評価値「０」、「２」、「６」の和の逆数「１／８」を、正規表現「￥ｄ／￥ｄ」の成功度「１／８」として算出する。次に、図１６〜図１８の説明に移行し、情報処理装置１００が、他の正規表現「￥ｄ＋＋／￥ｄ」、「￥ｄ／￥ｄ＋＋」、「￥ｄ＋＋／￥ｄ＋＋」の成功度を算出する具体例について説明する。
【０１４５】
図１６〜図１８は、他の正規表現の成功度を算出する具体例を示す説明図である。図１６において、情報処理装置１００は、元データ９１０，９２０，９３０，９４０，９５０を、正規表現「￥ｄ＋＋／￥ｄ」に対応する箇所を基準に分割する。元データ９１０は、例えば、部分データ１６１１，１６１２に分割される。元データ９２０は、例えば、部分データ１６２１，１６２２に分割される。元データ９３０は、例えば、部分データ１６３１，１６３２に分割される。元データ９４０は、例えば、部分データ１６４１，１６４２に分割される。元データ９５０は、例えば、部分データ１６５１，１６５２に分割される。
【０１４６】
情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ」に基づく分割結果に基づいて、図１２と同様に、分割数を算出し、分割数評価値「０」を算出する。分割数は、例えば、表１６６０に示すようになる。また、情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ」に基づく分割結果に基づいて、図１３と同様に、編集距離を算出し、距離評価値「６」を算出する。編集距離は、例えば、表１６７０に示すようになる。
【０１４７】
また、情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ」に基づく分割結果に基づいて、図１４と同様に、マッチ位置を参照して、位置評価値「０」を算出する。マッチ位置は、例えば、表１６８０に示すようになる。また、情報処理装置１００は、図１５と同様に、正規表現「￥ｄ＋＋／￥ｄ」の成功度「１／６」を算出する。次に、図１７の説明に移行する。
【０１４８】
図１７において、情報処理装置１００は、元データ９１０，９２０，９３０，９４０，９５０を、正規表現「￥ｄ／￥ｄ＋＋」に対応する箇所を基準に分割する。元データ９１０は、例えば、部分データ１７１１，１７１２に分割される。元データ９２０は、例えば、部分データ１７２１，１７２２に分割される。元データ９３０は、例えば、部分データ１７３１，１７３２に分割される。元データ９４０は、例えば、部分データ１７４１，１７４２に分割される。元データ９５０は、例えば、部分データ１７５１，１７５２，１７５３に分割される。
【０１４９】
情報処理装置１００は、正規表現「￥ｄ／￥ｄ＋＋」に基づく分割結果に基づいて、図１２と同様に、分割数を算出し、分割数評価値「１」を算出する。分割数は、例えば、表１７６０に示すようになる。また、情報処理装置１００は、正規表現「￥ｄ／￥ｄ＋＋」に基づく分割結果に基づいて、図１３と同様に、編集距離を算出し、距離評価値「６」を算出する。編集距離は、例えば、表１７７０に示すようになる。
【０１５０】
また、情報処理装置１００は、正規表現「￥ｄ／￥ｄ＋＋」に基づく分割結果に基づいて、図１４と同様に、マッチ位置を参照して、位置評価値「１」を算出する。マッチ位置は、例えば、表１７８０に示すようになる。また、情報処理装置１００は、図１５と同様に、正規表現「￥ｄ／￥ｄ＋＋」の成功度「１／８」を算出する。次に、図１８の説明に移行する。
【０１５１】
図１８において、情報処理装置１００は、元データ９１０，９２０，９３０，９４０，９５０を、正規表現「￥ｄ＋＋／￥ｄ＋＋」に対応する箇所を基準に分割する。元データ９１０は、例えば、部分データ１８１１，１８１２に分割される。元データ９２０は、例えば、部分データ１８２１，１８２２に分割される。元データ９３０は、例えば、部分データ１８３１，１８３２に分割される。元データ９４０は、例えば、部分データ１８４１，１８４２に分割される。元データ９５０は、例えば、部分データ１８５１，１８５２に分割される。
【０１５２】
情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ＋＋」に基づく分割結果に基づいて、図１２と同様に、分割数を算出し、分割数評価値「０」を算出する。分割数は、例えば、表１８６０に示すようになる。また、情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ＋＋」に基づく分割結果に基づいて、図１３と同様に、編集距離を算出し、距離評価値「４」を算出する。編集距離は、例えば、表１８７０に示すようになる。
【０１５３】
また、情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ＋＋」に基づく分割結果に基づいて、図１４と同様に、マッチ位置を参照して、位置評価値「０」を算出する。マッチ位置は、例えば、表１８８０に示すようになる。また、情報処理装置１００は、図１５と同様に、正規表現「￥ｄ＋＋／￥ｄ＋＋」の成功度「１／４」を算出する。これにより、情報処理装置１００は、元データ群９００に対する加工に、どのような正規表現を用いることが好ましいかを判断する指標となる、それぞれの正規表現の成功度を算出することができる。
【０１５４】
そして、情報処理装置１００は、それぞれの正規表現の成功度に基づいて、ユーザが、いずれの正規表現を利用して、元データ群９００を加工すれば、ユーザの意図に沿って元データ群９００が加工可能であるかを判断しやすくすることができる。情報処理装置１００は、例えば、それぞれの正規表現の成功度を、クライアント装置２０１に表示させ、ユーザに把握可能にすることができる。このため、ユーザは、元データ群９００を加工しやすくなり、作業量の低減化を図ることができる。
【０１５５】
また、情報処理装置１００は、それぞれの正規表現の成功度に基づいて、いずれかの正規表現を利用して、ユーザの意図に沿って元データ群９００を加工してもよい。また、情報処理装置１００は、それぞれの正規表現の成功度に基づいて、いずれかの正規表現を利用して、ユーザの意図に沿って元データ群９００を加工することができるプログラムを生成してもよい。次に、図１９の説明に移行し、情報処理装置１００が、それぞれの正規表現の成功度を、クライアント装置２０１に表示させる場合の、クライアント装置２０１における表示画面例について説明する。
【０１５６】
（クライアント装置２０１における表示画面例）
図１９は、クライアント装置２０１における表示画面例を示す説明図である。図１９において、情報処理装置１００は、図９〜図１８において算出した、それぞれの正規表現の成功度の一覧１９００を、クライアント装置２０１に送信する。クライアント装置２０１は、それぞれの正規表現の成功度の一覧１９００を受信すると、表示画面１９１０を表示する。
【０１５７】
クライアント装置２０１は、表示画面１９１０の表示領域１９１１上に、それぞれの正規表現の成功度の一覧１９００と、それぞれの正規表現の選択を受け付けるチェックボックス１９４０とを表示する。図１９の例では、クライアント装置２０１は、ユーザの操作入力に基づき、正規表現「￥ｄ＋＋／￥ｄ＋＋」の選択を受け付ける。
【０１５８】
クライアント装置２０１は、正規表現「￥ｄ＋＋／￥ｄ＋＋」の選択を受け付けると、正規表現「￥ｄ＋＋／￥ｄ＋＋」を、情報処理装置１００に送信する。情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ＋＋」を利用して、元データ群９００を加工し、元データ群９００と対応付けて加工後データ群１９３０を、クライアント装置２０１に送信する。クライアント装置２０１は、元データ群９００と対応付けて加工後データ群１９３０を受信すると、表示画面１９１０の表示領域１９１２上に、元データ群９００と対応付けて加工後データ群１９３０を表示する。
【０１５９】
これにより、情報処理装置１００は、それぞれの正規表現の成功度に基づいて、ユーザが、いずれの正規表現を利用して、元データ群９００を加工すれば、ユーザの意図に沿って元データ群９００が加工可能であるかを判断しやすくすることができる。情報処理装置１００は、例えば、元データ群９００のうち、ラベルなしの元データ９３０，９４０，９５０に対しても、ユーザの意図に沿って加工可能である正規表現を判断しやすくすることができる。
【０１６０】
情報処理装置１００は、例えば、それぞれの正規表現の成功度を、クライアント装置２０１に表示させ、ユーザに把握可能にすることができる。また、情報処理装置１００は、ユーザが選択した正規表現を利用して、元データ群９００を加工した結果を、ユーザに把握可能にすることができ、作業量の低減化を図ることができる。
【０１６１】
ここでは、情報処理装置１００が、元データ群９００を加工する場合について説明したが、これに限らない。例えば、クライアント装置２０１が、元データ群９００を情報処理装置１００から受信、または、元データ群９００を予め記憶しておき、元データ群９００を加工する場合があってもよい。
【０１６２】
以上の説明では、情報処理装置１００が、分割数評価値と距離評価値と位置評価値とに基づいて、レコード評価値を算出し、正規表現の成功度を算出する場合について説明したが、これに限らない。例えば、情報処理装置１００が、分割数評価値と距離評価値と位置評価値とのいずれか２種類の評価値に基づいて、レコード評価値を算出し、正規表現の成功度を算出する場合があってもよい。また、例えば、情報処理装置１００が、分割数評価値と距離評価値と位置評価値とのいずれかを、そのままレコード評価値として扱い、正規表現の成功度を算出する場合があってもよい。
【０１６３】
（受付処理手順）
次に、図２０を用いて、情報処理装置１００が実行する、受付処理手順の一例について説明する。受付処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１６４】
図２０は、受付処理手順の一例を示すフローチャートである。図２０において、元データ表示部６１０は、元データ群を読み込む（ステップＳ２００１）。そして、元データ表示部６１０は、読み込んだ元データ群を、クライアント装置２０１に表示させる（ステップＳ２００２）。
【０１６５】
次に、ユーザ入力部６２０は、クライアント装置２０１から、元データ群のいずれかの元データの指定と、指定された元データを加工する加工例を示す加工データの入力とを受け付ける（ステップＳ２００３）。そして、ユーザ入力部６２０は、クライアント装置２０１から、推定指示を受け付けたか否かを判定する（ステップＳ２００４）。
【０１６６】
ここで、推定指示を受け付けていない場合（ステップＳ２００４：Ｎｏ）、ユーザ入力部６２０は、ステップＳ２００３の処理に戻る。一方で、推定指示を受け付けている場合（ステップＳ２００４：Ｙｅｓ）、ユーザ入力部６２０は、ステップＳ２００５の処理に移行する。
【０１６７】
ステップＳ２００５では、ユーザ入力部６２０は、正規表現推定部６３０の実行フラグを有効に設定し、正規表現推定部６３０に、指定された元データと、入力された加工データとを出力し、図２１に後述する推定処理を実行させる（ステップＳ２００５）。そして、情報処理装置１００は、受付処理を終了する。これにより、情報処理装置１００は、複数の正規表現の生成に用いる各種情報を取得することができ、図２１に後述する推定処理において利用可能にすることができる。
【０１６８】
（推定処理手順）
次に、図２１を用いて、情報処理装置１００が実行する、推定処理手順の一例について説明する。推定処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１６９】
図２１は、推定処理手順の一例を示すフローチャートである。図２１において、正規表現推定部６３０は、実行フラグが有効であるか否かを判定する（ステップＳ２１０１）。
【０１７０】
ここで、実行フラグが有効ではない場合（ステップＳ２１０１：Ｎｏ）、正規表現推定部６３０は、ステップＳ２１０１の処理に戻る。一方で、実行フラグが有効である場合（ステップＳ２１０１：Ｙｅｓ）、正規表現推定部６３０は、ステップＳ２１０２の処理に移行する。
【０１７１】
ステップＳ２１０２では、正規表現推定部６３０は、ユーザ入力部６２０から、指定された元データと、入力された加工データとを読み込み、候補推定部６３１に出力する（ステップＳ２１０２）。そして、候補推定部６３１は、元データ群の加工に利用する候補となる複数の正規表現を推定し、成功度算出部６３２に出力する（ステップＳ２１０３）。
【０１７２】
次に、成功度算出部６３２は、図２２に後述する成功度算出処理を実行し、複数の正規表現のそれぞれの正規表現の成功度を、正規表現選択部６３３に出力する（ステップＳ２１０４）。そして、正規表現選択部６３３は、それぞれの正規表現の成功度に基づいて、候補となる複数の正規表現のいずれかの正規表現を選択する（ステップＳ２１０５）。
【０１７３】
次に、正規表現選択部６３３は、元データ加工部６４０に、選択した正規表現を出力し、元データ加工部６４０に、図２６に後述する加工処理を実行させる（ステップＳ２１０６）。そして、情報処理装置１００は、推定処理を終了する。これにより、情報処理装置１００は、元データ群の加工に利用する候補となる複数の正規表現を推定し、図２６に後述する加工処理において元データ群の加工に利用可能にすることができる。
【０１７４】
（成功度算出処理手順）
次に、図２２を用いて、情報処理装置１００が実行する、成功度算出処理手順の一例について説明する。成功度算出処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１７５】
図２２は、成功度算出処理手順の一例を示すフローチャートである。図２２において、成功度算出部６３２は、元データ群を読み込む（ステップＳ２２０１）。そして、成功度算出部６３２は、候補となる複数の正規表現のうち、まだ処理していない正規表現を選択する（ステップＳ２２０２）。
【０１７６】
次に、成功度算出部６３２は、図２３に後述する第１算出処理を実行する（ステップＳ２２０３）。そして、成功度算出部６３２は、図２４に後述する第２算出処理を実行する（ステップＳ２２０４）。
【０１７７】
次に、成功度算出部６３２は、図２５に後述する第３算出処理を実行する（ステップＳ２２０５）。そして、成功度算出部６３２は、候補となる複数の正規表現のうち、すべての正規表現を選択したか否かを判定する（ステップＳ２２０６）。
【０１７８】
ここで、まだ選択していない正規表現がある場合（ステップＳ２２０６：Ｎｏ）、成功度算出部６３２は、ステップＳ２２０２の処理に戻る。一方で、すべての正規表現を選択している場合（ステップＳ２２０６：Ｙｅｓ）、情報処理装置１００は、成功度算出処理を終了する。これにより、情報処理装置１００は、それぞれの正規表現の成功度を算出することができ、いずれの正規表現が、ユーザの意図に沿って元データ群を加工可能な確率が高いのかを参照可能にすることができる。
【０１７９】
（第１算出処理手順）
次に、図２３を用いて、情報処理装置１００が実行する、第１算出処理手順の一例について説明する。第１算出処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１８０】
図２３は、第１算出処理手順の一例を示すフローチャートである。図２３において、成功度算出部６３２は、元データごとに、選択した正規表現にマッチした箇所をスプリットで分割する（ステップＳ２３０１）。そして、成功度算出部６３２は、分割した配列の中で、選択した正規表現にマッチする部分のマッチインデックスを算出する（ステップＳ２３０２）。
【０１８１】
次に、成功度算出部６３２は、元データの中で、何番目の座標に、選択した正規表現にマッチした箇所が存在するかを特定する（ステップＳ２３０３）。そして、情報処理装置１００は、第１算出処理を終了する。
【０１８２】
（第２算出処理手順）
次に、図２４を用いて、情報処理装置１００が実行する、第２算出処理手順の一例について説明する。第２算出処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１８３】
図２４は、第２算出処理手順の一例を示すフローチャートである。図２４において、成功度算出部６３２は、元データ群のそれぞれの元データの分割数に基づいて、元データ群のうち対応する加工データが存在しない元データごとに、分割数評価値を算出する（ステップＳ２４０１）。
【０１８４】
次に、成功度算出部６３２は、元データ群のそれぞれの元データの部分間の編集距離に基づいて、元データ群のうち対応する加工データが存在しない元データごとに、距離評価値を算出する（ステップＳ２４０２）。
【０１８５】
次に、成功度算出部６３２は、元データ群のそれぞれの元データの中で、正規表現にマッチした箇所が存在する座標に基づいて、元データ群のうち対応する加工データが存在しない元データごとに、位置評価値を算出する（ステップＳ２４０３）。そして、情報処理装置１００は、第２算出処理を終了する。
【０１８６】
（第３算出処理手順）
次に、図２５を用いて、情報処理装置１００が実行する、第３算出処理手順の一例について説明する。第３算出処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１８７】
図２５は、第３算出処理手順の一例を示すフローチャートである。図２５において、成功度算出部６３２は、元データ群のうち対応する加工データが存在しない元データごとに、分割数評価値と距離評価値と位置評価値とを合計した合計評価値を算出する（ステップＳ２５０１）。
【０１８８】
次に、成功度算出部６３２は、元データ群のうち対応する加工データが存在しない元データごとの合計評価値の総和の逆数を、選択した正規表現の成功度として算出する（ステップＳ２５０２）。そして、情報処理装置１００は、第３算出処理を終了する。
【０１８９】
（加工処理手順）
次に、図２６を用いて、情報処理装置１００が実行する、加工処理手順の一例について説明する。加工処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１９０】
図２６は、加工処理手順の一例を示すフローチャートである。図２６において、元データ加工部６４０は、正規表現選択部６３３から、正規表現を読み込む（ステップＳ２６０１）。
【０１９１】
次に、元データ加工部６４０は、元データ群を読み込む（ステップＳ２６０２）。そして、元データ加工部６４０は、読み込んだ正規表現を利用して、読み込んだ元データ群を加工する（ステップＳ２６０３）。
【０１９２】
次に、元データ加工部６４０は、加工した元データ群を保存する（ステップＳ２６０４）。そして、情報処理装置１００は、加工処理を終了する。これにより、情報処理装置１００は、元データ群を自動で加工することができ、ユーザが人手で元データ群を加工する場合に比べて、ユーザの作業量の低減化を図ることができる。
【０１９３】
ここで、情報処理装置１００は、図２０〜図２６のそれぞれのフローチャートの一部ステップの処理の順序を入れ替えて実行してもよい。例えば、ステップＳ２３０１〜Ｓ２３０３の処理の順序は入れ替え可能である。また、情報処理装置１００は、図２０〜図２６のそれぞれのフローチャートの一部ステップの処理を省略してもよい。例えば、ステップＳ２４０１〜Ｓ２４０３のいずれかの処理は省略可能である。
【０１９４】
以上説明したように、情報処理装置１００によれば、データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得することができる。情報処理装置１００によれば、データ群のそれぞれのデータ上の、取得した複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、それぞれの正規表現をデータ群に対する加工に利用する尤度を算出することができる。情報処理装置１００によれば、算出したそれぞれの正規表現の尤度を出力することができる。これにより、情報処理装置１００は、データ群に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることができる。このため、情報処理装置１００は、いずれかの正規表現を利用して、ユーザの意図に沿ってデータ群を加工可能にすることができる。また、情報処理装置１００は、ユーザの作業量の低減化を図ることができる。
【０１９５】
情報処理装置１００によれば、それぞれの正規表現について、データ群のそれぞれのデータを正規表現に対応する箇所を基準に分割した場合の、データ群のそれぞれのデータから分割した部分データの数に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、データ群のそれぞれのデータから分割した部分データの数に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【０１９６】
情報処理装置１００によれば、データ群に含まれる１以上のデータと、１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成された複数の正規表現を取得することができる。情報処理装置１００によれば、それぞれの正規表現について、１以上のデータのそれぞれのデータから分割した部分データの数と、残余のデータのそれぞれのデータから分割した部分データの数とを比較することができる。情報処理装置１００によれば、比較した結果に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、ユーザの意図が反映されている確率が高いと判断される、複数の正規表現の生成に用いた１以上のデータに関して現れる規則性を、尤度を算出する基準とすることができ、尤度を算出する精度の向上を図ることができる。
【０１９７】
情報処理装置１００によれば、それぞれの正規表現について、データ群のそれぞれのデータから、正規表現に対応する箇所を基準に分割した部分データの中から、第１の部分データと第２の部分データとを選択することができる。情報処理装置１００によれば、選択した第１の部分データと第２の部分データとの類似度に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、第１の部分データと、第２の部分データとの類似性に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【０１９８】
情報処理装置１００によれば、データ群に含まれる１以上のデータと、１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成された複数の正規表現を取得することができる。情報処理装置１００によれば、それぞれの正規表現について、１以上のデータのそれぞれのデータから分割した部分データの中から、第１の部分データを選択することができる。情報処理装置１００によれば、残余のデータのそれぞれのデータから分割した部分データの中から、第１の部分データに対応する位置に存在する第２の部分データを選択することができる。情報処理装置１００によれば、それぞれの正規表現について、選択した第１の部分データと、選択した第２の部分データとの類似度に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、ユーザの意図が反映されている確率が高いと判断される、複数の正規表現の生成に用いた１以上のデータに関して現れる規則性を、尤度を算出する基準とすることができ、尤度を算出する精度の向上を図ることができる。
【０１９９】
情報処理装置１００によれば、類似度を、第１の部分データと第２の部分データとの編集距離によって表現することができる。これにより、情報処理装置１００は、第１の部分データと第２の部分データとの類似度を算出することができる。
【０２００】
情報処理装置１００によれば、それぞれの正規表現について、データ群のそれぞれのデータ上の正規表現に対応する箇所が存在する位置に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、データ群のそれぞれのデータ上の正規表現に対応する箇所が存在する位置に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【０２０１】
情報処理装置１００によれば、データ群に含まれる１以上のデータと、１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成された複数の正規表現を取得することができる。情報処理装置１００によれば、それぞれの正規表現について、１以上のデータのそれぞれのデータ上の正規表現に対応する箇所が存在する位置と、残余のデータのそれぞれのデータ上の正規表現に対応する箇所が存在する位置とを比較することができる。情報処理装置１００によれば、比較した結果に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、ユーザの意図が反映されている確率が高いと判断される、複数の正規表現の生成に用いた１以上のデータに関して現れる規則性を、尤度を算出する基準とすることができ、尤度を算出する精度の向上を図ることができる。
【０２０２】
情報処理装置１００によれば、それぞれの正規表現について、データ群のそれぞれのデータ上の正規表現に対応する箇所の数に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、データ群のそれぞれのデータ上の正規表現に対応する箇所の数に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【０２０３】
情報処理装置１００によれば、算出したそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を選択し、選択したいずれかの正規表現を利用して、データ群を加工して出力することができる。これにより、情報処理装置１００は、データ群を自動で加工する際に、ユーザの意図に沿って加工される確率の向上を図ることができる。また、情報処理装置１００は、ユーザが人手でデータ群を加工する場合に比べて、ユーザの作業量の低減化を図ることができる。
【０２０４】
情報処理装置１００によれば、データ群に含まれる１以上のデータと、１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、複数の正規表現を生成することができる。これにより、情報処理装置１００は、複数の正規表現を自動で生成することができる。このため、情報処理装置１００は、ユーザが複数の正規表現を生成せずに済むようにして、ユーザの作業量の低減化を図ることができる。
【０２０５】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明した情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０２０６】
１００  情報処理装置
１１０  データ群
１１１，１２１  データ集合
２００  情報処理システム
２０１  クライアント装置
２１０  ネットワーク
３００，４００  バス
３０１，４０１  ＣＰＵ
３０２，４０２  メモリ
３０３，４０３  ネットワークＩ／Ｆ
３０４，４０４  記録媒体Ｉ／Ｆ
３０５，４０５  記録媒体
４０６  ディスプレイ
４０７  入力装置
５００  記憶部
５０１  取得部
５０２  生成部
５０３  算出部
５０４  選択部
５０５  加工部
５０６  出力部
６０１，９００  元データ群
６０２，１９３０  加工後データ群
６１０  元データ表示部
６２０  ユーザ入力部
６３０  正規表現推定部
６３１  候補推定部
６３２  成功度算出部
６３３  正規表現選択部
６４０  元データ加工部
７０１〜７０３  符号
７１０，７３０，９１０，９２０，９３０，９４０，９５０  元データ
７２０  加工データ
７４０，７５０，９６０，１１０１〜１１０４，１２００，１２１０，１３００，１４００，１６６０，１６７０，１６８０，１７６０，１７７０，１７８０，１８６０，１８７０，１８８０  表
９１１，９１２，９２１，９２２，９３１，９３２，９４１，９４２，９５１〜９５３，１６１１，１６１２，１６２１，１６２２，１６３１，１６３２，１６４１，１６４２，１６５１，１６５２，１７１１，１７１２，１７２１，１７２２，１７３１，１７３２，１７４１，１７４２，１７５１〜１７５３，１８１１，１８１２，１８２１，１８２２，１８３１，１８３２，１８４１，１８４２，１８５１，１８５２  部分データ
１０００  マッチ情報
１０１０  マッチ位置配列
１０２０  マッチインデックス配列
１３０１〜１３０３  グループ
１９００  一覧
１９１０  表示画面
１９４０  チェックボックス
【図１】
2020245993.tif 000003
【図２】
2020245993.tif 000004
【図３】
2020245993.tif 000005
【図４】
2020245993.tif 000006
【図５】
2020245993.tif 000007
【図６】
2020245993.tif 000008
【図７】
2020245993.tif 000009
【図８】
2020245993.tif 000010
【図９】
2020245993.tif 000011
【図１０】
2020245993.tif 000012
【図１１】
2020245993.tif 000013
【図１２】
2020245993.tif 000014
【図１３】
2020245993.tif 000015
【図１４】
2020245993.tif 000016
【図１５】
2020245993.tif 000017
【図１６】
2020245993.tif 000018
【図１７】
2020245993.tif 000019
【図１８】
2020245993.tif 000020
【図１９】
2020245993.tif 000021
【図２０】
2020245993.tif 000022
【図２１】
2020245993.tif 000023
【図２２】
2020245993.tif 000024
【図２３】
2020245993.tif 000025
【図２４】
2020245993.tif 000026
【図２５】
2020245993.tif 000027
【図２６】
2020245993.tif 000028
【手続補正書】
【提出日】令和3年8月12日(2021.8.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項２】
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの数に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項１に記載の情報処理プログラム。
【請求項３】
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの中から選択した、第１の部分データと第２の部分データとの類似度に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項１または２に記載の情報処理プログラム。
【請求項４】
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置に基づいて、前記正規表現の尤度を算出する、ことを特徴とする請求項１〜３のいずれか一つに記載の情報処理プログラム。
【請求項５】
算出した前記それぞれの正規表現の尤度に基づいて、前記複数の正規表現のいずれかの正規表現を選択し、
選択した前記いずれかの正規表現を利用して、前記データ群を加工して出力する、
処理を前記コンピュータに実行させることを特徴とする請求項１〜４のいずれか一つに記載の情報処理プログラム。
【請求項６】
前記取得する処理は、
前記データ群に含まれる１以上のデータと、前記１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、前記複数の正規表現を生成する、ことを特徴とする請求項１〜５のいずれか一つに記載の情報処理プログラム。
【請求項７】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項８】
データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
制御部を有することを特徴とする情報処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【０００２】
従来、ユーザが指定した入力内容と出力内容とに基づいて、入力内容をどのように処理すれば出力内容が生成可能かを推測し、入力内容から出力内容を生成可能なプログラムを自動生成するＰＢＥ（Ｐｒｏｇｒａｍｍｉｎｇ  Ｂｙ  Ｅｘａｍｐｌｅ）と呼ばれる技術がある。この技術は、例えば、ユーザが指定した元データと加工データとに基づいて、元データをどのように処理すれば加工データが生成可能かを推測し、元データを含むデータ群を加工するためのプログラムを自動生成する場合に適用される。
【０００３】
先行技術としては、例えば、複数の正規表現の中で、複数の文書データの各々における複数の正規表現の各々に適合するテキスト部分の数が、複数の文書データの各々における所望のテキスト部分の数と一致する度合いの高い正規表現を決定するものがある。また、例えば、入力されたコンテキストから抽出された組織名および電話番号の組み合わせが、予め登録された組織のホワイトリストＤＢ（ＤａｔａＢａｓｅ）に存在するか否かを検索した結果に基づいて、コンテキストの送信元の信頼度を表示する技術がある。また、例えば、マルウェア解析結果から得られた悪性ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）と過去のネットワークアクセスの特徴量を基に、アクセスログから悪性ＵＲＬと類似するＵＲＬを検索する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−２８６９９号公報
【特許文献２】特開２００７−５８５８７号公報
【特許文献３】国際公開第２０１５／１１４８０４号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、どのような正規表現を用いれば、データ群のそれぞれのデータ上において、ユーザが加工を所望する箇所を正確に特定することができるかを判断することが難しい。結果として、ユーザの意図に沿ってデータ群のそれぞれのデータを加工することができるプログラムを自動生成することが難しい。
【０００６】
１つの側面では、本発明は、データ群に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様によれば、データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、算出した前記それぞれの正規表現の尤度を出力する情報処理プログラム、情報処理方法、および情報処理装置が提案される。
【発明の効果】
【０００８】
一態様によれば、データ群に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
【図２】図２は、情報処理システム２００の一例を示す説明図である。
【図３】図３は、情報処理装置１００のハードウェア構成例を示すブロック図である。
【図４】図４は、クライアント装置２０１のハードウェア構成例を示すブロック図である。
【図５】図５は、情報処理装置１００の機能的構成例を示すブロック図である。
【図６】図６は、情報処理装置１００の具体的な機能的構成例を示すブロック図である。
【図７】図７は、情報処理装置１００の動作例を示す説明図（その１）である。
【図８】図８は、情報処理装置１００の動作例を示す説明図（その２）である。
【図９】図９は、それぞれの正規表現の成功度を算出する流れを示す説明図である。
【図１０】図１０は、レコード評価値を算出する一例を示す説明図（その１）である。
【図１１】図１１は、レコード評価値を算出する一例を示す説明図（その２）である。
【図１２】図１２は、分割数評価値を算出する具体例を示す説明図である。
【図１３】図１３は、距離評価値を算出する具体例を示す説明図である。
【図１４】図１４は、位置評価値を算出する具体例を示す説明図である。
【図１５】図１５は、レコード評価値を算出し、成功度を算出する具体例を示す説明図である。
【図１６】図１６は、他の正規表現の成功度を算出する具体例を示す説明図（その１）である。
【図１７】図１７は、他の正規表現の成功度を算出する具体例を示す説明図（その２）である。
【図１８】図１８は、他の正規表現の成功度を算出する具体例を示す説明図（その３）である。
【図１９】図１９は、クライアント装置２０１における表示画面例を示す説明図である。
【図２０】図２０は、受付処理手順の一例を示すフローチャートである。
【図２１】図２１は、推定処理手順の一例を示すフローチャートである。
【図２２】図２２は、成功度算出処理手順の一例を示すフローチャートである。
【図２３】図２３は、第１算出処理手順の一例を示すフローチャートである。
【図２４】図２４は、第２算出処理手順の一例を示すフローチャートである。
【図２５】図２５は、第３算出処理手順の一例を示すフローチャートである。
【図２６】図２６は、加工処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかる情報処理方法の一実施例）
図１は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置１００は、ユーザの意図に沿ってデータ群のそれぞれのデータを加工可能にすることを支援することができるコンピュータである。
【００１２】
データ群は、種類が同じ複数のデータの集合である。データ群は、例えば、形式が同じ複数のデータの集合である。データは、例えば、表形式である。データの加工は、例えば、データ上の一部の抽出、データ上の一部の変換、または、データの分割などである。
【００１３】
ここで、データ群を加工するためのプログラムを自動生成するための手法が考えられる。かかる手法は、例えば、ユーザが指定した元データと加工データとに基づいて、元データをどのように処理すれば加工データが生成可能かを推測し、元データを含むデータ群を加工するためのプログラムを自動生成する。かかる手法は、具体的には、元データを加工データに加工する場合の、元データ上の加工された箇所を特定可能である正規表現を推定し、推定した正規表現を利用してプログラムを自動生成する。正規表現を推定する技術は、例えば、下記参考文献１を参照することができる。
【００１４】
参考文献１：Ｂａｒｔｏｌｉ，  Ａｌｂｅｒｔｏ，  ｅｔ  ａｌ．  “Ｉｎｆｅｒｅｎｃｅ  ｏｆ  ｒｅｇｕｌａｒ  ｅｘｐｒｅｓｓｉｏｎｓ  ｆｏｒ  ｔｅｘｔ  ｅｘｔｒａｃｔｉｏｎ  ｆｒｏｍ  ｅｘａｍｐｌｅｓ．”  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｋｎｏｗｌｅｄｇｅ  ａｎｄ  Ｄａｔａ  Ｅｎｇｉｎｅｅｒｉｎｇ  ２８．５  （２０１６）：  １２１７−１２３０．
【００１５】
しかしながら、かかる手法では、元データ上の加工された箇所を特定可能である正規表現が複数存在する場合があり、いずれの正規表現が、ユーザの意図に沿った正しい正規表現であるかを判断することができない。かかる手法では、例えば、どのような正規表現を用いれば、データ群のそれぞれのデータ上において、ユーザが加工を所望する箇所を正確に特定することができるかを判断することができない。結果として、ユーザの意図に沿ってデータ群のそれぞれのデータを加工することができるプログラムを自動生成することができない。
【００１６】
そこで、本実施の形態では、データ群のそれぞれのデータ上の、複数の正規表現のそれぞれの正規表現に対応する箇所に関して現れる規則性に基づいて、複数の正規表現のそれぞれの正規表現の尤度を算出することができる情報処理方法について説明する。この情報処理方法によれば、それぞれの正規表現の尤度を出力し、データ群に対する加工に適した正規表現を判断可能にすることができる。
【００１７】
図１において、（１−１）情報処理装置１００は、複数の正規表現を取得する。複数の正規表現は、データ群１１０のそれぞれのデータ上から加工する箇所を探索することに利用可能である。複数の正規表現は、例えば、データ群１１０に含まれるデータと、当該データの加工例を示すデータとに基づき生成される。
【００１８】
図１の例では、複数の正規表現は、データ群１１０に含まれるユーザが指定したデータ集合１１１と、データ集合１１１のそれぞれのデータの加工例を含むデータ集合１２１とに基づき生成される。データ集合１２１は、データ集合１１１のそれぞれのデータから、「８／１」や「４／３」を抽出する加工例を含む。
【００１９】
このため、複数の正規表現は、具体的には、「８／１」や「４／３」などを特定可能である正規表現「￥ｄ＋＋／￥ｄ」、「￥ｄ／￥ｄ」、「￥ｄ／￥ｄ＋＋」、「￥ｄ＋＋／￥ｄ＋＋」が考えられる。￥ｄは、数字１文字を示す。￥ｄ＋＋は、数字ｎ文字を示す。情報処理装置１００は、具体的には、複数の正規表現「￥ｄ＋＋／￥ｄ」、「￥ｄ／￥ｄ」、「￥ｄ／￥ｄ＋＋」、「￥ｄ＋＋／￥ｄ＋＋」を取得する。
【００２０】
（１−２）情報処理装置１００は、データ群１１０のそれぞれのデータ上の、取得した複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、それぞれの正規表現の尤度を算出する。尤度は、正規表現をデータ群１１０に対する加工に利用する尤もらしさを示す指標値である。尤度は、例えば、データ群１１０の加工にあたり、どの程度ユーザの意図に沿って、加工する箇所を特定することができるかを示す指標値である。
【００２１】
ここで、データ群１１０は、種類が同じ複数のデータの集合である。データ群１１０は、例えば、形式が同じ複数のデータの集合である。また、ユーザは、データ群１１０のそれぞれのデータを規則的に加工することを意図していると考えられる。従って、正規表現が、ユーザの意図に沿って、加工する箇所を特定可能であれば、データ群１１０のそれぞれのデータ上の、当該正規表現に対応する箇所にも、規則性が現れると考えられる。
【００２２】
規則性は、例えば、それぞれの正規表現について、データ群１１０のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、データ群１１０のそれぞれのデータから分割した部分データの数に関して現れることが考えられる。規則性は、例えば、それぞれの正規表現について、データ群１１０のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置に関して現れることが考えられる。
【００２３】
規則性は、例えば、それぞれの正規表現について、データ群１１０のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、異なる２つのデータから分割した部分データ同士の類似度に関して現れることが考えられる。規則性は、それぞれの正規表現について、データ群１１０のそれぞれのデータ上の、当該正規表現に対応する箇所の数に関して現れることが考えられる。
【００２４】
このため、情報処理装置１００は、かかる規則性を利用して、それぞれの正規表現の尤度を算出する。図１の例では、情報処理装置１００は、複数の正規表現「￥ｄ＋＋／￥ｄ」、「￥ｄ／￥ｄ」、「￥ｄ／￥ｄ＋＋」、「￥ｄ＋＋／￥ｄ＋＋」のそれぞれの正規表現の尤度を算出する。情報処理装置１００が、それぞれの尤度を算出する具体例については、例えば、図７〜図１８を用いて後述する。
【００２５】
（１−３）情報処理装置１００は、算出したそれぞれの正規表現の尤度を出力する。情報処理装置１００は、例えば、複数の正規表現「￥ｄ＋＋／￥ｄ」、「￥ｄ／￥ｄ」、「￥ｄ／￥ｄ＋＋」、「￥ｄ＋＋／￥ｄ＋＋」のそれぞれの尤度を、記憶部に記憶する。
【００２６】
これにより、情報処理装置１００は、データ群１１０に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることができる。そして、情報処理装置１００は、いずれかの正規表現を利用して、ユーザの意図に沿ってデータ群１１０を加工することができる。また、情報処理装置１００は、いずれかの正規表現を利用して、ユーザの意図に沿ってデータ群１１０を加工することができるプログラムを生成してもよい。
【００２７】
ここで、情報処理装置１００が、複数の正規表現のそれぞれの正規表現の尤度に基づいて、データ群１１０を加工するプログラムを自動生成する場合があってもよい。また、情報処理装置１００が、複数の正規表現のそれぞれの正規表現の尤度を、情報処理装置１００とは異なる装置に送信し、データ群１１０を加工するプログラムを自動生成させる場合があってもよい。
【００２８】
（情報処理システム２００の一例）
次に、図２を用いて、図１に示した情報処理装置１００を適用した、情報処理システム２００の一例について説明する。
【００２９】
図２は、情報処理システム２００の一例を示す説明図である。図２において、情報処理システム２００は、情報処理装置１００と、１以上のクライアント装置２０１とを含む。
【００３０】
情報処理システム２００において、情報処理装置１００とクライアント装置２０１とは、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００３１】
情報処理装置１００は、データ群を記憶する。データ群は、例えば、情報処理システム２００のユーザによってクライアント装置２０１を介して情報処理装置１００に入力される。以下の説明では、情報処理システム２００のユーザを、単に「ユーザ」と表記する場合がある。データ群は、例えば、予め情報処理装置１００に記憶されていてもよい。
【００３２】
情報処理装置１００は、複数の正規表現を記憶する。情報処理装置１００は、例えば、データ群に含まれる１以上のデータと、１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、データ群の加工に利用可能である複数の正規表現を生成して記憶する。１以上のデータは、例えば、ユーザによってクライアント装置２０１を介して指定される。加工例を示すデータは、例えば、ユーザによってクライアント装置２０１を介して情報処理装置１００に入力される。以下の説明では、加工例を示すデータを「加工データ」と表記する場合がある。
【００３３】
情報処理装置１００は、複数の正規表現のそれぞれの正規表現の尤度を算出する。情報処理装置１００は、複数の正規表現のそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を利用して、データ群を加工する。また、情報処理装置１００は、複数の正規表現のそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を利用して、データ群を加工するプログラムを生成してもよい。
【００３４】
情報処理装置１００は、複数の正規表現のそれぞれの正規表現の尤度を、クライアント装置２０１に表示させ、ユーザに、プログラムの生成に利用する正規表現を選択させてもよい。情報処理装置１００は、例えば、サーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などである。
【００３５】
クライアント装置２０１は、情報処理装置１００と通信可能なコンピュータである。クライアント装置２０１は、ユーザの操作入力に基づき、データ群を情報処理装置１００に送信する。クライアント装置２０１は、ユーザの操作入力に基づき、データ群に含まれる１以上のデータの指定を受け付け、データ群に含まれる１以上のデータが指定されたことを、情報処理装置１００に送信する。クライアント装置は、データ群に含まれる１以上のデータの入力を受け付けることを、データ群に含まれる１以上のデータの指定を受け付けることとして扱ってもよい。クライアント装置２０１は、指定の１以上のデータのそれぞれのデータの加工例を示すデータを、情報処理装置１００に送信する。クライアント装置２０１は、例えば、ＰＣ、タブレット端末、または、スマートフォンなどである。
【００３６】
これにより、情報処理システム２００は、ユーザに、データ群を加工するプログラムを生成するサービスを提供する。ユーザは、クライアント装置２０１を介して、情報処理装置１００に、データ群を取得させ、データ群に含まれる１以上のデータのそれぞれのデータの加工例を示すデータを取得させれば、データ群を加工するプログラムを取得することができる。また、ユーザは、複数の正規表現を把握し、いずれの正規表現がデータ群の加工に適するかを把握することができる。
【００３７】
ここでは、情報処理装置１００と、クライアント装置２０１とが別々の装置である場合について説明したが、これに限らない。例えば、情報処理装置１００が、クライアント装置２０１としても動作可能な場合があってもよい。この場合、情報処理システム２００は、クライアント装置２０１を含まなくてもよい。
【００３８】
（情報処理装置１００のハードウェア構成例）
次に、図３を用いて、情報処理装置１００のハードウェア構成例について説明する。
【００３９】
図３は、情報処理装置１００のハードウェア構成例を示すブロック図である。図３において、情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、記録媒体Ｉ／Ｆ３０４と、記録媒体３０５とを有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００４０】
ここで、ＣＰＵ３０１は、情報処理装置１００の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００４１】
ネットワークＩ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ３０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ３０３は、例えば、モデムやＬＡＮアダプタなどである。
【００４２】
記録媒体Ｉ／Ｆ３０４は、ＣＰＵ３０１の制御に従って記録媒体３０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ３０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体３０５は、記録媒体Ｉ／Ｆ３０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体３０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体３０５は、情報処理装置１００から着脱可能であってもよい。
【００４３】
情報処理装置１００は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置１００は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を複数有していてもよい。また、情報処理装置１００は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を有していなくてもよい。
【００４４】
（クライアント装置２０１のハードウェア構成例）
次に、図４を用いて、図２に示した情報処理システム２００に含まれるクライアント装置２０１のハードウェア構成例について説明する。
【００４５】
図４は、クライアント装置２０１のハードウェア構成例を示すブロック図である。図４において、クライアント装置２０１は、ＣＰＵ４０１と、メモリ４０２と、ネットワークＩ／Ｆ４０３と、記録媒体Ｉ／Ｆ４０４と、記録媒体４０５と、ディスプレイ４０６と、入力装置４０７とを有する。また、各構成部は、バス４００によってそれぞれ接続される。
【００４６】
ここで、ＣＰＵ４０１は、クライアント装置２０１の全体の制御を司る。メモリ４０２は、例えば、ＲＯＭ、ＲＡＭおよびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ４０１のワークエリアとして使用される。メモリ４０２に記憶されるプログラムは、ＣＰＵ４０１にロードされることで、コーディングされている処理をＣＰＵ４０１に実行させる。
【００４７】
ネットワークＩ／Ｆ４０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ４０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ４０３は、例えば、モデムやＬＡＮアダプタなどである。
【００４８】
記録媒体Ｉ／Ｆ４０４は、ＣＰＵ４０１の制御に従って記録媒体４０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ４０４は、例えば、ディスクドライブ、ＳＳＤ、ＵＳＢポートなどである。記録媒体４０５は、記録媒体Ｉ／Ｆ４０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体４０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体４０５は、クライアント装置２０１から着脱可能であってもよい。
【００４９】
ディスプレイ４０６は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ４０６は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、液晶ディスプレイ、有機ＥＬ（Ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイなどである。入力装置４０７は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置４０７は、キーボードやマウスなどであってもよく、また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００５０】
クライアント装置２０１は、上述した構成部のほか、例えば、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、クライアント装置２０１は、記録媒体Ｉ／Ｆ４０４や記録媒体４０５を複数有していてもよい。また、クライアント装置２０１は、記録媒体Ｉ／Ｆ４０４や記録媒体４０５を有していなくてもよい。
【００５１】
（情報処理装置１００の機能的構成例）
次に、図５を用いて、情報処理装置１００の機能的構成例について説明する。
【００５２】
図５は、情報処理装置１００の機能的構成例を示すブロック図である。情報処理装置１００は、記憶部５００と、取得部５０１と、生成部５０２と、算出部５０３と、選択部５０４と、加工部５０５と、出力部５０６とを含む。
【００５３】
記憶部５００は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域によって実現される。以下では、記憶部５００が、情報処理装置１００に含まれる場合について説明するが、これに限らない。例えば、記憶部５００が、情報処理装置１００とは異なる装置に含まれ、記憶部５００の記憶内容が情報処理装置１００から参照可能である場合があってもよい。
【００５４】
取得部５０１〜出力部５０６は、制御部の一例として機能する。取得部５０１〜出力部５０６は、具体的には、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、ネットワークＩ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【００５５】
記憶部５００は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部５００は、例えば、データ群を記憶する。データ群は、種類が同じ複数のデータの集合である。データ群は、例えば、形式が同じ複数のデータの集合である。データは、例えば、表形式である。データ群は、例えば、取得部５０１に取得されたことに応じて、記憶部５００に記憶される。
【００５６】
記憶部５００は、例えば、複数の正規表現を記憶する。複数の正規表現は、データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である。複数の正規表現は、例えば、データ群に含まれるデータと、当該データの加工例を示す加工データとに基づき生成される。複数の正規表現は、具体的には、データ群に含まれる１以上のデータと、当該１以上のデータのそれぞれのデータの加工例を示す加工データとに基づいて生成される。複数の正規表現は、例えば、取得部５０１に取得され、または、生成部５０２に生成されたことに応じて、記憶部５００に記憶される。
【００５７】
記憶部５００は、例えば、複数の正規表現を生成する際に用いられる加工データを記憶する。記憶部５００は、具体的には、データ群に含まれるデータに対応付けて、当該データの加工例を示す加工データを記憶する。記憶部５００は、データ群に含まれる１以上のデータのそれぞれのデータに対応付けて、当該データの加工例を示す加工データを記憶する。加工データは、例えば、取得部５０１に取得されたことに応じて、記憶部５００に記憶される。
【００５８】
取得部５０１は、各機能部の処理に用いられる各種情報を取得する。取得部５０１は、取得した各種情報を、記憶部５００に記憶し、または、各機能部に出力する。また、取得部５０１は、記憶部５００に記憶しておいた各種情報を、各機能部に出力してもよい。取得部５０１は、例えば、情報処理装置１００の利用者の操作入力に基づき、各種情報を取得する。取得部５０１は、例えば、情報処理装置１００とは異なる装置から、各種情報を受信してもよい。
【００５９】
取得部５０１は、データ群を取得する。取得部５０１は、例えば、データ群を、クライアント装置２０１から受信する。取得部５０１は、データ群に含まれるデータの指定を受け付ける。取得部５０１は、出力部５０６がデータ群をクライアント装置２０１に表示させたことに応じて、ユーザからの、データ群に含まれるデータの指定を、クライアント装置２０１を介して受け付ける。取得部５０１は、例えば、データ群に含まれる１以上のデータの指定を受け付ける。取得部５０１は、例えば、データ群に含まれる１以上のデータを、クライアント装置２０１から受信することにより、指定を受け付けてもよい。
【００６０】
取得部５０１は、指定されたデータの加工例を示す加工データを取得する。取得部５０１は、例えば、データ群に含まれる１以上のデータのそれぞれのデータに対応付けて、当該データの加工例を示す加工データを、クライアント装置２０１から受信する。取得部５０１は、情報処理装置１００において複数の正規表現を生成しない場合には、複数の正規表現を取得してもよい。取得部５０１は、例えば、複数の正規表現を、情報処理装置１００とは異なる装置から受信する。この場合には、情報処理装置１００は、生成部５０２を含まなくてもよい。
【００６１】
生成部５０２は、複数の正規表現を生成する。生成部５０２は、データ群に含まれる指定されたデータと、指定されたデータの加工例を示す加工データとに基づいて、複数の正規表現を生成する。生成部５０２は、例えば、データ群に含まれる指定された１以上のデータと、指定された１以上のデータのそれぞれのデータの加工例を示す加工データとに基づいて、複数の正規表現を生成する。
【００６２】
生成部５０２は、具体的には、指定されたデータと、指定されたデータの加工例を示す加工データとに基づいて、指定されたデータ上の加工する箇所を特定し、指定されたデータ上の加工する箇所を特定可能にする複数の正規表現を生成する。これにより、生成部５０２は、データ群の加工に利用する候補となる複数の正規表現を生成することができ、算出部５０３に、それぞれの正規表現の尤度を算出させることができる。
【００６３】
また、生成部５０２は、加工内容を生成してもよい。加工内容は、正規表現を利用して探索された、データ群のそれぞれのデータ上の加工する箇所を、どのように加工するかを示す。生成部５０２は、データ群に含まれる指定されたデータと、指定されたデータの加工例を示す加工データとに基づいて、加工内容を生成する。生成部５０２は、例えば、データ群に含まれる指定された１以上のデータと、指定された１以上のデータのそれぞれのデータの加工例を示す加工データとに基づいて、加工内容を生成する。これにより、生成部５０２は、加工部５０５に加工内容を参照させることができる。
【００６４】
算出部５０３は、それぞれの正規表現の尤度を算出する。尤度は、正規表現をデータ群に対する加工に利用する尤もらしさを示す指標値である。尤度は、例えば、データ群の加工にあたり、どの程度ユーザの意図に沿って、加工する箇所を特定することができるかを示す指標値である。尤度は、データ群のそれぞれのデータ上の、正規表現に対応する箇所について、所定の規則性が現れるほど、値が大きくなり、当該正規表現が、ユーザの意図に沿って、データ群のそれぞれのデータ上から、加工する箇所を特定可能であることを意味する。尤度は、具体的には、図７〜図１８に後述する成功度である。
【００６５】
算出部５０３は、取得した複数の正規表現のそれぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所に基づいて、当該正規表現の尤度を算出する。算出部５０３は、例えば、それぞれの正規表現について、データ群のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、データ群のそれぞれのデータから分割した部分データの数に基づいて、当該正規表現の尤度を算出する。
【００６６】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、データ群のそれぞれのデータから分割した部分データの数は、同じ数になる傾向があると考えられる。
【００６７】
このため、算出部５０３は、具体的には、それぞれの正規表現について、データ群のそれぞれのデータから、当該正規表現に対応する箇所を基準に分割した部分データの数についての分散が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００６８】
ここで、例えば、正規表現は、指定された１以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された１以上のデータのそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、指定された１以上のデータのそれぞれのデータから分割した部分データの数は、ユーザの意図を表す基準となりうる。
【００６９】
従って、算出部５０３は、具体的には、それぞれの正規表現について、１以上のデータのそれぞれのデータから分割した部分データの数と、データ群に含まれる１以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの数とを比較する。そして、算出部５０３は、比較した結果に基づいて、それぞれの正規表現の尤度を算出する。
【００７０】
算出部５０３は、より具体的には、それぞれの正規表現について、１以上のデータのそれぞれのデータから分割した部分データの数と、データ群に含まれる１以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの数との差分を算出する。そして、算出部５０３は、それぞれの正規表現について、算出した差分が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【００７１】
算出部５０３は、より具体的には、それぞれの正規表現について、１以上のデータのそれぞれのデータから分割した部分データの数と、残余のデータのそれぞれのデータから分割した部分データの数との差分絶対値を算出してもよい。そして、算出部５０３は、それぞれの正規表現について、算出した差分絶対値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【００７２】
また、算出部５０３は、より具体的には、それぞれの正規表現について、残余のデータのそれぞれのデータから分割した部分データの数の、１以上のデータのそれぞれのデータから分割した部分データの数との差分絶対値の統計値を算出してもよい。統計値は、最小値、最大値、平均値、最頻値などである。そして、算出部５０３は、それぞれの正規表現について、算出した差分絶対値の統計値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００７３】
算出部５０３は、それぞれの正規表現について、データ群のそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、異なる２つのデータから分割した部分データ同士の類似度に基づいて、当該正規表現の尤度を算出する。算出部５０３は、例えば、それぞれの正規表現について、データ群のそれぞれのデータから当該正規表現に対応する箇所を基準に分割した部分データの中から選択した、第１の部分データと第２の部分データとの類似度に基づいて、当該正規表現の尤度を算出する。
【００７４】
第１の部分データの位置と、第２の部分データの位置とは、例えば、対応関係があることが好ましい。対応関係は、例えば、先頭から何番目の部分データであるかが対応することを意味する。対応関係は、具体的には、正規表現に対応する箇所を基準にした、相対的な位置が共通することを意味する。類似度は、第１の部分データと第２の部分データとの編集距離によって表現される。
【００７５】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、異なる２つのデータから当該正規表現に対応する箇所を基準に分割した部分データ同士の類似度は、大きくなる傾向があると考えられる。
【００７６】
このため、算出部５０３は、具体的には、それぞれの正規表現について、異なる２つのデータから当該正規表現に対応する箇所を基準に分割した部分データ同士の類似度が大きいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００７７】
ここで、例えば、正規表現は、指定された１以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された１以上のデータのそれぞれのデータを、当該正規表現に対応する箇所を基準に分割した場合の、指定された１以上のデータのそれぞれのデータから分割した部分データは、ユーザの意図を表す基準となりうる。
【００７８】
従って、算出部５０３は、具体的には、それぞれの正規表現について、指定された１以上のデータのそれぞれのデータから分割した部分データの中から、第１の部分データを選択する。算出部５０３は、それぞれの正規表現について、データ群に含まれる１以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの中から、第１の部分データに対応する位置に存在する第２の部分データを選択する。算出部５０３は、それぞれの正規表現について、選択した第１の部分データと第２の部分データとの類似度に基づいて、正規表現の尤度を算出する。
【００７９】
算出部５０３は、より具体的には、それぞれの正規表現について、選択した第１の部分データと第２の部分データとの類似度が大きいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【００８０】
また、算出部５０３は、より具体的には、それぞれの正規表現について、第２の部分データを複数選択し、また、第２の部分データごとに対応する第１の部分データを１以上選択する場合があってもよい。この場合、算出部５０３は、それぞれの正規表現について、選択した第２の部分データごとに、第２の部分データに対応する第１の部分データのそれぞれとの類似度を算出し、類似度の統計値を算出する。統計値は、最小値、最大値、平均値、最頻値などである。そして、算出部５０３は、それぞれの正規表現について、算出した類似度の統計値が大きいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００８１】
算出部５０３は、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置に基づいて、当該正規表現の尤度を算出する。位置は、例えば、正規表現に対応する箇所の先頭が、データ上の何番目の文字であるかを示す。
【００８２】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置は、同じ位置になる傾向があると考えられる。
【００８３】
このため、算出部５０３は、具体的には、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置の分散が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００８４】
ここで、例えば、正規表現は、指定された１以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された１以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置は、ユーザの意図を表す基準となりうる。
【００８５】
従って、算出部５０３は、具体的には、それぞれの正規表現について、１以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置を特定する。算出部５０３は、それぞれの正規表現について、データ群に含まれる１以上のデータを除いた残余のデータのそれぞれのデータ上の、当該正規表現に対応する箇所が存在する位置を特定する。算出部５０３は、それぞれの正規表現について、特定した位置同士を比較した結果に基づいて、当該正規表現の尤度を算出する。
【００８６】
算出部５０３は、より具体的には、それぞれの正規表現について、特定した位置同士の差分を算出する。そして、算出部５０３は、それぞれの正規表現について、算出した差分が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【００８７】
算出部５０３は、より具体的には、それぞれの正規表現について、特定した位置同士の差分絶対値を算出してもよい。そして、算出部５０３は、それぞれの正規表現について、算出した差分絶対値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。
【００８８】
また、算出部５０３は、より具体的には、それぞれの正規表現について、残余のデータのそれぞれのデータ上から特定した位置の、１以上のデータのそれぞれのデータ上から特定した位置との差分絶対値の統計値を算出してもよい。統計値は、最小値、最大値、平均値、最頻値などである。そして、算出部５０３は、それぞれの正規表現について、算出した差分絶対値の統計値が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００８９】
算出部５０３は、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所の数に基づいて、当該正規表現の尤度を算出する。
【００９０】
ここで、例えば、正規表現が、ユーザの意図に沿っていれば、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所の数は、同じ数になる傾向があると考えられる。
【００９１】
このため、算出部５０３は、具体的には、それぞれの正規表現について、データ群のそれぞれのデータ上の、当該正規表現に対応する箇所の数の分散が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００９２】
ここで、例えば、正規表現は、指定された１以上のデータのそれぞれのデータに対応する、ユーザの意図が反映された加工データに基づいて生成される。このため、それぞれの正規表現について、指定された１以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所の数は、ユーザの意図を表す基準となりうる。
【００９３】
従って、算出部５０３は、具体的には、それぞれの正規表現について、１以上のデータのそれぞれのデータ上の、当該正規表現に対応する箇所の数を算出する。算出部５０３は、それぞれの正規表現について、データ群に含まれる１以上のデータを除いた残余のデータのそれぞれのデータ上の、当該正規表現に対応する箇所の数を算出する。算出部５０３は、それぞれの正規表現について、１以上のデータのそれぞれのデータについて算出した数と、残余のデータのそれぞれのデータについて算出した数との差分に基づいて、当該正規表現の尤度を算出する。
【００９４】
算出部５０３は、より具体的には、それぞれの正規表現について、差分が小さいほど尤度が大きくなるように、当該正規表現の尤度を算出する。これにより、算出部５０３は、いずれの正規表現によれば、データ群に対してユーザの意図に沿って加工可能であるかを判断する指標となる尤度を得ることができ、選択部５０４に参照させることができる。
【００９５】
選択部５０４は、複数の正規表現のいずれかの正規表現を選択する。選択部５０４は、例えば、算出したそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を選択する。選択部５０４は、具体的には、尤度が最も大きい正規表現を選択する。選択部５０４は、具体的には、尤度が閾値以上の１以上の正規表現のいずれかの正規表現を選択してもよい。選択部５０４は、具体的には、尤度が大きい方から所定の順位までの１以上の正規表現を選択してもよい。これにより、選択部５０４は、ユーザの意図に沿ってデータ群を加工可能にすることができると判断される正規表現を、加工部５０５に出力することができる。このため、選択部５０４は、加工部５０５が、ユーザの意図に沿ってデータ群を加工する確率の向上を図ることができる。
【００９６】
選択部５０４は、複数の正規表現のいずれかの正規表現の選択を受け付けてもよい。選択部５０４は、例えば、表示部がそれぞれの正規表現の尤度をクライアント装置２０１に表示させたことに応じて、ユーザからの、いずれかの正規表現の選択を、クライアント装置２０１を介して受け付ける。これにより、選択部５０４は、ユーザの意図に沿ってデータ群を加工可能にすることができると判断される正規表現を、加工部５０５に出力することができる。このため、選択部５０４は、加工部５０５が、ユーザの意図に沿ってデータ群を加工する確率の向上を図ることができる。
【００９７】
加工部５０５は、データ群を加工する。加工部５０５は、選択したいずれかの正規表現を利用して、データ群を加工する。加工部５０５は、例えば、選択したいずれかの正規表現と、生成部５０２が生成した加工内容とに基づいて、データ群を加工する。これにより、加工部５０５は、データ群を加工することができ、ユーザが人手でデータ群を加工する場合に比べて、ユーザの作業量の低減化を図ることができる。
【００９８】
加工部５０５は、データ群を加工するプログラムを生成してもよい。加工部５０５は、選択したいずれかの正規表現を利用して、データ群を加工するプログラムを生成する。加工部５０５は、例えば、選択したいずれかの正規表現と、生成部５０２が生成した加工内容とに基づいて、データ群を加工するプログラムを生成する。これにより、加工部５０５は、データ群を加工するプログラムを、ユーザに提供可能にすることができる。
【００９９】
出力部５０６は、各種情報を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークＩ／Ｆ３０３による外部装置への送信、または、メモリ３０２や記録媒体３０５などの記憶領域への記憶である。出力部５０６は、例えば、データ群を出力する。出力部５０６は、具体的には、データ群を、クライアント装置２０１に送信して表示させる。これにより、出力部５０６は、データ群をユーザに参照させ、ユーザが、加工データを作成しやすくすることができる。
【０１００】
出力部５０６は、いずれかの機能部の処理結果を出力する。これにより、出力部５０６は、各機能部の処理結果を、情報処理システム２００のユーザに通知可能にすることができ、情報処理システム２００の利便性の向上を図ることができる。
【０１０１】
出力部５０６は、算出したそれぞれの正規表現の尤度を出力する。出力部５０６は、例えば、それぞれの正規表現に、当該正規表現の尤度を対応付けて、クライアント装置２０１に送信して表示させる。これにより、出力部５０６は、それぞれの正規表現の尤度をユーザに参照させ、ユーザが、データ群の加工に利用する正規表現を選択しやすくすることができる。
【０１０２】
出力部５０６は、データ群を加工した結果を出力する。出力部５０６は、例えば、データ群を加工した結果を、クライアント装置２０１に送信して表示させる。これにより、出力部５０６は、データ群を加工した結果を、ユーザに参照させることができる。
【０１０３】
出力部５０６は、データ群を加工するプログラムを出力してもよい。出力部５０６は、データ群を加工するプログラムを、クライアント装置２０１に送信する。これにより、出力部５０６は、データ群を加工するプログラムを、ユーザが利用可能にすることができる。そして、出力部５０６は、ユーザが、データ群を加工する際にかかる作業量の低減化を図ることができる。また、出力部５０６は、ユーザが、データ群と同種の別のデータ群を加工する際に、プログラムを流用可能にすることができ、ユーザの作業量の低減化を図ることができる。
【０１０４】
（情報処理装置１００の具体的な機能的構成例）
次に、図６を用いて、情報処理装置１００の具体的な機能的構成例について説明する。
【０１０５】
図６は、情報処理装置１００の具体的な機能的構成例を示すブロック図である。情報処理装置１００は、元データ表示部６１０と、ユーザ入力部６２０と、正規表現推定部６３０と、元データ加工部６４０とを含む。正規表現推定部６３０は、候補推定部６３１と、成功度算出部６３２と、正規表現選択部６３３とを含む。
【０１０６】
元データ表示部６１０〜元データ加工部６４０は、例えば、図５に示した取得部５０１〜出力部５０６を実現する。元データ表示部６１０〜元データ加工部６４０は、具体的には、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、ネットワークＩ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【０１０７】
元データ表示部６１０は、元データ群６０１を読み込み、クライアント装置２０１に表示させる。ユーザ入力部６２０は、クライアント装置２０１から、元データ群６０１のいずれかの元データの指定と、指定された元データを加工した加工例を示す加工データの入力とを受け付け、推定指示を受け付ける。ユーザ入力部６２０は、推定指示に応じて正規表現推定部６３０の実行フラグを有効に設定し、正規表現推定部６３０に、指定された元データと、入力された加工データとを出力し、正規表現推定部６３０に、複数の正規表現を生成させる。
【０１０８】
正規表現推定部６３０は、実行フラグが有効である場合、指定された元データと、入力された加工データとを読み込み、複数の正規表現を生成する。候補推定部６３１は、指定された元データと、入力された加工データとに基づいて、元データ群６０１の加工に利用する候補となる複数の正規表現を推定し、成功度算出部６３２に出力する。成功度算出部６３２は、元データ群６０１に基づいて、複数の正規表現のそれぞれの正規表現の成功度を算出し、正規表現選択部６３３に出力する。正規表現選択部６３３は、それぞれの正規表現の成功度に基づいて、候補となる複数の正規表現のいずれかの正規表現を選択し、元データ加工部６４０に出力し、元データ加工部６４０に元データ群６０１を加工させる。
【０１０９】
元データ加工部６４０は、正規表現を利用して、元データ群６０１を加工する。元データ加工部６４０は、元データ群６０１を加工した加工後データ群６０２を出力する。
【０１１０】
（情報処理装置１００の動作例）
次に、図７および図８を用いて、情報処理装置１００の動作例について説明する。
【０１１１】
図７および図８は、情報処理装置１００の動作例を示す説明図である。図７において、情報処理装置１００は、元データ群を受け付ける。元データ群は、例えば、元データ７１０を含む。情報処理装置１００は、ユーザが作成した元データ７１０に対応する加工データ７２０を受け付ける。
【０１１２】
以下の説明では、加工データ７２０が存在する元データ７１０を「ラベルありの元データ７１０」と表記する場合がある。また、元データ群は、元データ７３０を含む。図７の例では、元データ７３０に対応する加工データは、存在しない。以下の説明では、加工データが存在しない元データ７３０を「ラベルなしの元データ７３０」と表記する場合がある。
【０１１３】
情報処理装置１００は、符号７０１に示すように、元データ７１０と加工データ７２０とに基づいて、元データ群の加工に利用する候補となる複数の正規表現を生成する。複数の正規表現は、例えば、表７４０に示される正規表現である。
【０１１４】
情報処理装置１００は、符号７０２に示すように、元データ群に基づいて、複数の正規表現のそれぞれの正規表現の成功度を算出する。成功度は、ユーザの意図に沿った加工が行われる確率が高いと判断されるほど、値が大きくなる。それぞれの正規表現の成功度は、例えば、表７５０に示される成功度である。
【０１１５】
情報処理装置１００は、符号７０３に示すように、それぞれの正規表現の成功度に基づいて、複数の正規表現のいずれかの正規表現を、データ群の加工に利用する正規表現に選択する。情報処理装置１００は、例えば、最も成功度が大きい正規表現「￥ｄ＋＋／￥ｄ＋＋」を選択する。次に、図８の説明に移行する。
【０１１６】
図８において、情報処理装置１００は、選択した最も成功度が大きい正規表現「￥ｄ＋＋／￥ｄ＋＋」を利用して、ラベルなしの元データ７３０を加工する。これにより、情報処理装置１００は、ラベルありの元データ７１０を加工データ７２０に加工する際と同様の加工内容で、ラベルなしの元データ７３０を加工することができる。情報処理装置１００は、例えば、ラベルなしの元データ７３０から、「９／３」、「１／２４」、「１２／１４」などを抽出する加工を行うことができる。
【０１１７】
（それぞれの正規表現の成功度を算出する流れ）
次に、図９を用いて、それぞれの正規表現の成功度を算出する流れについて説明する。
【０１１８】
図９は、それぞれの正規表現の成功度を算出する流れを示す説明図である。図９の例では、情報処理装置１００が、正規表現「￥ｄ／￥ｄ」の成功度を算出する場合について説明する。図９において、情報処理装置１００は、元データ群９００を記憶する。
【０１１９】
元データ群９００は、元データ９１０，９２０，９３０，９４０，９５０を含む。元データ９１０，９２０は、ラベルありである。元データ９３０，９４０，９５０は、ラベルなしである。
【０１２０】
情報処理装置１００は、元データ９１０，９２０，９３０，９４０，９５０を、正規表現「￥ｄ／￥ｄ」に対応する箇所を基準に分割する。元データ９１０は、例えば、部分データ９１１，９１２に分割される。元データ９２０は、例えば、部分データ９２１，９２２に分割される。元データ９３０は、例えば、部分データ９３１，９３２に分割される。元データ９４０は、例えば、部分データ９４１，９４２に分割される。元データ９５０は、例えば、部分データ９５１，９５２，９５３に分割される。
【０１２１】
情報処理装置１００は、分割結果に基づいて、表９６０に示すように、それぞれのラベルなしの元データ９３０，９４０，９５０について、レコード評価値「０」、「２」、「６」を算出する。レコード評価値は、分割数評価値と距離評価値と位置評価値との合計評価値である。分割数評価値と距離評価値と位置評価値との合計評価値は、例えば、図１０および図１１に後述するように算出される。情報処理装置１００は、正規表現「￥ｄ／￥ｄ」の成功度として、レコード評価値の総和の逆数「１／８」を算出する。
【０１２２】
（レコード評価値を算出する一例）
次に、図１０および図１１を用いて、情報処理装置１００が、レコード評価値を算出する一例について説明する。
【０１２３】
図１０および図１１は、レコード評価値を算出する一例を示す説明図である。図１０において、情報処理装置１００は、分割結果に基づいて、マッチ情報１０００を生成する。マッチ情報１０００は、マッチ位置配列１０１０と、マッチインデックス配列１０２０とを含む。
【０１２４】
マッチ位置配列１０１０は、元データ９１０，９２０，９３０，９４０，９５０のマッチ位置を含む。マッチ位置は、元データ９１０，９２０，９３０，９４０，９５０上で、正規表現「￥ｄ／￥ｄ」に対応する箇所の先頭が、何文字目に位置するかを示す。マッチ位置は、正規表現「￥ｄ／￥ｄ」に対応する箇所の先頭が、ｎ文字目に位置する場合、ｎ−１の値が設定される。
【０１２５】
マッチインデックス配列１０２０は、元データ９１０，９２０，９３０，９４０，９５０のマッチインデックスを含む。マッチインデックスは、元データ９１０，９２０，９３０，９４０，９５０上で、正規表現「￥ｄ／￥ｄ」に対応する箇所を含む部分データが、先頭から何番目の部分データであるかを示す。マッチインデックスは、正規表現「￥ｄ／￥ｄ」に対応する箇所を含む部分データが、先頭からｎ番目の部分データである場合、ｎ−１の値が設定される。次に、図１１の説明に移行する。
【０１２６】
図１１において、情報処理装置１００は、マッチ情報１０００を参照して、分割結果に基づいて、元データ９３０，９４０，９５０に対応する分割数評価値と距離評価値と位置評価値とを算出する。
【０１２７】
分割数評価値は、元データ９３０，９４０，９５０の分割数が、元データ９１０，９２０の分割数と、どの程度異なるかを示す評価値である。分割数は、部分データの数である。分割数評価値は、例えば、分割数の差分絶対値によって表現される。元データ９３０，９４０，９５０に対応する分割数評価値は、例えば、表１１０１に示すようになる。情報処理装置１００が、分割数評価値を算出する具体例については、例えば、図１２を用いて後述する。
【０１２８】
距離評価値は、元データ９３０，９４０，９５０の部分データが、当該部分データと対応する位置に存在する、元データ９１０，９２０の部分データと、どの程度異なるかを示す評価値である。距離評価値は、部分データ間の編集距離により表現される。元データ９３０，９４０，９５０に対応する距離評価値は、例えば、表１１０２に示すようになる。情報処理装置１００が、距離評価値を算出する具体例については、例えば、図１３を用いて後述する。
【０１２９】
位置評価値は、元データ９３０，９４０，９５０のマッチ位置が、元データ９１０，９２０のマッチ位置と、どの程度異なるかを示す評価値である。位置評価値は、マッチ位置の差分絶対値により表現される。元データ９３０，９４０，９５０に対応する位置評価値は、例えば、表１１０３に示すようになる。情報処理装置１００が、位置評価値を算出する具体例については、例えば、図１４を用いて後述する。
【０１３０】
情報処理装置１００は、元データ９３０，９４０，９５０に対応する分割数評価値と距離評価値と位置評価値との合計を、元データ９３０，９４０，９５０に対応するレコード評価値として算出する。元データ９３０，９４０，９５０に対応するレコード評価値は、表１１０４に示すようになる。情報処理装置１００が、レコード評価値を算出する具体例については、例えば、図１５を用いて後述する。
【０１３１】
（レコード評価値を算出し、成功度を算出する具体例）
次に、図１２〜図１５を用いて、情報処理装置１００が、正規表現「￥ｄ／￥ｄ」に関し、元データ９３０，９４０，９５０に対応する分割数評価値と距離評価値と位置評価値とを算出し、レコード評価値を算出し、成功度を算出する具体例について説明する。まず、図１２の説明に移行し、情報処理装置１００が、分割数評価値を算出する具体例について説明する。
【０１３２】
図１２は、分割数評価値を算出する具体例を示す説明図である。図１２において、情報処理装置１００は、正規表現「￥ｄ／￥ｄ」に基づく分割結果に基づいて、元データ９１０，９２０，９３０，９４０，９５０の分割数「２」、「２」、「２」、「２」、「３」を算出する。元データ９１０，９２０，９３０，９４０，９５０の分割数は、例えば、表１２００に示すようになる。
【０１３３】
情報処理装置１００は、ラベルなしの元データ９３０の分割数と、ラベルありの元データ９１０，９２０の分割数それぞれとの差分絶対値の最小値を、元データ９３０に対応する分割数評価値として算出する。情報処理装置１００は、例えば、元データ９３０の分割数評価値「０」を算出する。情報処理装置１００は、同様に、ラベルなしの元データ９４０，９５０の分割数評価値「０」、「１」を算出する。元データ９３０，９４０，９５０に対応する分割数評価値は、例えば、表１２１０に示すようになる。
【０１３４】
ここでは、情報処理装置１００が、分割数評価値の算出に、差分絶対値の最小値を用いる場合について説明したが、これに限らない。例えば、情報処理装置１００が、分割数評価値の算出に、最小値以外の差分絶対値の統計値を用いる場合があってもよい。統計値は、例えば、平均値、最大値、最頻値などである。次に、図１３の説明に移行し、情報処理装置１００が、距離評価値を算出する具体例について説明する。
【０１３５】
図１３は、距離評価値を算出する具体例を示す説明図である。図１３において、情報処理装置１００は、正規表現「￥ｄ／￥ｄ」に基づくマッチインデックスを基準に、相対的に同一の位置に存在する部分データのグループを特定する。
【０１３６】
情報処理装置１００は、例えば、部分データ９５１単独のグループ１３０１を特定する。情報処理装置１００は、例えば、部分データ９１１，９２１，９３１，９４１，９５２のグループ１３０２を特定する。情報処理装置１００は、例えば、部分データ９１２，９２２，９３２，９４２，９５３のグループ１３０３を特定する。
【０１３７】
情報処理装置１００は、グループ１３０３の部分データ９１２，９２２，９３２，９４２，９５３を、正規表現に置換する。正規表現は、例えば、表１３００に示すようになる。情報処理装置１００は、ラベルなしの元データ９３０の部分データ９３２に対応する正規表現と、ラベルありの元データ９１０，９２０の部分データ９１２，９２２に対応する正規表現との編集距離のうち、最小の編集距離「０」を算出する。
【０１３８】
情報処理装置１００は、同様に、グループ１３０３について、ラベルなしの元データ９４０，９５０に対応する最小の編集距離「２」、「２」を算出する。情報処理装置１００は、同様に、グループ１３０２について、ラベルなしの元データ９３０，９４０，９５０に対応する最小の編集距離「０」、「０」、「０」を算出する。
【０１３９】
情報処理装置１００は、グループ１３０１の部分データ９５１を、正規表現に置換する。ここで、グループ１３０１は、ラベルありの元データ９１０，９２０の部分データ９１１，９１２，９２１，９２２のいずれも含まないため、ラベルありの元データ９１０，９２０に対応する正規表現を「ｎｕｌｌ」に設定する。情報処理装置１００は、ラベルなしの元データ９５０の部分データ９５１に対応する正規表現と「ｎｕｌｌ」との編集距離「２」を算出する。
【０１４０】
情報処理装置１００は、ラベルなしの元データ９３０，９４０，９５０に対応する編集距離の総和「０＋０」、「０＋２」、「２＋０＋２」を、距離評価値として算出する。ここでは、情報処理装置１００が、距離評価値の算出に、最小の編集距離を用いる場合について説明したが、これに限らない。例えば、情報処理装置１００が、距離評価値の算出に、最小値以外の編集距離の統計値を用いる場合があってもよい。統計値は、例えば、平均値、最大値、最頻値などである。次に、図１４の説明に移行し、情報処理装置１００が、位置評価値を算出する具体例について説明する。
【０１４１】
図１４は、位置評価値を算出する具体例を示す説明図である。図１４において、情報処理装置１００は、正規表現「￥ｄ／￥ｄ」に基づくマッチ位置配列１０１０を参照して、ラベルなしの元データ９３０のマッチ位置と、ラベルありの元データ９１０，９２０のマッチ位置それぞれとを取得する。情報処理装置１００は、ラベルなしの元データ９３０のマッチ位置と、ラベルありの元データ９１０，９２０のマッチ位置それぞれとの差分絶対値の最小値を、元データ９３０に対応する位置評価値として算出する。情報処理装置１００は、例えば、元データ９３０のマッチ位置評価値「０」を算出する。
【０１４２】
情報処理装置１００は、同様に、ラベルなしの元データ９４０，９５０の位置評価値「０」、「１」を算出する。元データ９３０，９４０，９５０に対応する位置評価値は、例えば、表１４００に示すようになる。ここでは、情報処理装置１００が、位置評価値の算出に、差分絶対値の最小値を用いる場合について説明したが、これに限らない。例えば、情報処理装置１００が、位置評価値の算出に、最小値以外の差分絶対値の統計値を用いる場合があってもよい。統計値は、例えば、平均値、最大値、最頻値などである。次に、図１５の説明に移行し、情報処理装置１００が、元データ９３０，９４０，９５０に対応する分割数評価値と距離評価値と位置評価値とに基づいて、レコード評価値を算出し、成功度を算出する具体例について説明する。
【０１４３】
図１５は、レコード評価値を算出し、成功度を算出する具体例を示す説明図である。図１５において、情報処理装置１００は、元データ９３０に対応する分割数評価値「０」と距離評価値「０」と位置評価値「０」の合計「０」を、元データ９３０に対応するレコード評価値「０」として算出する。情報処理装置１００は、同様に、元データ９４０，９５０に対応するレコード評価値「２」、「６」を算出する。
【０１４４】
情報処理装置１００は、元データ９３０，９４０，９５０に対応するレコード評価値「０」、「２」、「６」の和の逆数「１／８」を、正規表現「￥ｄ／￥ｄ」の成功度「１／８」として算出する。次に、図１６〜図１８の説明に移行し、情報処理装置１００が、他の正規表現「￥ｄ＋＋／￥ｄ」、「￥ｄ／￥ｄ＋＋」、「￥ｄ＋＋／￥ｄ＋＋」の成功度を算出する具体例について説明する。
【０１４５】
図１６〜図１８は、他の正規表現の成功度を算出する具体例を示す説明図である。図１６において、情報処理装置１００は、元データ９１０，９２０，９３０，９４０，９５０を、正規表現「￥ｄ＋＋／￥ｄ」に対応する箇所を基準に分割する。元データ９１０は、例えば、部分データ１６１１，１６１２に分割される。元データ９２０は、例えば、部分データ１６２１，１６２２に分割される。元データ９３０は、例えば、部分データ１６３１，１６３２に分割される。元データ９４０は、例えば、部分データ１６４１，１６４２に分割される。元データ９５０は、例えば、部分データ１６５１，１６５２に分割される。
【０１４６】
情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ」に基づく分割結果に基づいて、図１２と同様に、分割数を算出し、分割数評価値「０」を算出する。分割数は、例えば、表１６６０に示すようになる。また、情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ」に基づく分割結果に基づいて、図１３と同様に、編集距離を算出し、距離評価値「６」を算出する。編集距離は、例えば、表１６７０に示すようになる。
【０１４７】
また、情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ」に基づく分割結果に基づいて、図１４と同様に、マッチ位置を参照して、位置評価値「０」を算出する。マッチ位置は、例えば、表１６８０に示すようになる。また、情報処理装置１００は、図１５と同様に、正規表現「￥ｄ＋＋／￥ｄ」の成功度「１／６」を算出する。次に、図１７の説明に移行する。
【０１４８】
図１７において、情報処理装置１００は、元データ９１０，９２０，９３０，９４０，９５０を、正規表現「￥ｄ／￥ｄ＋＋」に対応する箇所を基準に分割する。元データ９１０は、例えば、部分データ１７１１，１７１２に分割される。元データ９２０は、例えば、部分データ１７２１，１７２２に分割される。元データ９３０は、例えば、部分データ１７３１，１７３２に分割される。元データ９４０は、例えば、部分データ１７４１，１７４２に分割される。元データ９５０は、例えば、部分データ１７５１，１７５２，１７５３に分割される。
【０１４９】
情報処理装置１００は、正規表現「￥ｄ／￥ｄ＋＋」に基づく分割結果に基づいて、図１２と同様に、分割数を算出し、分割数評価値「１」を算出する。分割数は、例えば、表１７６０に示すようになる。また、情報処理装置１００は、正規表現「￥ｄ／￥ｄ＋＋」に基づく分割結果に基づいて、図１３と同様に、編集距離を算出し、距離評価値「６」を算出する。編集距離は、例えば、表１７７０に示すようになる。
【０１５０】
また、情報処理装置１００は、正規表現「￥ｄ／￥ｄ＋＋」に基づく分割結果に基づいて、図１４と同様に、マッチ位置を参照して、位置評価値「１」を算出する。マッチ位置は、例えば、表１７８０に示すようになる。また、情報処理装置１００は、図１５と同様に、正規表現「￥ｄ／￥ｄ＋＋」の成功度「１／８」を算出する。次に、図１８の説明に移行する。
【０１５１】
図１８において、情報処理装置１００は、元データ９１０，９２０，９３０，９４０，９５０を、正規表現「￥ｄ＋＋／￥ｄ＋＋」に対応する箇所を基準に分割する。元データ９１０は、例えば、部分データ１８１１，１８１２に分割される。元データ９２０は、例えば、部分データ１８２１，１８２２に分割される。元データ９３０は、例えば、部分データ１８３１，１８３２に分割される。元データ９４０は、例えば、部分データ１８４１，１８４２に分割される。元データ９５０は、例えば、部分データ１８５１，１８５２に分割される。
【０１５２】
情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ＋＋」に基づく分割結果に基づいて、図１２と同様に、分割数を算出し、分割数評価値「０」を算出する。分割数は、例えば、表１８６０に示すようになる。また、情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ＋＋」に基づく分割結果に基づいて、図１３と同様に、編集距離を算出し、距離評価値「４」を算出する。編集距離は、例えば、表１８７０に示すようになる。
【０１５３】
また、情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ＋＋」に基づく分割結果に基づいて、図１４と同様に、マッチ位置を参照して、位置評価値「０」を算出する。マッチ位置は、例えば、表１８８０に示すようになる。また、情報処理装置１００は、図１５と同様に、正規表現「￥ｄ＋＋／￥ｄ＋＋」の成功度「１／４」を算出する。これにより、情報処理装置１００は、元データ群９００に対する加工に、どのような正規表現を用いることが好ましいかを判断する指標となる、それぞれの正規表現の成功度を算出することができる。
【０１５４】
そして、情報処理装置１００は、それぞれの正規表現の成功度に基づいて、ユーザが、いずれの正規表現を利用して、元データ群９００を加工すれば、ユーザの意図に沿って元データ群９００が加工可能であるかを判断しやすくすることができる。情報処理装置１００は、例えば、それぞれの正規表現の成功度を、クライアント装置２０１に表示させ、ユーザに把握可能にすることができる。このため、ユーザは、元データ群９００を加工しやすくなり、作業量の低減化を図ることができる。
【０１５５】
また、情報処理装置１００は、それぞれの正規表現の成功度に基づいて、いずれかの正規表現を利用して、ユーザの意図に沿って元データ群９００を加工してもよい。また、情報処理装置１００は、それぞれの正規表現の成功度に基づいて、いずれかの正規表現を利用して、ユーザの意図に沿って元データ群９００を加工することができるプログラムを生成してもよい。次に、図１９の説明に移行し、情報処理装置１００が、それぞれの正規表現の成功度を、クライアント装置２０１に表示させる場合の、クライアント装置２０１における表示画面例について説明する。
【０１５６】
（クライアント装置２０１における表示画面例）
図１９は、クライアント装置２０１における表示画面例を示す説明図である。図１９において、情報処理装置１００は、図９〜図１８において算出した、それぞれの正規表現の成功度の一覧１９００を、クライアント装置２０１に送信する。クライアント装置２０１は、それぞれの正規表現の成功度の一覧１９００を受信すると、表示画面１９１０を表示する。
【０１５７】
クライアント装置２０１は、表示画面１９１０の表示領域１９１１上に、それぞれの正規表現の成功度の一覧１９００と、それぞれの正規表現の選択を受け付けるチェックボックス１９４０とを表示する。図１９の例では、クライアント装置２０１は、ユーザの操作入力に基づき、正規表現「￥ｄ＋＋／￥ｄ＋＋」の選択を受け付ける。
【０１５８】
クライアント装置２０１は、正規表現「￥ｄ＋＋／￥ｄ＋＋」の選択を受け付けると、正規表現「￥ｄ＋＋／￥ｄ＋＋」を、情報処理装置１００に送信する。情報処理装置１００は、正規表現「￥ｄ＋＋／￥ｄ＋＋」を利用して、元データ群９００を加工し、元データ群９００と対応付けて加工後データ群１９３０を、クライアント装置２０１に送信する。クライアント装置２０１は、元データ群９００と対応付けて加工後データ群１９３０を受信すると、表示画面１９１０の表示領域１９１２上に、元データ群９００と対応付けて加工後データ群１９３０を表示する。
【０１５９】
これにより、情報処理装置１００は、それぞれの正規表現の成功度に基づいて、ユーザが、いずれの正規表現を利用して、元データ群９００を加工すれば、ユーザの意図に沿って元データ群９００が加工可能であるかを判断しやすくすることができる。情報処理装置１００は、例えば、元データ群９００のうち、ラベルなしの元データ９３０，９４０，９５０に対しても、ユーザの意図に沿って加工可能である正規表現を判断しやすくすることができる。
【０１６０】
情報処理装置１００は、例えば、それぞれの正規表現の成功度を、クライアント装置２０１に表示させ、ユーザに把握可能にすることができる。また、情報処理装置１００は、ユーザが選択した正規表現を利用して、元データ群９００を加工した結果を、ユーザに把握可能にすることができ、作業量の低減化を図ることができる。
【０１６１】
ここでは、情報処理装置１００が、元データ群９００を加工する場合について説明したが、これに限らない。例えば、クライアント装置２０１が、元データ群９００を情報処理装置１００から受信、または、元データ群９００を予め記憶しておき、元データ群９００を加工する場合があってもよい。
【０１６２】
以上の説明では、情報処理装置１００が、分割数評価値と距離評価値と位置評価値とに基づいて、レコード評価値を算出し、正規表現の成功度を算出する場合について説明したが、これに限らない。例えば、情報処理装置１００が、分割数評価値と距離評価値と位置評価値とのいずれか２種類の評価値に基づいて、レコード評価値を算出し、正規表現の成功度を算出する場合があってもよい。また、例えば、情報処理装置１００が、分割数評価値と距離評価値と位置評価値とのいずれかを、そのままレコード評価値として扱い、正規表現の成功度を算出する場合があってもよい。
【０１６３】
（受付処理手順）
次に、図２０を用いて、情報処理装置１００が実行する、受付処理手順の一例について説明する。受付処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１６４】
図２０は、受付処理手順の一例を示すフローチャートである。図２０において、元データ表示部６１０は、元データ群を読み込む（ステップＳ２００１）。そして、元データ表示部６１０は、読み込んだ元データ群を、クライアント装置２０１に表示させる（ステップＳ２００２）。
【０１６５】
次に、ユーザ入力部６２０は、クライアント装置２０１から、元データ群のいずれかの元データの指定と、指定された元データを加工する加工例を示す加工データの入力とを受け付ける（ステップＳ２００３）。そして、ユーザ入力部６２０は、クライアント装置２０１から、推定指示を受け付けたか否かを判定する（ステップＳ２００４）。
【０１６６】
ここで、推定指示を受け付けていない場合（ステップＳ２００４：Ｎｏ）、ユーザ入力部６２０は、ステップＳ２００３の処理に戻る。一方で、推定指示を受け付けている場合（ステップＳ２００４：Ｙｅｓ）、ユーザ入力部６２０は、ステップＳ２００５の処理に移行する。
【０１６７】
ステップＳ２００５では、ユーザ入力部６２０は、正規表現推定部６３０の実行フラグを有効に設定し、正規表現推定部６３０に、指定された元データと、入力された加工データとを出力し、図２１に後述する推定処理を実行させる（ステップＳ２００５）。そして、情報処理装置１００は、受付処理を終了する。これにより、情報処理装置１００は、複数の正規表現の生成に用いる各種情報を取得することができ、図２１に後述する推定処理において利用可能にすることができる。
【０１６８】
（推定処理手順）
次に、図２１を用いて、情報処理装置１００が実行する、推定処理手順の一例について説明する。推定処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１６９】
図２１は、推定処理手順の一例を示すフローチャートである。図２１において、正規表現推定部６３０は、実行フラグが有効であるか否かを判定する（ステップＳ２１０１）。
【０１７０】
ここで、実行フラグが有効ではない場合（ステップＳ２１０１：Ｎｏ）、正規表現推定部６３０は、ステップＳ２１０１の処理に戻る。一方で、実行フラグが有効である場合（ステップＳ２１０１：Ｙｅｓ）、正規表現推定部６３０は、ステップＳ２１０２の処理に移行する。
【０１７１】
ステップＳ２１０２では、正規表現推定部６３０は、ユーザ入力部６２０から、指定された元データと、入力された加工データとを読み込み、候補推定部６３１に出力する（ステップＳ２１０２）。そして、候補推定部６３１は、元データ群の加工に利用する候補となる複数の正規表現を推定し、成功度算出部６３２に出力する（ステップＳ２１０３）。
【０１７２】
次に、成功度算出部６３２は、図２２に後述する成功度算出処理を実行し、複数の正規表現のそれぞれの正規表現の成功度を、正規表現選択部６３３に出力する（ステップＳ２１０４）。そして、正規表現選択部６３３は、それぞれの正規表現の成功度に基づいて、候補となる複数の正規表現のいずれかの正規表現を選択する（ステップＳ２１０５）。
【０１７３】
次に、正規表現選択部６３３は、元データ加工部６４０に、選択した正規表現を出力し、元データ加工部６４０に、図２６に後述する加工処理を実行させる（ステップＳ２１０６）。そして、情報処理装置１００は、推定処理を終了する。これにより、情報処理装置１００は、元データ群の加工に利用する候補となる複数の正規表現を推定し、図２６に後述する加工処理において元データ群の加工に利用可能にすることができる。
【０１７４】
（成功度算出処理手順）
次に、図２２を用いて、情報処理装置１００が実行する、成功度算出処理手順の一例について説明する。成功度算出処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１７５】
図２２は、成功度算出処理手順の一例を示すフローチャートである。図２２において、成功度算出部６３２は、元データ群を読み込む（ステップＳ２２０１）。そして、成功度算出部６３２は、候補となる複数の正規表現のうち、まだ処理していない正規表現を選択する（ステップＳ２２０２）。
【０１７６】
次に、成功度算出部６３２は、図２３に後述する第１算出処理を実行する（ステップＳ２２０３）。そして、成功度算出部６３２は、図２４に後述する第２算出処理を実行する（ステップＳ２２０４）。
【０１７７】
次に、成功度算出部６３２は、図２５に後述する第３算出処理を実行する（ステップＳ２２０５）。そして、成功度算出部６３２は、候補となる複数の正規表現のうち、すべての正規表現を選択したか否かを判定する（ステップＳ２２０６）。
【０１７８】
ここで、まだ選択していない正規表現がある場合（ステップＳ２２０６：Ｎｏ）、成功度算出部６３２は、ステップＳ２２０２の処理に戻る。一方で、すべての正規表現を選択している場合（ステップＳ２２０６：Ｙｅｓ）、情報処理装置１００は、成功度算出処理を終了する。これにより、情報処理装置１００は、それぞれの正規表現の成功度を算出することができ、いずれの正規表現が、ユーザの意図に沿って元データ群を加工可能な確率が高いのかを参照可能にすることができる。
【０１７９】
（第１算出処理手順）
次に、図２３を用いて、情報処理装置１００が実行する、第１算出処理手順の一例について説明する。第１算出処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１８０】
図２３は、第１算出処理手順の一例を示すフローチャートである。図２３において、成功度算出部６３２は、元データごとに、選択した正規表現にマッチした箇所をスプリットで分割する（ステップＳ２３０１）。そして、成功度算出部６３２は、分割した配列の中で、選択した正規表現にマッチする部分のマッチインデックスを算出する（ステップＳ２３０２）。
【０１８１】
次に、成功度算出部６３２は、元データの中で、何番目の座標に、選択した正規表現にマッチした箇所が存在するかを特定する（ステップＳ２３０３）。そして、情報処理装置１００は、第１算出処理を終了する。
【０１８２】
（第２算出処理手順）
次に、図２４を用いて、情報処理装置１００が実行する、第２算出処理手順の一例について説明する。第２算出処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１８３】
図２４は、第２算出処理手順の一例を示すフローチャートである。図２４において、成功度算出部６３２は、元データ群のそれぞれの元データの分割数に基づいて、元データ群のうち対応する加工データが存在しない元データごとに、分割数評価値を算出する（ステップＳ２４０１）。
【０１８４】
次に、成功度算出部６３２は、元データ群のそれぞれの元データの部分間の編集距離に基づいて、元データ群のうち対応する加工データが存在しない元データごとに、距離評価値を算出する（ステップＳ２４０２）。
【０１８５】
次に、成功度算出部６３２は、元データ群のそれぞれの元データの中で、正規表現にマッチした箇所が存在する座標に基づいて、元データ群のうち対応する加工データが存在しない元データごとに、位置評価値を算出する（ステップＳ２４０３）。そして、情報処理装置１００は、第２算出処理を終了する。
【０１８６】
（第３算出処理手順）
次に、図２５を用いて、情報処理装置１００が実行する、第３算出処理手順の一例について説明する。第３算出処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１８７】
図２５は、第３算出処理手順の一例を示すフローチャートである。図２５において、成功度算出部６３２は、元データ群のうち対応する加工データが存在しない元データごとに、分割数評価値と距離評価値と位置評価値とを合計した合計評価値を算出する（ステップＳ２５０１）。
【０１８８】
次に、成功度算出部６３２は、元データ群のうち対応する加工データが存在しない元データごとの合計評価値の総和の逆数を、選択した正規表現の成功度として算出する（ステップＳ２５０２）。そして、情報処理装置１００は、第３算出処理を終了する。
【０１８９】
（加工処理手順）
次に、図２６を用いて、情報処理装置１００が実行する、加工処理手順の一例について説明する。加工処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１９０】
図２６は、加工処理手順の一例を示すフローチャートである。図２６において、元データ加工部６４０は、正規表現選択部６３３から、正規表現を読み込む（ステップＳ２６０１）。
【０１９１】
次に、元データ加工部６４０は、元データ群を読み込む（ステップＳ２６０２）。そして、元データ加工部６４０は、読み込んだ正規表現を利用して、読み込んだ元データ群を加工する（ステップＳ２６０３）。
【０１９２】
次に、元データ加工部６４０は、加工した元データ群を保存する（ステップＳ２６０４）。そして、情報処理装置１００は、加工処理を終了する。これにより、情報処理装置１００は、元データ群を自動で加工することができ、ユーザが人手で元データ群を加工する場合に比べて、ユーザの作業量の低減化を図ることができる。
【０１９３】
ここで、情報処理装置１００は、図２０〜図２６のそれぞれのフローチャートの一部ステップの処理の順序を入れ替えて実行してもよい。例えば、ステップＳ２３０１〜Ｓ２３０３の処理の順序は入れ替え可能である。また、情報処理装置１００は、図２０〜図２６のそれぞれのフローチャートの一部ステップの処理を省略してもよい。例えば、ステップＳ２４０１〜Ｓ２４０３のいずれかの処理は省略可能である。
【０１９４】
以上説明したように、情報処理装置１００によれば、データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得することができる。情報処理装置１００によれば、データ群のそれぞれのデータ上の、取得した複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、それぞれの正規表現をデータ群に対する加工に利用する尤度を算出することができる。情報処理装置１００によれば、算出したそれぞれの正規表現の尤度を出力することができる。これにより、情報処理装置１００は、データ群に対する加工に、どのような正規表現を用いることが好ましいかを判断可能にすることができる。このため、情報処理装置１００は、いずれかの正規表現を利用して、ユーザの意図に沿ってデータ群を加工可能にすることができる。また、情報処理装置１００は、ユーザの作業量の低減化を図ることができる。
【０１９５】
情報処理装置１００によれば、それぞれの正規表現について、データ群のそれぞれのデータを正規表現に対応する箇所を基準に分割した場合の、データ群のそれぞれのデータから分割した部分データの数に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、データ群のそれぞれのデータから分割した部分データの数に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【０１９６】
情報処理装置１００によれば、データ群に含まれる１以上のデータと、１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成された複数の正規表現を取得することができる。情報処理装置１００によれば、それぞれの正規表現について、１以上のデータのそれぞれのデータから分割した部分データの数と、残余のデータのそれぞれのデータから分割した部分データの数とを比較することができる。情報処理装置１００によれば、比較した結果に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、ユーザの意図が反映されている確率が高いと判断される、複数の正規表現の生成に用いた１以上のデータに関して現れる規則性を、尤度を算出する基準とすることができ、尤度を算出する精度の向上を図ることができる。
【０１９７】
情報処理装置１００によれば、それぞれの正規表現について、データ群のそれぞれのデータから、正規表現に対応する箇所を基準に分割した部分データの中から、第１の部分データと第２の部分データとを選択することができる。情報処理装置１００によれば、選択した第１の部分データと第２の部分データとの類似度に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、第１の部分データと、第２の部分データとの類似性に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【０１９８】
情報処理装置１００によれば、データ群に含まれる１以上のデータと、１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成された複数の正規表現を取得することができる。情報処理装置１００によれば、それぞれの正規表現について、１以上のデータのそれぞれのデータから分割した部分データの中から、第１の部分データを選択することができる。情報処理装置１００によれば、残余のデータのそれぞれのデータから分割した部分データの中から、第１の部分データに対応する位置に存在する第２の部分データを選択することができる。情報処理装置１００によれば、それぞれの正規表現について、選択した第１の部分データと、選択した第２の部分データとの類似度に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、ユーザの意図が反映されている確率が高いと判断される、複数の正規表現の生成に用いた１以上のデータに関して現れる規則性を、尤度を算出する基準とすることができ、尤度を算出する精度の向上を図ることができる。
【０１９９】
情報処理装置１００によれば、類似度を、第１の部分データと第２の部分データとの編集距離によって表現することができる。これにより、情報処理装置１００は、第１の部分データと第２の部分データとの類似度を算出することができる。
【０２００】
情報処理装置１００によれば、それぞれの正規表現について、データ群のそれぞれのデータ上の正規表現に対応する箇所が存在する位置に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、データ群のそれぞれのデータ上の正規表現に対応する箇所が存在する位置に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【０２０１】
情報処理装置１００によれば、データ群に含まれる１以上のデータと、１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成された複数の正規表現を取得することができる。情報処理装置１００によれば、それぞれの正規表現について、１以上のデータのそれぞれのデータ上の正規表現に対応する箇所が存在する位置と、残余のデータのそれぞれのデータ上の正規表現に対応する箇所が存在する位置とを比較することができる。情報処理装置１００によれば、比較した結果に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、ユーザの意図が反映されている確率が高いと判断される、複数の正規表現の生成に用いた１以上のデータに関して現れる規則性を、尤度を算出する基準とすることができ、尤度を算出する精度の向上を図ることができる。
【０２０２】
情報処理装置１００によれば、それぞれの正規表現について、データ群のそれぞれのデータ上の正規表現に対応する箇所の数に基づいて、正規表現の尤度を算出することができる。これにより、情報処理装置１００は、データ群のそれぞれのデータ上の正規表現に対応する箇所の数に関して現れる規則性から、尤度を算出する精度の向上を図ることができる。
【０２０３】
情報処理装置１００によれば、算出したそれぞれの正規表現の尤度に基づいて、複数の正規表現のいずれかの正規表現を選択し、選択したいずれかの正規表現を利用して、データ群を加工して出力することができる。これにより、情報処理装置１００は、データ群を自動で加工する際に、ユーザの意図に沿って加工される確率の向上を図ることができる。また、情報処理装置１００は、ユーザが人手でデータ群を加工する場合に比べて、ユーザの作業量の低減化を図ることができる。
【０２０４】
情報処理装置１００によれば、データ群に含まれる１以上のデータと、１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、複数の正規表現を生成することができる。これにより、情報処理装置１００は、複数の正規表現を自動で生成することができる。このため、情報処理装置１００は、ユーザが複数の正規表現を生成せずに済むようにして、ユーザの作業量の低減化を図ることができる。
【０２０５】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明した情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２０６】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２０７】
（付記１）データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【０２０８】
（付記２）前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの数に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記１に記載の情報処理プログラム。
【０２０９】
（付記３）前記複数の正規表現は、前記データ群に含まれる１以上のデータと、前記１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成され、
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記１以上のデータのそれぞれのデータから分割した部分データの数と、前記データ群に含まれる前記１以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの数とを比較した結果に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記２に記載の情報処理プログラム。
【０２１０】
（付記４）前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記データ群のそれぞれのデータから分割した部分データの中から選択した、第１の部分データと第２の部分データとの類似度に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記１〜３のいずれか一つに記載の情報処理プログラム。
【０２１１】
（付記５）前記複数の正規表現は、前記データ群に含まれる１以上のデータと、前記１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成され、
前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータを前記正規表現に対応する箇所を基準に分割した場合の、前記１以上のデータのそれぞれのデータから分割した部分データの中から選択した第１の部分データと、前記データ群に含まれる前記１以上のデータを除いた残余のデータのそれぞれのデータから分割した部分データの中から選択した、前記第１の部分データに対応する位置に存在する第２の部分データとの類似度に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記４に記載の情報処理プログラム。
【０２１２】
（付記６）前記類似度は、前記第１の部分データと前記第２の部分データとの編集距離によって表現される、ことを特徴とする付記４または５に記載の情報処理プログラム。
【０２１３】
（付記７）前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記１〜６のいずれか一つに記載の情報処理プログラム。
【０２１４】
（付記８）前記複数の正規表現は、前記データ群に含まれる１以上のデータと、前記１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて生成され、
前記算出する処理は、
前記それぞれの正規表現について、前記１以上のデータのそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置と、前記データ群に含まれる前記１以上のデータを除いた残余のデータのそれぞれのデータ上の前記正規表現に対応する箇所が存在する位置とを比較した結果に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記７に記載の情報処理プログラム。
【０２１５】
（付記９）前記算出する処理は、
前記それぞれの正規表現について、前記データ群のそれぞれのデータ上の前記正規表現に対応する箇所の数に基づいて、前記正規表現の尤度を算出する、ことを特徴とする付記１〜８のいずれか一つに記載の情報処理プログラム。
【０２１６】
（付記１０）算出した前記それぞれの正規表現の尤度に基づいて、前記複数の正規表現のいずれかの正規表現を選択し、
選択した前記いずれかの正規表現を利用して、前記データ群を加工して出力する、
処理を前記コンピュータに実行させることを特徴とする付記１〜９のいずれか一つに記載の情報処理プログラム。
【０２１７】
（付記１１）前記取得する処理は、
前記データ群に含まれる１以上のデータと、前記１以上のデータのそれぞれのデータの加工例を示すデータとに基づいて、前記複数の正規表現を生成する、ことを特徴とする付記１〜１０のいずれか一つに記載の情報処理プログラム。
【０２１８】
（付記１２）データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【０２１９】
（付記１３）データ群に含まれるデータと前記データの加工例を示すデータとに基づき生成された、前記データ群のそれぞれのデータ上から加工する箇所を探索することに利用可能である複数の正規表現を取得し、
前記データ群のそれぞれのデータ上の、取得した前記複数の正規表現のそれぞれの正規表現に対応する箇所に基づいて、前記それぞれの正規表現を前記データ群に対する加工に利用する尤度を算出し、
算出した前記それぞれの正規表現の尤度を出力する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【０２２０】
１００  情報処理装置
１１０  データ群
１１１，１２１  データ集合
２００  情報処理システム
２０１  クライアント装置
２１０  ネットワーク
３００，４００  バス
３０１，４０１  ＣＰＵ
３０２，４０２  メモリ
３０３，４０３  ネットワークＩ／Ｆ
３０４，４０４  記録媒体Ｉ／Ｆ
３０５，４０５  記録媒体
４０６  ディスプレイ
４０７  入力装置
５００  記憶部
５０１  取得部
５０２  生成部
５０３  算出部
５０４  選択部
５０５  加工部
５０６  出力部
６０１，９００  元データ群
６０２，１９３０  加工後データ群
６１０  元データ表示部
６２０  ユーザ入力部
６３０  正規表現推定部
６３１  候補推定部
６３２  成功度算出部
６３３  正規表現選択部
６４０  元データ加工部
７０１〜７０３  符号
７１０，７３０，９１０，９２０，９３０，９４０，９５０  元データ
７２０  加工データ
７４０，７５０，９６０，１１０１〜１１０４，１２００，１２１０，１３００，１４００，１６６０，１６７０，１６８０，１７６０，１７７０，１７８０，１８６０，１８７０，１８８０  表
９１１，９１２，９２１，９２２，９３１，９３２，９４１，９４２，９５１〜９５３，１６１１，１６１２，１６２１，１６２２，１６３１，１６３２，１６４１，１６４２，１６５１，１６５２，１７１１，１７１２，１７２１，１７２２，１７３１，１７３２，１７４１，１７４２，１７５１〜１７５３，１８１１，１８１２，１８２１，１８２２，１８３１，１８３２，１８４１，１８４２，１８５１，１８５２  部分データ
１０００  マッチ情報
１０１０  マッチ位置配列
１０２０  マッチインデックス配列
１３０１〜１３０３  グループ
１９００  一覧
１９１０  表示画面
１９４０  チェックボックス
【国際調査報告】
2020245993.tif 000029
2020245993.tif 000030
2020245993.tif 000031
2020245993.tif 000032