JP2022029597A - データ処理プログラム、データ処理装置及びデータ処理方法 - Google Patents

データ処理プログラム、データ処理装置及びデータ処理方法 Download PDF

Info

Publication number
JP2022029597A
JP2022029597A JP2020132957A JP2020132957A JP2022029597A JP 2022029597 A JP2022029597 A JP 2022029597A JP 2020132957 A JP2020132957 A JP 2020132957A JP 2020132957 A JP2020132957 A JP 2020132957A JP 2022029597 A JP2022029597 A JP 2022029597A
Authority
JP
Japan
Prior art keywords
cell
data
token
input
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020132957A
Other languages
English (en)
Inventor
拓人 辻
Takuto Tsuji
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2020132957A priority Critical patent/JP2022029597A/ja
Priority to US17/307,207 priority patent/US20220043795A1/en
Publication of JP2022029597A publication Critical patent/JP2022029597A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】入力データ及び出力データのデータサイズが大きい場合であっても変換プログラムを短時間で生成することを可能とするデータ処理プログラム、データ処理装置及びデータ処理方法を提供する。【解決手段】入力データと入力データを所定の規則に従って変換した出力データとの対応関係の特徴を示すトークン情報を生成し、入力データを出力データに変換する変換プログラムの生成に用いる1以上の中間プログラムを記憶部に記憶した複数の中間プログラムから探索する際に、トークン情報に対応しない中間プログラムを1以上の中間プログラムの候補から排除する。【選択図】図10

Description

本発明は、データ処理プログラム、データ処理装置及びデータ処理方法に関する。
近年、入力データ及び出力データの例を用いることによって、入力データを出力データに変換することが可能なプログラム(以下、変換プログラムとも呼ぶ)を生成するPBE(Programming By Example)が登場している。
具体的に、このようなPBEでは、例えば、予め用意された複数の中間プログラムから、入力データの例を出力データの例に変換するために必要な中間プログラムの組合せを探索することによって、変換プログラムの生成を行う。
これにより、PBEの利用者(以下、単に利用者とも呼ぶ)は、生成した変換プログラムを用いることで、他の入力データ(変換プログラムの生成に用いた入力データの例以外の入力データ)に対応する出力データの生成を容易に行うことが可能になる(例えば、特許文献1乃至3参照)。
特開2019-159362 特表2016-502701 特開平10-171643
ここで、例えば、入力データ及び出力データがテーブル形式のデータである場合、各データに含まれるセルの数等によっては、各データのデータサイズが大きくなり、入力データ及び出力データの対応関係が複雑になる場合がある。そのため、利用者は、適切な中間プログラムの組合せの探索(変換プログラムの生成)を短時間で行うことができない場合がある。
そこで、一つの側面では、本発明は、入力データ及び出力データのデータサイズが大きい場合であっても変換プログラムを短時間で生成することを可能とするデータ処理プログラム、データ処理装置及びデータ処理方法を提供することを目的とする。
実施の形態の一態様では、入力データと該入力データを所定の規則に従って変換した出力データとの対応関係の特徴を示すトークン情報を生成し、前記入力データを前記出力データに変換する変換プログラムの生成に用いる1以上の中間プログラムを記憶部に記憶した複数の中間プログラムから探索する際に、前記トークン情報に対応しない中間プログラムを前記1以上の中間プログラムの候補から排除する、処理をコンピュータに実行させる。
一つの側面によれば、入力データ及び出力データのデータサイズが大きい場合であっても変換プログラムを短時間で生成することを可能とする。
図1は、情報処理システム10の構成について説明する図である。 図2は、情報処理装置1におけるデータ処理の比較例を説明する図である。 図3は、情報処理装置1におけるデータ処理の比較例を説明する図である。 図4は、情報処理装置1におけるデータ処理の比較例を説明する図である。 図5は、情報処理装置1におけるデータ処理の比較例を説明する図である。 図6は、情報処理装置1におけるデータ処理の比較例を説明する図である。 図7は、情報処理装置1のハードウエア構成を説明する図である。 図8は、情報処理装置1の機能のブロック図である。 図9は、第1の実施の形態におけるデータ処理の概略を説明するフローチャート図である。 図10は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図11は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図12は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図13は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図14は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図15は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図16は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図17は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図18は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図19は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図20は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図21は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図22は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図23は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図24は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図25は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。 図26は、入力テーブル131、出力テーブル132及びトークン情報133の具体例について説明する図である。 図27は、入力テーブル131、出力テーブル132及びトークン情報133の具体例について説明する図である。 図28は、入力テーブル131、出力テーブル132及びトークン情報133の具体例について説明する図である。 図29は、入力テーブル131、出力テーブル132及びトークン情報133の具体例について説明する図である。
[情報処理システムの構成]
初めに、情報処理システム10の構成について説明を行う。図1は、情報処理システム10の構成について説明する図である。
図1に示す情報処理システム10は、1台以上の物理マシンからなる情報処理装置1と、利用者が各種情報の入力等を行う操作端末2とを有する。操作端末2は、例えば、デスクトップ型のPC(Personal Computer)やタブレット等のモバイル端末であり、インターネット等のネットワークNWを介して情報処理装置1とアクセスが可能である。
情報処理装置1では、予め用意された入力データを出力データに変換する処理(以下、データ処理とも呼ぶ)が行われる。以下、情報処理装置1におけるデータ処理の比較例について説明を行う。
[情報処理装置におけるデータ処理の比較例]
図2から図6は、情報処理装置1におけるデータ処理の比較例を説明する図である。なお、以下、入力データ及び出力データのそれぞれがテーブル形式のデータ(以下、入力テーブル及び出力テーブルとも呼ぶ)であるものとして説明を行う。
初めに、変換プログラムの生成に用いられる入力テーブル131(入力テーブル131の一部)の具体例について説明を行う。図2は、入力テーブル131の一部の具体例について説明する図である。
図2に示す入力テーブル131は、鉄道の利用者を識別するデータが設定される「ID」と、各利用者による鉄道の利用日時が設定される「日時」と、各利用者が鉄道を利用した乗車駅が設定される「乗車駅」とを項目として有する。
具体的に、図2に示す入力テーブル131において、1行目のデータには、「ID」として「0123」が設定され、「日時」として「8/1 16:00」が設定され、「乗車駅」として「新宿」が設定されている。
また、図2に示す入力テーブル131において、2行目のデータには、「ID」として「2342」が設定され、「日時」として「8/1 17:55」が設定され、「乗車駅」として「品川」が設定されている。
次に、変換プログラムの生成に用いられる出力テーブル132(出力テーブル132の一部)の具体例について説明を行う。図3は、出力テーブル132の一部の具体例について説明する図である。なお、出力テーブル132は、入力テーブル131を所定の規則に従って変換することによって生成されるテーブルである。
図3に示す出力テーブル132は、各利用者による鉄道の利用日が設定される「日付」と、各利用者が鉄道を利用した乗車駅が設定される「駅名」と、各利用者の性別が設定される「性別」と、各利用者の年齢が設定される「年齢」とを項目として有する。
具体的に、図3に示す出力テーブル132において、1行目のデータには、「日付」として「8/1」が設定され、「駅名」として「新宿」が設定され、「性別」として「女」が設定され、「年齢」として「23(歳)」が設定されている。
また、図3に示す出力テーブル132において、2行目のデータには、「日付」として「8/1」が設定され、「駅名」として「品川」が設定され、「性別」として「男」が設定され、「年齢」として「45(歳)」が設定されている。
そして、情報処理装置1は、この場合、データについての各種変形処理を行う複数の中間プログラムPGを組み合わせることによって、図2に示す入力テーブル131を構成する各セルに設定されたデータ(例えば、「日時」及び「乗車駅」に設定されたデータ)を、図3に示す出力テーブル132を構成する各セルに設定されたデータ(例えば、「日付」及び「駅名」に設定されたデータ)に変換することが可能な変換プログラムを生成する。
具体的に、情報処理装置1は、図4に示すように、予め用意された中間プログラムPG1、PR2及びPR3のそれぞれを網羅的に組合せることによって、図2に示す入力テーブル131を構成する各セルに設定されたデータを、図3に示す出力テーブル132を構成する各セルに設定されたデータに変換することが可能な中間プログラムPGの組合せの探索(例えば、Aアルゴリズムによる探索)を行う。
その後、情報処理装置1は、探索を行った中間プログラムPGの組合せからなる変換プログラムを用いることによって、入力テーブル131の他の一部(変換プログラムの生成に用いたデータ以外のデータ)についての変換を行う。
具体的に、情報処理装置1は、変換プログラムを用いることによって、図5及び図6の下線部分に示すように、入力テーブル131の3行目及び4行目における「日時」及び「乗車駅」に設定されたデータを、出力テーブル132の3行目及び4行目における「日付」及び「駅名」に設定されたデータに変換する。
これにより、情報処理装置1は、例えば、入力テーブル131に含まれるデータの数が多い場合であっても、出力テーブル132を構成する各セルに設定されるデータを容易に生成することが可能になる。
なお、情報処理装置1は、この場合、例えば、入力テーブル131に含まれる「ID」と、出力テーブル132に含まれる「性別」及び「年齢」とを対応付けた補助テーブル(図示しない)を参照することによって、入力テーブル131の3行目及び4行目における「ID」に設定されたデータに対応付けられたデータを、出力テーブル132の3行目及び4行目における「性別」及び「年齢」に設定されるデータとして特定するものであってよい。
ここで、入力テーブル131及び出力テーブル132は、各テーブルに含まれるセルの数が多い場合、データサイズが大きくなり、さらに、各テーブルを構成するセルの対応関係が複雑になる。そのため、利用者は、この場合、入力テーブル131を出力テーブル132に変換する変換プログラムの生成を短時間で行うことができない。
そこで、本実施の形態における情報処理装置1は、入力テーブル131と出力テーブル132との対応関係の特徴を示すトークン情報を生成する。そして、情報処理装置1は、記憶部に記憶した複数の中間プログラムPGから入力テーブル131を出力テーブル132に変換する変換プログラムの生成に用いる1以上の中間プログラムPGを探索する際に、生成したトークン情報に対応しない中間プログラムPGを、変換プログラムの生成に用いる中間プログラムPGの候補から排除する。
すなわち、本実施の形態における情報処理装置1は、例えば、入力テーブル131を構成する各セルに設定されたデータと出力テーブル132を構成する各セルに設定されたデータとの対応関係から、変換プログラムの生成に用いる際に選択されないと判断できる中間プログラムPGの特定を予め行う。そして、情報処理装置1は、変換プログラムの生成に用いる中間プログラムPGの組合せの探索を、記憶部に記憶された中間プログラムPGのうち、予め特定した中間プログラムPG以外の中間プログラムPGにおいて行う。
これにより、情報処理装置1は、変換プログラムの生成に用いる中間プログラムPGの組合せの探索範囲を予め限定することが可能になる。そのため、情報処理装置1は、例えば、変換対象の入力データ及び出力データがデータサイズの大きい入力テーブル131及び出力テーブル132である場合であっても、変換プログラムの生成を短時間で行うことが可能になる。
[情報処理装置のハードウエア構成]
次に、情報処理装置1のハードウエア構成について説明する。図7は、情報処理装置1のハードウエア構成を説明する図である。
情報処理装置1は、図7に示すように、プロセッサであるCPU101と、メモリ102と、通信装置103と、記憶媒体104とを有する。各部は、バス105を介して互いに接続される。
記憶媒体104は、例えば、データ処理を行うためのプログラム110を記憶するプログラム格納領域(図示しない)を有する。また、記憶媒体104は、例えば、データ処理等を行う際に用いられる情報を記憶する情報格納領域130を有する。なお、記憶媒体104は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)であってよい。
CPU101は、記憶媒体104からメモリ102にロードされたプログラム110を実行してデータ処理を行う。
また、通信装置103は、例えば、ネットワークを介して操作端末2との通信を行う。
[情報処理装置の機能]
次に、情報処理装置1の機能について説明を行う。図8は、情報処理装置1の機能のブロック図である。
情報処理装置1は、図8に示すように、例えば、CPU101やメモリ102等のハードウエアとプログラム110とが有機的に協働することにより、情報受信部111と、情報管理部112と、トークン生成部113と、候補排除部114と、プログラム生成部115とを有する。
また、情報処理装置1は、例えば、図8に示すように、入力テーブル131と、出力テーブル132と、トークン情報133と、中間プログラムPGとを情報格納領域130に記憶する。
情報受信部111は、例えば、利用者が操作端末2を介して入力した入力テーブル131及び出力テーブル132を受信する。
情報管理部112は、例えば、情報受信部111が受信した入力テーブル131及び出力テーブル132を情報格納領域130に記憶する。
トークン生成部113は、情報格納領域130に記憶した入力テーブル131を構成する各セルと、情報格納領域130に記憶した出力テーブル132を構成する各セルとの対応関係の特徴を示すトークン情報133を生成する。
候補排除部114は、情報格納領域130に記憶した中間プログラムPGのうち、トークン生成部113が生成したトークン情報133に対応しない中間プログラムPGを排除する。
プログラム生成部115は、候補排除部114が排除した中間プログラムPG以外の中間プログラムPG(候補排除部114によって排除されなかった中間プログラムPG)を探索することによって、情報格納領域130に記憶した入力テーブル131を情報格納領域130に記憶した出力テーブル132に変換することが可能な中間プログラムPGの組合せを特定する。そして、プログラム生成部115は、特定した中間プログラムPGの組合せから構成される変換プログラムの生成を行う。
[第1の実施の形態の概略]
次に、第1の実施の形態の概略について説明する。図9は、第1の実施の形態におけるデータ処理の概略を説明するフローチャート図である。また、図10は、第1の実施の形態におけるデータ処理の概略を説明する図である。
情報処理装置1は、図9に示すように、データ処理タイミングになるまで待機する(S201のNO)。データ処理タイミングは、例えば、利用者が操作端末2を介して入力テーブル131及び出力テーブル132を入力したタイミングであってよい。また、データ処理タイミングは、例えば、利用者が操作端末2を介して入力テーブル131の変換を行う旨の情報を入力したタイミングであってよい。
そして、データ処理タイミングになった場合(S201のYES)、情報処理装置1は、例えば、入力テーブル131と入力テーブル131を所定の規則(変換規則)に従って変換された出力テーブル132との対応関係の特徴を示すトークン情報133を生成する(S202)。
続いて、情報処理装置1は、情報格納領域130に記憶した複数の中間プログラムPGから、S202の処理で生成したトークン情報133に対応しない中間プログラムPGを排除する(S203)。
その後、情報処理装置1は、入力テーブル131を出力テーブル132に変換する変換プログラムPRの生成に用いる1以上の中間プログラムPGを、情報格納領域130に記憶した複数の中間プログラムPGであってS203の処理で排除されていない中間プログラムPGから探索する(S204)。
すなわち、本実施の形態における情報処理装置1は、例えば、入力テーブル131を構成する各セルに設定されたデータと出力テーブル132を構成する各セルに設定されたデータとの対応関係から、変換プログラムの生成に用いる際に選択されないと判断できる中間プログラムPGの特定を予め行う。そして、情報処理装置1は、変換プログラムの生成に用いる中間プログラムPGの組合せの探索を、情報格納領域130に記憶された中間プログラムPGのうち、予め特定した中間プログラムPG以外の中間プログラムPGにおいて行う。
具体的に、例えば、図10に示すように、変換プログラムの生成に用いる際に選択されない中間プログラムPGとして中間プログラムPG1が特定された場合、情報処理装置1は、中間プログラムPG1についての枝刈りを行う。そして、情報処理装置1は、変換プログラムの生成に用いる中間プログラムPGの組合せの探索を、中間プログラムPG1以外の中間プログラムPG(中間プログラムPG2及び中間プログラムPG3)から行う。
これにより、情報処理装置1は、変換プログラムの生成に用いる中間プログラムPGの組合せの探索範囲を予め限定することが可能になる。そのため、情報処理装置1は、例えば、変換対象の入力テーブル131及び出力テーブル132のデータサイズが大きい場合であっても、入力テーブル131を出力テーブル132に変換する変換プログラムの生成を短時間で行うことが可能になる。
[第1の実施の形態の詳細]
次に、第1の実施の形態の詳細について説明する。図11から図25は、第1の実施の形態におけるデータ処理の詳細を説明するフローチャート図である。また、図26から図29は、第1の実施の形態におけるデータ処理の詳細を説明する図である。以下、中間プログラムPGがテーブル形式のデータに特化したDSL(Domain Specific Language)によって記述されたプログラムであるものとして説明を行う。
[テーブル管理処理]
初めに、データ処理のうち、入力テーブル131及び出力テーブル132の管理を行う処理(以下、テーブル管理処理とも呼ぶ)について説明を行う。図11は、テーブル管理処理を説明するフローチャート図である。
情報処理装置1の情報受信部111は、図11に示すように、例えば、操作端末2から送信された入力テーブル131及び出力テーブル132を受信するまで待機する(S1のNO)。
そして、操作端末2から送信された入力テーブル131及び出力テーブル132を受信した場合(S1のYES)、情報処理装置1の情報管理部112は、受信した入力テーブル131及び出力テーブル132を情報格納領域130に記憶する(S2)。
[トークン生成処理]
次に、データ処理のうち、トークン情報133の生成を行う処理(以下、トークン生成処理とも呼ぶ)について説明を行う。図12から図24は、トークン生成処理を説明するフローチャート図である。
情報処理装置1のトークン生成部113は、トークン生成タイミングになるまで待機する(S11のNO)。トークン生成タイミングは、例えば、利用者が操作端末2を介してトークン情報133の生成を行う旨の情報を入力したタイミングであってよい。
そして、トークン生成タイミングになった場合(S11のYES)、トークン生成部113は、情報格納領域130に記憶した入力テーブル131または出力テーブル132にデータが設定されていないセルが存在するか否かを判定する(S12)。
その結果、情報格納領域130に記憶した入力テーブル131または出力テーブル132にデータが設定されていないセルが存在すると判定した場合(S13のYES)、トークン生成部113は、S12の処理で存在すると判定したセルに対応するトークン情報133として「NULL」を追加する(S14)。
すなわち、トークン生成部113は、この場合、S12の処理で存在すると判定したセルにデータが設定されていないことを示すトークン情報133である「NULL」を、S12の処理で存在すると判定したセルに対応するトークン情報133として追加する。
一方、情報格納領域130に記憶した入力テーブル131及び出力テーブル132にデータが設定されていないセルが存在しないと判定した場合(S13のNO)、トークン生成部113は、S14の処理を行わない。以下、S12からS14の処理の具体例について説明を行う。
[S12からS14の処理の具体例]
図26から図29は、入力テーブル131、出力テーブル132及びトークン情報133の具体例について説明する図である。具体的に、図26(A)から図29(A)は、入力テーブル131の具体例を説明する図であり、図26(B)から図29(B)は、出力テーブル132の具体例を説明する図である。また、図26(C)から図29(C)は、入力テーブル131に対応するトークン情報133(以下、トークン情報133aとも呼ぶ)の具体例を説明する図であり、図26(D)から図29(D)は、出力テーブル132に対応するトークン情報133(以下、トークン情報133bとも呼ぶ)の具体例を説明する図である。
なお、以下、図26(C)から図29(C)に示すトークン情報133aを構成するセルは、図26(A)から図29(A)に示す入力テーブル131を構成するセルと行数及び列数が同じであるものとして説明を行う。また、以下、図26(D)から図29(D)に示すトークン情報133bを構成するセルは、図26(B)から図29(B)に示す出力テーブル132を構成するセルと行数及び列数が同じであるものとして説明を行う。さらに、以下、入力テーブル131、出力テーブル132またはトークン情報133におけるM行目のセルのうち、入力テーブル131、出力テーブル132またはトークン情報133におけるN列目のセルを、「M行目N列目のセル」とも表記する。
具体的に、図26(B)に示す出力テーブル132における1行目1列目のセルには、データが設定されていない。そのため、トークン生成部113は、図26(D)に示すトークン情報133bにおける1行目1列目において「NULL」を設定する。
図12に戻り、トークン生成部113は、S14の処理の後、第1トークン生成処理を実行する(S15)。以下、第1トークン生成処理について説明を行う。
[第1トークン生成処理]
図14及び図15は、第1トークン生成処理を説明するフローチャート図である。第1トークン生成処理は、トークン情報133として「ANY」及び「SAME」を生成する処理である。
トークン生成部113は、図14に示すように、トークン情報133である「ANY」及び「SAME」のそれぞれに対応する変数i(カウンタとして機能する変数i)を初期化する(S31)。
具体的に、トークン生成部113は、例えば、「ANY」及び「SAME」のそれぞれに対応する変数iに「1」を設定する。
そして、トークン生成部113は、情報格納領域130に記憶した入力テーブル131を構成するセルを1つ特定する(S32)。
続いて、トークン生成部113は、S32の処理で特定したセルに対応するトークン情報133が設定済であるか否かを判定する(S33)。
その結果、S32の処理で特定したセルに対応するトークン情報133が設定済であると判定した場合(S34のYES)、トークン生成部113は、S32以降の処理を再度行う。
一方、S32の処理で特定したセルに対応するトークン情報133が設定済でないと判定した場合(S34のNO)、トークン生成部113は、S32の処理で特定したセルと同じデータが設定されたセルが出力テーブル132に存在するか否かを判定する(S35)。
そして、図15に示すように、S32の処理で特定したセルと同じデータが設定されたセルが出力テーブル132に存在し、かつ、S32の処理で特定したセルと同じデータが設定されたセルが入力テーブル131及び出力テーブル132のそれぞれに1つずつ存在すると判定した場合(S36のYES、S41のYES)、トークン生成部113は、S32の処理で特定したセル及びS35の処理で存在すると判定したセルに対応するトークン情報133として「ANY(i)」を追加する(S42)。さらに、トークン生成部113は、この場合、「ANY」に対応する変数iに「1」を加算する(S42)。
すなわち、トークン生成部113は、この場合、S32の処理で特定したセルと同じデータが設定されたセルが入力テーブル131及び出力テーブル132のそれぞれに1つずつ存在することを示すトークン情報133である「ANY」を、S32の処理で特定したセル及びS35の処理で存在すると判定したセルに対応するトークン情報133として追加する。
一方、S32の処理で特定したセルと同じデータが設定されたセルが出力テーブル132に存在し、かつ、S32の処理で特定したセルと同じデータが設定されたセルが入力テーブル131及び出力テーブル132の少なくともいずれかにおいて複数存在すると判定した場合(S36のYES、S41のNO)、トークン生成部113は、情報格納領域130に記憶した入力テーブル131及び出力テーブル132を構成するセルのうち、S32の処理で特定したセルと同じデータが設定されたセルを特定する(S44)。
そして、トークン生成部113は、S32の処理で特定したセル及びS44の処理で特定したセルに対応するトークン情報133として「SAME(i)」を追加し、「SAME」に対応する変数iに「1」を加算する(S45)。
すなわち、トークン生成部113は、この場合、S32の処理で特定したセルと同じデータが設定されたセルが入力テーブル131及び出力テーブル132のそれぞれに1つ以上存在し、かつ、S32の処理で特定したセルと同じデータが設定されたセルが入力テーブル131及び出力テーブル132の少なくともいずれかにおいて複数存在することを示すトークン情報133である「SAME」を、S32の処理で特定したセル及びS44の処理で特定したセルに対応するトークン情報133として追加する。
続いて、トークン生成部113は、S42の処理またはS44の処理の後、S32の処理において入力テーブル131を構成するセルの全てを取得したか否かを判定する(S43)。
その結果、S32の処理において入力テーブル131を構成するセルの全てを取得していないと判定した場合(S43のNO)、トークン生成部113は、S32以降の処理を再度行う。
一方、S32の処理において入力テーブル131を構成するセルの全てを取得したと判定した場合(S43のYES)、トークン生成部113は、第1トークン生成処理を終了する。
なお、トークン生成部113は、S36の処理において、S32の処理で特定したセルと同じデータが設定されたセルが出力テーブル132に存在しないと判定した場合においても同様に(S36のNO)、S43の処理を行う。以下、第1トークン生成処理の具体例について説明を行う。
[第1トークン生成処理の具体例]
図26(A)に示す入力テーブル131における1行目3列目のセルと、図26(B)に示す出力テーブル132における2行目2列目のセルとには、それぞれ「Abc」が設定されている。そして、図26(A)に示す入力テーブル131及び図26(B)に示す出力テーブル132における他のセルには、「Abc」が設定されていない。そのため、トークン生成部113は、例えば、図26(C)に示すトークン情報133aにおける1行目3列目のセルと、図26(D)に示すトークン情報133bにおける2行目2列目のセルとのそれぞれに「ANY1」を設定する。
また、図26(A)に示す入力テーブル131における2行目3列目のセルと、図26(B)に示す出力テーブル132における2行目3列目のセルとには、それぞれ「123」が設定されている。そして、図26(A)に示す入力テーブル131及び図26(B)に示す出力テーブル132における他のセルには、「123」が設定されていない。そのため、トークン生成部113は、例えば、図26(C)に示すトークン情報133aにおける2行目3列目のセルと、図26(D)に示すトークン情報133bにおける2行目3列目のセルとのそれぞれに「ANY2」を設定する。
また、図26(A)に示す入力テーブル131における1行目2列目のセル及び4行目2列目と、図26(B)に示す出力テーブル132における1行目2列目のセルとには、それぞれ「ID」が設定されている。そのため、トークン生成部113は、例えば、図26(C)に示すトークン情報133aにおける1行目2列目のセル及び4行目2列目と、図26(D)に示すトークン情報133bにおける1行目2列目のセルとのそれぞれに「SAME1」を設定する。
また、図26(A)に示す入力テーブル131における2行目2列目のセル及び5行目2列目と、図26(B)に示す出力テーブル132における1行目3列目のセルとには、それぞれ「Pass」が設定されている。そのため、トークン生成部113は、例えば、図26(C)に示すトークン情報133aにおける2行目2列目のセル及び5行目2列目と、図26(D)に示すトークン情報133bにおける1行目3列目のセルとのそれぞれに「SAME2」を設定する。
図12に戻り、トークン生成部113は、第1トークン生成処理の実行完了後、第2トークン生成処理を実行する(S16)。以下、第2トークン生成処理について説明を行う。
[第2トークン生成処理]
図16から図19は、第2トークン生成処理を説明するフローチャート図である。第2トークン生成処理は、トークン情報133として「INCLUDE」、「INCLUDED」及び「SHARE」を生成する処理である。
トークン生成部113は、図16に示すように、トークン情報133である「INCLUDE」、「INCLUDED」及び「SHARE」のそれぞれに対応する変数iを初期化する(S51)。
具体的に、トークン生成部113は、例えば、「INCLUDE」、「INCLUDED」及び「SHARE」のそれぞれに対応する変数iに「1」を設定する。
そして、トークン生成部113は、情報格納領域130に記憶した入力テーブル131を構成するセルを1つ特定する(S52)。
続いて、トークン生成部113は、S52の処理で特定したセルに設定されているデータの一部が設定されているセルが、情報格納領域130に記憶した出力テーブル132に存在するか否かを判定する(S53)。
その結果、S52の処理で特定したセルに設定されているデータの一部が設定されているセルが、情報格納領域130に記憶した出力テーブル132に存在すると判定した場合(S54のYES)、トークン生成部113は、図17に示すように、S53の処理で存在すると判定したセルのトークン情報133として「INCLUDE(j)」が既に設定されているか否かを判定する(S61)。「INCLUDE(j)」は、既に行われたS64の処理において追加されたトークン情報133である。
そして、S53の処理で存在すると判定したセルのトークン情報133として「INCLUDE(j)」が既に設定されていると判定した場合(S62のYES)、トークン生成部113は、S52の処理で特定したセルに対応するトークン情報133として、S53の処理で存在すると判定したセルに設定されている「INCLUDE(j)」を追加する(S63)。
一方、S53の処理で存在すると判定したセルのトークン情報133として「INCLUDE(j)」が設定されていないと判定した場合(S62のNO)、トークン生成部113は、S52の処理で特定したセル及びS53の処理で存在すると判定したセルに対応するトークン情報133として「INCLUDE(i)」を追加する(S64)。そして、トークン生成部113は、この場合、「INCLUDE」に対応する変数iに「1」を加算する(S64)。
すなわち、トークン生成部113は、この場合、S52の処理で特定したセルに設定されているデータの一部が設定されているセルが出力テーブル132に存在することを示すトークン情報133である「INCLUDE」を、S52の処理で特定したセル及びS53の処理で存在すると判定したセルに対応するトークン情報133として追加する。
続いて、トークン生成部113は、S63の処理またはS64の処理の後、S52の処理で特定したセルに設定されているデータを一部に含むセルが、情報格納領域130に記憶した出力テーブル132に存在するか否かを判定する(S65)。
なお、トークン生成部113は、S54の処理において、S52の処理で特定したセルに設定されているデータの一部が設定されているセルが、情報格納領域130に記憶した出力テーブル132に存在しないと判定した場合についても同様に(S54のNO)、S65の処理を行う。
その結果、S52の処理で特定したセルに設定されているデータを一部に含むセルが、情報格納領域130に記憶した出力テーブル132に存在すると判定した場合(S66のYES)、トークン生成部113は、図18に示すように、S65の処理で存在すると判定したセルのトークン情報133として「INCLUDED(j)」が既に設定されているか否かを判定する(S71)。「INCLUDED(j)」は、既に行われたS74の処理において追加されたトークン情報133である。
そして、S65の処理で存在すると判定したセルのトークン情報133として「INCLUDED(j)」が既に設定されていると判定した場合(S72のYES)、トークン生成部113は、S52の処理で特定したセルに対応するトークン情報133として、S65の処理で存在すると判定したセルに設定されている「INCLUDED(j)」を追加する(S73)。
一方、S65の処理で存在すると判定したセルのトークン情報133として「INCLUDED(j)」が設定されていないと判定した場合(S72のNO)、トークン生成部113は、S52の処理で特定したセル及びS65の処理で存在すると判定したセルに対応するトークン情報133として「INCLUDED(i)」を追加する(S74)。そして、トークン生成部113は、この場合、「INCLUDED」に対応する変数iに「1」を加算する(S74)。
すなわち、トークン生成部113は、S52の処理で特定したセルに設定されているデータを一部に含むセルが出力テーブル132に存在することを示すトークン情報133である「INCLUDED」を、S52の処理で特定したセル及びS65の処理で存在すると判定したセルに対応するトークン情報133として追加する。
続いて、トークン生成部113は、S73の処理またはS74の処理の後、S52の処理で特定したセルに設定されているデータの一部を一部に含むセルが、情報格納領域130に記憶した出力テーブル132に存在するか否かを判定する(S75)。
なお、トークン生成部113は、S66の処理において、S52の処理で特定したセルに設定されているデータを一部に含むセルが、情報格納領域130に記憶した出力テーブル132に存在しないと判定した場合についても同様に(S66のNO)、S75の処理を行う。
その結果、S52の処理で特定したセルに設定されているデータの一部を一部に含むセルが、情報格納領域130に記憶した出力テーブル132に存在すると判定した場合(S76のYES)、トークン生成部113は、図19に示すように、S75の処理で存在すると判定したセルのトークン情報133として「SHARE(j)」が既に設定されているか否かを判定する(S81)。「SHARE(j)」は、既に行われたS84の処理において追加されたトークン情報133である。
そして、S75の処理で存在すると判定したセルのトークン情報133として「SHARE(j)」が既に設定されていると判定した場合(S82のYES)、トークン生成部113は、S52の処理で特定したセルに対応するトークン情報133として、S75の処理で存在すると判定したセルに設定されている「SHARE(j)」を追加する(S83)。
一方、S75の処理で存在すると判定したセルのトークン情報133として「SHARE(j)」が設定されていないと判定した場合(S82のNO)、トークン生成部113は、S52の処理で特定したセル及びS75の処理で存在すると判定したセルに対応するトークン情報133として「SHARE(i)」を追加する(S84)。そして、トークン生成部113は、この場合、「SHARE」に対応する変数iに「1」を加算する(S84)。
すなわち、トークン生成部113は、S52の処理で特定したセルに設定されているデータの一部を一部に含むセルが出力テーブル132に存在することを示すトークン情報133である「SHARE」を、S52の処理で特定したセル及びS75の処理で存在すると判定したセルに対応するトークン情報133として追加する。
そして、トークン生成部113は、S83の処理またはS84の処理の後、S52の処理において入力テーブル131を構成するセルの全てを取得したか否かを判定する(S85)。
その結果、S52の処理において入力テーブル131を構成するセルの全てを取得していないと判定した場合(S85のNO)、トークン生成部113は、S52以降の処理を再度行う。
一方、S52の処理において入力テーブル131を構成するセルの全てを取得したと判定した場合(S85のYES)、トークン生成部113は、第2トークン生成処理を終了する。
なお、トークン生成部113は、S52の処理で特定したセルに設定されているデータの一部を一部に含むセルが出力テーブル132に存在しないと判定した場合についても同様に(S76のNO)、S85の処理を行う。以下、第2トークン生成処理の具体例について説明を行う。
[第2トークン生成処理の具体例]
図27(A)に示す入力テーブル131における1行目1列目のセルに設定されている「AB-CD」は、図27(B)に示す出力テーブル132における1行目1列目のセルに設定されている「AB」を一部に含んでいる。そのため、トークン生成部113は、例えば、図27(C)に示すトークン情報133aにおける1行目1列目のセルと、図27(D)に示すトークン情報133bにおける1行目1列目のセルとのそれぞれに「INCLUDE1」を設定する。
また、図27(A)に示す入力テーブル131における2行目1列目のセルに設定されている「EF-GH」は、図27(B)に示す出力テーブル132における1行目2列目のセルに設定されている「EF」を一部に含んでいる。そのため、トークン生成部113は、例えば、図27(C)に示すトークン情報133aにおける2行目1列目のセルと、図27(D)に示すトークン情報133bにおける1行目2列目のセルとのそれぞれに「INCLUDE2」を設定する。
また、図27(A)に示す入力テーブル131における1行目1列目のセルに設定されている「AB-CD」と、図27(A)に示す入力テーブル131における1行目3列目のセルに設定されている「1」とのそれぞれは、図27(B)に示す出力テーブル132における3行目1列目のセルに設定されている「AB-CD-1」に含まれている。そのため、トークン生成部113は、例えば、図27(C)に示すトークン情報133aにおける1行目1列目及び1行目3列目のセルと、図27(D)に示すトークン情報133bにおける3行目1列目のセルとのそれぞれに「INCLUDED1」を設定する。
また、図27(A)に示す入力テーブル131における2行目1列目のセルに設定されている「EF-GH」と、図27(A)に示す入力テーブル131における2行目3列目のセルに設定されている「2」とのそれぞれは、図27(B)に示す出力テーブル132における3行目2列目のセルに設定されている「EF-GH-2」に含まれている。そのため、トークン生成部113は、例えば、図27(C)に示すトークン情報133aにおける2行目1列目及び2行目3列目のセルと、図27(D)に示すトークン情報133bにおける3行目2列目のセルとのそれぞれに「INCLUDED2」を設定する。
また、図27(A)に示す入力テーブル131における1行目1列目のセルに設定されている「AB-CD」と、図27(B)に示す出力テーブル132における2行目1列目のセルに設定されている「AB/KL」とは、一部においてそれぞれ「AB」を含んでいる。また、図27(A)に示す入力テーブル131における1行目2列目のセルに設定されている「IJ@KL」と、図27(B)に示す出力テーブル132における2行目1列目のセルに設定されている「AB/KL」とは、一部においてそれぞれ「KL」を含んでいる。そのため、トークン生成部113は、例えば、図27(C)に示すトークン情報133aにおける1行目1列目及び1行目2列目のセルと、図27(D)に示すトークン情報133bにおける2行目1列目のセルとのそれぞれに「SHARE1」を設定する。
また、図27(A)に示す入力テーブル131における2行目1列目のセルに設定されている「EF-GH」と、図27(B)に示す出力テーブル132における2行目2列目のセルに設定されている「EF/OP」とは、一部においてそれぞれ「EF」を含んでいる。また、図27(A)に示す入力テーブル131における2行目2列目のセルに設定されている「MN@OP」と、図27(B)に示す出力テーブル132における2行目2列目のセルに設定されている「EF/OP」とは、一部においてそれぞれ「OP」を含んでいる。そのため、トークン生成部113は、例えば、図27(C)に示すトークン情報133aにおける2行目1列目及び2行目2列目のセルと、図27(D)に示すトークン情報133bにおける2行目2列目のセルとのそれぞれに「SHARE2」を設定する。
図13に戻り、トークン生成部113は、第2トークン生成処理の実行完了後、第3トークン生成処理を実行する(S21)。以下、第3トークン生成処理について説明を行う。
[第3トークン生成処理]
図20及び図21は、第3トークン生成処理を説明するフローチャート図である。第3トークン生成処理は、入力テーブル131または出力テーブル132に設定されたパラメータに対応するトークン情報133を生成する処理である。
トークン生成部113は、情報格納領域130に記憶した入力テーブル131を構成するセルを1つ特定する(S91)。
そして、トークン生成部113は、S91の処理で特定したセルに設定されているデータにパラメータが含まれているか否かを判定する(S92)。
具体的に、トークン生成部113は、例えば、S91の処理で特定したセルに設定されているデータに、S91の処理で特定したセルに設定されているデータを分割した2つのデータが出力テーブル132における2つの異なるセルに設定されるデータであることを示す「@」が含まれるか否かについての判定を行う。
その結果、S91の処理で特定したセルに設定されているデータにパラメータが含まれていると判定した場合(S93のYES)、トークン生成部113は、S91の処理で特定したセルに対応するトークン情報133として、S92の処理で含まれていると判定したパラメータに対応するトークン情報133を追加する(S94)。
一方、S91の処理で特定したセルに設定されているデータにパラメータが含まれていないと判定した場合(S93のNO)、トークン生成部113は、S94の処理を行わない。
その後、S91の処理において入力テーブル131を構成するセルの全てを取得したか否かを判定する(S95)。
その結果、S91の処理において入力テーブル131を構成するセルの全てを取得していないと判定した場合(S95のNO)、トークン生成部113は、S91以降の処理を再度行う。
一方、S91の処理において入力テーブル131を構成するセルの全てを取得したと判定した場合(S95のYES)、トークン生成部113は、図21に示すように、情報格納領域130に記憶した出力テーブル132を構成するセルを1つ特定する(S101)。
そして、トークン生成部113は、S101の処理で特定したセルに設定されているデータにパラメータが含まれているか否かを判定する(S102)。
具体的に、トークン生成部113は、例えば、S101の処理で特定したセルに設定されているデータに、S101の処理で特定したセルに設定されているデータが入力テーブル131における2つのセルに設定されたデータを結合したデータであることを示す「-」が含まれているか否かについての判定を行う。
その結果、S101の処理で特定したセルに設定されているデータにパラメータが含まれていると判定した場合(S103のYES)、トークン生成部113は、S101の処理で特定したセルに対応するトークン情報133として、S102の処理で含まれていると判定したパラメータに対応するトークン情報133を追加する(S104)。
一方、S101の処理で特定したセルに設定されているデータにパラメータが含まれていないと判定した場合(S103のNO)、トークン生成部113は、S104の処理を行わない。
その後、S101の処理において入力テーブル131を構成するセルの全てを取得したか否かを判定する(S105)。
その結果、S101の処理において入力テーブル131を構成するセルの全てを取得していないと判定した場合(S105のNO)、トークン生成部113は、S101以降の処理を再度行う。
一方、S101の処理において入力テーブル131を構成するセルの全てを取得していると判定した場合(S105のYES)、トークン生成部113は、第3トークン生成処理を終了する。
[第3トークン生成処理の具体例]
図28(A)に示す入力テーブル131における1行目1列目のセルに設定されている「AB-CD」には、パラメータである「-」が含まれている。そのため、トークン生成部113は、例えば、図28(C)に示すトークン情報133aにおける1行目1列目のセルに「HYPHEN」を設定する。
また、図28(A)に示す入力テーブル131における1行目2列目のセルに設定されている「IJ@KL」には、パラメータである「@」が含まれている。そのため、トークン生成部113は、例えば、図28(C)に示すトークン情報133aにおける1行目2列目のセルに「ATMARK」を設定する。
また、図28(B)に示す入力テーブル131における1行目2列目のセルに設定されている「AB/KL」には、パラメータである「/」が含まれている。そのため、トークン生成部113は、例えば、図28(D)に示すトークン情報133aにおける1行目2列目のセルに「SLASH」を設定する。
また、図28(B)に示す入力テーブル131における1行目3列目のセルに設定されている「AB-CD-1」には、パラメータである「-」が含まれている。そのため、トークン生成部113は、例えば、図28(D)に示すトークン情報133aにおける1行目3列目のセルに「HYPHEN」を設定する。
図13に戻り、トークン生成部113は、第3トークン生成処理の実行完了後、第4トークン生成処理を実行する(S22)。以下、第4トークン生成処理について説明を行う。
[第4トークン生成処理]
図22から図24は、第4トークン生成処理を説明するフローチャート図である。第4トークン生成処理は、トークン情報133として「ZEN-HAN」及び「HAN-ZEN」を生成する処理である。
トークン生成部113は、図22に示すように、トークン情報133である「ZEN-HAN」及び「HAN-ZEN」のそれぞれに対応する変数iを初期化する(S111)。
具体的に、トークン生成部113は、例えば、「ZEN-HAN」及び「HAN-ZEN」のそれぞれに対応する変数iに「1」を設定する。
そして、トークン生成部113は、情報格納領域130に記憶した入力テーブル131を構成するセルを1つ特定する(S112)。
続いて、トークン生成部113は、S112の処理で特定したセルに設定されているデータに全角文字が含まれており、かつ、S112の処理で特定したセルに設定されているデータに含まれている全角文字を半角文字に変換したデータが設定されているセルが出力テーブル132に存在するか否かを判定する(S113)。
その結果、S112の処理で特定したセルに設定されているデータに全角文字が含まれており、かつ、S112の処理で特定したセルに設定されているデータに含まれている全角文字を半角文字に変換したデータが設定されているセルが出力テーブル132に存在すると判定した場合(S114のYES)、トークン生成部113は、図23に示すように、S113の処理で存在すると判定したセルのトークン情報133として「ZEN-HAN(j)」が既に設定されているか否かを判定する(S121)。「ZEN-HAN(j)」は、既に行われたS123の処理において追加されたトークン情報133である。
そして、S113の処理で存在すると判定したセルのトークン情報133として「ZEN-HAN(j)」が既に設定されていると判定した場合(S122のYES)、トークン生成部113は、S112の処理で特定したセルに対応するトークン情報133として、S113の処理で存在すると判定したセルに設定されている「ZEN-HAN(j)」を追加する(S123)。
なお、トークン生成部113は、S112の処理で特定したセルに設定されているデータに全角文字が含まれていない、または、S112の処理で特定したセルに設定されているデータに含まれている全角文字を半角文字に変換したデータが設定されているセルが出力テーブル132に存在しないと判定した場合についても同様に(S114のNO)、S123の処理を行う。
一方、S113の処理で存在すると判定したセルのトークン情報133として「ZEN-HAN(j)」が設定されていないと判定した場合(S122のNO)、トークン生成部113は、S112の処理で特定したセル及びS113の処理で存在すると判定したセルに対応するトークン情報133として「ZEN-HAN(i)」を追加する(S124)。そして、トークン生成部113は、この場合、「ZEN-HAN」に対応する変数iに「1」を加算する(S124)。
続いて、トークン生成部113は、S112の処理で特定したセルに設定されているデータに半角文字が含まれており、かつ、S112の処理で特定したセルに設定されているデータに含まれている半角文字を全角文字に変換したデータが設定されているセルが出力テーブル132に存在するか否かを判定する(S125)。
その結果、S112の処理で特定したセルに設定されているデータに半角文字が含まれており、かつ、S112の処理で特定したセルに設定されているデータに含まれている半角文字を全角文字に変換したデータが設定されているセルが出力テーブル132に存在すると判定した場合(S126のYES)、トークン生成部113は、図24に示すように、S125の処理で存在すると判定したセルのトークン情報133として「HAN-ZEN(j)」が既に設定されているか否かを判定する(S131)。「HAN-ZEN(j)」は、既に行われたS133の処理において追加されたトークン情報133である。
そして、S125の処理で存在すると判定したセルのトークン情報133として「HAN-ZEN(j)」が既に設定されていると判定した場合(S132のYES)、トークン生成部113は、S112の処理で特定したセルに対応するトークン情報133として、S125の処理で存在すると判定したセルに設定されている「HAN-ZEN(j)」を追加する(S133)。
なお、トークン生成部113は、S112の処理で特定したセルに設定されているデータに半角文字が含まれていない、または、S112の処理で特定したセルに設定されているデータに含まれている半角文字を全角文字に変換したデータが設定されているセルが出力テーブル132に存在しないと判定した場合についても同様に(S126のNO)、S133の処理を行う。
一方、S125の処理で存在すると判定したセルのトークン情報133として「HAN-ZEN(j)」が設定されていないと判定した場合(S132のNO)、トークン生成部113は、S112の処理で特定したセル及びS125の処理で存在すると判定したセルに対応するトークン情報133として「HAN-ZEN(i)」を追加する(S134)。そして、トークン生成部113は、この場合、「HAN-ZEN」に対応する変数iに「1」を加算する(S134)。
その後、トークン生成部113は、S133の処理またはS134の処理の後、S112の処理において入力テーブル131を構成するセルの全てを取得したか否かを判定する(S135)。
その結果、S112の処理において入力テーブル131を構成するセルの全てを取得していないと判定した場合(S135のNO)、トークン生成部113は、S112以降の処理を再度行う。
一方、S112の処理において入力テーブル131を構成するセルの全てを取得したと判定した場合(S135のYES)、トークン生成部113は、第4トークン生成処理を終了する。以下、第4トークン生成処理の具体例について説明を行う。
[第4トークン生成処理の具体例]
図29(A)に示す入力テーブル131における1行目2列目のセルに設定されている「ヒラガナ」は、全角文字である。また、図29(B)に示す出力テーブル132における1行目2列目のセルに設定されている「ヒラガナ」は、半角文字である。そのため、トークン生成部113は、例えば、図29(C)に示すトークン情報133aにおける1行目2列目のセルと、図29(D)に示すトークン情報133bにおける1行目2列目のセルとのそれぞれに「ZEN-HAN1」を設定する。
また、図29(A)に示す入力テーブル131における2行目2列目のセルに設定されている「ハンカク」は、全角文字である。また、図29(B)に示す出力テーブル132における2行目2列目のセルに設定されている「ハンカク」は、半角文字である。そのため、トークン生成部113は、例えば、図29(C)に示すトークン情報133aにおける2行目2列目のセルと、図29(D)に示すトークン情報133bにおける2行目2列目のセルとのそれぞれに「ZEN-HAN2」を設定する。
また、図29(A)に示す入力テーブル131における1行目3列目のセルに設定されている「ABC」は、半角文字である。また、図29(B)に示す出力テーブル132における1行目3列目のセルに設定されている「ABC」は、全角文字である。そのため、トークン生成部113は、例えば、図29(C)に示すトークン情報133aにおける1行目3列目のセルと、図29(D)に示すトークン情報133bにおける1行目3列目のセルとのそれぞれに「HAN-ZEN1」を設定する。
また、図29(A)に示す入力テーブル131における2行目3列目のセルに設定されている「アイウ」は、半角文字である。また、図29(B)に示す出力テーブル132における2行目3列目のセルに設定されている「アイウ」は、全角文字である。そのため、トークン生成部113は、例えば、図29(C)に示すトークン情報133aにおける2行目3列目のセルと、図29(D)に示すトークン情報133bにおける2行目3列目のセルとのそれぞれに「HAN-ZEN2」を設定する。
図13に戻り、トークン生成部113は、第4トークン生成処理の実行完了後、情報格納領域130に記憶した入力テーブル131を構成するセルに、情報格納領域130に記憶した出力テーブル132を構成するセルに設定されていないデータが設定されているセルが存在するか否かを判定する(S23)。
その結果、情報格納領域130に記憶した入力テーブル131を構成するセルに、情報格納領域130に記憶した出力テーブル132を構成するセルに設定されていないデータが設定されているセルが存在すると判定した場合(S24のYES)、トークン生成部113は、S23の処理で存在すると判定したセルに対応するトークン情報133として「DROP」を追加する(S25)。
すなわち、トークン生成部113は、この場合、出力テーブル132を構成するセルに設定されていないデータが設定されているセルが入力テーブル131を構成するセルに存在することを示すトークン情報133である「DROP」を、S23の処理で存在すると判定したセルに対応するトークン情報133として追加する。
一方、情報格納領域130に記憶した入力テーブル131を構成するセルに、情報格納領域130に記憶した出力テーブル132を構成するセルに設定されていないデータが設定されているセルが存在しないと判定した場合(S24のNO)、トークン生成部113は、S25の処理を行わない。
[プログラム生成処理]
次に、データ処理のうち、変換プログラムの生成を行う処理(以下、プログラム生成処理とも呼ぶ)について説明を行う。図25は、プログラム生成処理を説明するフローチャート図である。
情報処理装置1の候補排除部114は、図25に示すように、プログラム生成タイミングになるまで待機する(S141のNO)。プログラム生成タイミングは、例えば、利用者が操作端末2を介して変換プログラムの生成を行う旨の情報を入力したタイミングであってよい。
そして、プログラム生成タイミングになった場合(S141のYES)、候補排除部114は、情報格納領域130に記憶された中間プログラムPGのうち、情報格納領域130に記憶したトークン情報133に対応しない中間プログラムPGを、変換プログラムの生成に用いる中間プログラムPGの候補から排除する(S142)。
具体的に、例えば、入力テーブル131または出力テーブル132に対応するトークン情報133として「NULL」が生成されていない場合、候補排除部114は、例えば、データが設定されていないセルが入力テーブル131または出力テーブル132に存在する場合に実行される中間プログラムPGのそれぞれを、変換プログラムの生成に用いる中間プログラムPGの候補から排除する。
また、例えば、入力テーブル131に対応するトークン情報133として「DROP」が生成されていない場合、候補排除部114は、例えば、入力テーブル131におけるセルの列を削除する中間プログラムPGのそれぞれを、変換プログラムの生成に用いる中間プログラムPGの候補から排除する。
また、例えば、入力テーブル131に対応するトークン情報133として、変数iの値が同一である複数の「SAME」が生成されていない場合、候補排除部114は、例えば、入力テーブル131において複数列のセルに設定されているデータが一列のセルに設定されるように出力テーブル132を生成する中間プログラムPGのそれぞれを、変換プログラムの生成に用いる中間プログラムPGの候補から排除する。
また、例えば、出力テーブル132に対応するトークン情報133として、変数iの値が同一である複数の「SAME」が生成されていない場合、候補排除部114は、例えば、入力テーブル131において一列のセルに設定されているデータが複数列のセルに設定されるように出力テーブル132を生成する中間プログラムPGのそれぞれを、変換プログラムの生成に用いる中間プログラムPGの候補から排除する。
また、例えば、入力テーブル131及び出力テーブル132に対応するトークン情報133として「INCLUDED」及び「SHARE」が生成されていない場合、候補排除部114は、例えば、入力テーブル131における複数のセルに設定されているデータを結合して出力テーブル132に設定する中間プログラムPGのそれぞれを、変換プログラムの生成に用いる中間プログラムPGの候補から排除する。
また、例えば、入力テーブル131及び出力テーブル132に対応するトークン情報133として「INCLUDE」及び「SHARE」が生成されていない場合、候補排除部114は、例えば、入力テーブル131に設定されているデータを分割して出力テーブル132における複数のセルに設定する中間プログラムPGのそれぞれを、変換プログラムの生成に用いる中間プログラムPGの候補から排除する。
また、例えば、入力テーブル131または出力テーブル132においてトークン情報133が生成されていないパラメータが存在する場合、候補排除部114は、例えば、存在したパラメータを、各中間プログラムPGの実行時において参照されるパラメータのリスト(図示しない)から排除する。
その後、情報処理装置1のプログラム生成部115は、情報格納領域130に記憶した中間プログラムPGのうち、S142の処理で排除された中間プログラムPG以外の中間プログラムPGを探索することによって、変換プログラムを生成する(S143)。
このように、本実施の形態における情報処理装置1は、入力データと入力データを所定の規則に従って変換した出力データとの対応関係の特徴を示すトークン情報133を生成する。
そして、情報処理装置1は、入力データを出力データに変換する変換プログラムの生成に用いる1以上の中間プログラムPGを情報格納領域130に記憶した複数の中間プログラムPGから探索する際に、生成したトークン情報133に対応しない中間プログラムPGを、変換プログラムの生成に用いる中間プログラムPGの候補から排除する。
すなわち、本実施の形態における情報処理装置1は、例えば、入力テーブル131を構成する各セルに設定された情報と出力テーブル132を構成する各セルに設定された情報との対応関係から、変換プログラムの生成に用いる際に選択されないと判断できる中間プログラムPGの特定を予め行う。そして、情報処理装置1は、変換プログラムの生成に用いる中間プログラムPGの組合せの探索を、情報格納領域130に記憶した中間プログラムPGのうち、予め特定した中間プログラムPG以外の中間プログラムPGにおいて行う。
これにより、情報処理装置1は、例えば、変換対象の入力データ及び出力データがデータサイズの大きい入力テーブル131及び出力テーブル132である場合であっても、入力データを出力データに変換する変換プログラムの生成を短時間で行うことが可能になる。
以上の実施の形態をまとめると、以下の付記のとおりである。
(付記1)
入力データと該入力データを所定の規則に従って変換した出力データとの対応関係の特徴を示すトークン情報を生成し、
前記入力データを前記出力データに変換する変換プログラムの生成に用いる1以上の中間プログラムを記憶部に記憶した複数の中間プログラムから探索する際に、前記トークン情報に対応しない中間プログラムを前記1以上の中間プログラムの候補から排除する、
処理をコンピュータに実行させることを特徴とするデータ処理プログラム。
(付記2)
付記1において、
前記入力データ及び前記出力データのそれぞれは、テーブル形式の入力テーブル及び出力テーブルであり、
前記生成する処理では、前記トークン情報の生成を、前記入力テーブル及び前記出力テーブルを構成するセルごとに行う、
ことを特徴とするデータ処理プログラム。
(付記3)
付記2において、
前記生成する処理では、前記入力テーブルを構成する1以上の第1セルと前記出力テーブルを構成する1以上の第2セルとに同じデータが設定されている場合、前記1以上の第1セル及び前記1以上の第2セルのそれぞれに対応する前記トークン情報として、前記1以上の第1セルと前記1以上の第2セルとに同じデータが設定されていることを示す情報を生成する、
ことを特徴とするデータ処理プログラム。
(付記4)
付記2において、
前記生成する処理では、前記入力テーブルまたは前記出力テーブルを構成する特定のセルにデータが設定されていない場合、前記特定のセルに対応する前記トークン情報として、前記特定のセルにデータが設定されていないことを示す情報を生成する、
ことを特徴とするデータ処理プログラム。
(付記5)
付記2において、
前記生成する処理では、前記入力テーブルを構成する特定のセルに設定されているデータが前記出力テーブルを構成するセルに設定されていない場合、前記特定のセルに対応する前記トークン情報として、前記特定のセルに設定されているデータが前記出力テーブルを構成するセルに設定されていないことを示す情報を生成する、
ことを特徴とするデータ処理プログラム。
(付記6)
付記2において、
前記生成する処理では、前記入力テーブルを構成する第1セルに設定されているデータが前記出力テーブルを構成する第2セルに設定されているデータを一部に含む場合、前記第1セル及び前記第2セルのそれぞれに対応する前記トークン情報として、前記第1セルに設定されているデータが前記第2セルに設定されているデータを一部に含むことを示す情報を生成する、
ことを特徴とするデータ処理プログラム。
(付記7)
付記2において、
前記生成する処理では、前記入力テーブルを構成する第1セルに設定されているデータが前記出力テーブルを構成する第2セルに設定されているデータの一部に含まれる場合、前記第1セル及び前記第2セルのそれぞれに対応する前記トークン情報として、前記第1セルに設定されているデータが前記第2セルに設定されているデータの一部に含まれることを示す情報を生成する、
ことを特徴とするデータ処理プログラム。
(付記8)
付記2において、
前記生成する処理では、前記入力テーブルを構成する第1セルに設定されているデータの一部と前記出力テーブルを構成する第2セルに設定されているデータの一部とが共通する場合、前記第1セル及び前記第2セルのそれぞれに対応する前記トークン情報として、前記第1セルに設定されているデータの一部と前記第2セルに設定されているデータの一部とが共通していることを示す情報を生成する、
ことを特徴とするデータ処理プログラム。
(付記9)
付記2において、
前記生成する処理では、前記入力テーブルを構成する特定のセルに設定されているデータを分割することによって生成される複数のデータが前記出力テーブルを構成する複数のセルのそれぞれに設定されることを示すパラメータが、前記特定のセルに含まれている場合、前記特定のセルに対応する前記トークン情報として、前記パラメータが前記特定のセルに含まれていることを示す情報を生成する、
ことを特徴とするデータ処理プログラム。
(付記10)
付記2において、
前記生成する処理では、
前記出力テーブルを構成する特定のセルに設定されているデータが前記入力テーブルを構成する複数のセルのそれぞれに設定されているデータを結合することによって生成されるデータであることを示すパラメータが、前記特定のセルに含まれている場合、前記特定のセルに対応する前記トークン情報として、前記パラメータが前記特定のセルに含まれていることを示す情報を生成する、
ことを特徴とするデータ処理プログラム。
(付記11)
付記2において、
前記生成する処理では、前記入力テーブルを構成する第1セルと前記出力テーブルを構成する第2セルとに同じデータが設定されており、前記第1セルに設定されているデータが半角の文字列であり、前記第2セルに設定されているデータが全角の文字列である場合、前記第1セル及び前記第2セルのそれぞれに対応する前記トークン情報として、前記第2セルに設定されているデータが前記第1セルに設定されているデータを全角に変換することによって生成されることを示す情報を生成する、
ことを特徴とするデータ処理プログラム。
(付記12)
付記2において、
前記生成する処理では、前記入力テーブルを構成する第1セルと前記出力テーブルを構成する第2セルとに同じデータが設定されており、前記第1セルに設定されているデータが全角の文字列であり、前記第2セルに設定されているデータが半角の文字列である場合、前記第1セル及び前記第2セルのそれぞれに対応する前記トークン情報として、前記第2セルに設定されているデータが前記第1セルに設定されているデータを半角に変換することによって生成されることを示す情報を生成する、
ことを特徴とするデータ処理プログラム。
(付記13)
入力データと該入力データを所定の規則に従って変換した出力データとの対応関係の特徴を示すトークン情報を生成するトークン生成部と、
前記入力データを前記出力データに変換する変換プログラムの生成に用いる1以上の中間プログラムを記憶部に記憶した複数の中間プログラムから探索する際に、前記トークン情報に対応しない中間プログラムを前記1以上の中間プログラムの候補から排除する候補排除部と、を有する、
ことを特徴とするデータ処理装置。
(付記14)
付記13において、
前記入力データ及び前記出力データのそれぞれは、テーブル形式の入力テーブル及び出力テーブルであり、
前記トークン生成部は、前記トークン情報の生成を、前記入力テーブル及び前記出力テーブルを構成するセルごとに行う、
ことを特徴とするデータ処理装置。
(付記15)
入力データと該入力データを所定の規則に従って変換した出力データとの対応関係の特徴を示すトークン情報を生成し、
前記入力データを前記出力データに変換する変換プログラムの生成に用いる1以上の中間プログラムを記憶部に記憶した複数の中間プログラムから探索する際に、前記トークン情報に対応しない中間プログラムを前記1以上の中間プログラムの候補から排除する、
処理をコンピュータに実行させることを特徴とするデータ処理方法。
(付記16)
付記15において、
前記入力データ及び前記出力データのそれぞれは、テーブル形式の入力テーブル及び出力テーブルであり、
前記生成する処理では、前記トークン情報の生成を、前記入力テーブル及び前記出力テーブルを構成するセルごとに行う、
ことを特徴とするデータ処理方法。
1:情報処理装置 2:操作端末
NW:ネットワーク 10:情報処理システム

Claims (14)

  1. 入力データと該入力データを所定の規則に従って変換した出力データとの対応関係の特徴を示すトークン情報を生成し、
    前記入力データを前記出力データに変換する変換プログラムの生成に用いる1以上の中間プログラムを記憶部に記憶した複数の中間プログラムから探索する際に、前記トークン情報に対応しない中間プログラムを前記1以上の中間プログラムの候補から排除する、
    処理をコンピュータに実行させることを特徴とするデータ処理プログラム。
  2. 請求項1において、
    前記入力データ及び前記出力データのそれぞれは、テーブル形式の入力テーブル及び出力テーブルであり、
    前記生成する処理では、前記トークン情報の生成を、前記入力テーブル及び前記出力テーブルを構成するセルごとに行う、
    ことを特徴とするデータ処理プログラム。
  3. 請求項2において、
    前記生成する処理では、前記入力テーブルを構成する1以上の第1セルと前記出力テーブルを構成する1以上の第2セルとに同じデータが設定されている場合、前記1以上の第1セル及び前記1以上の第2セルのそれぞれに対応する前記トークン情報として、前記1以上の第1セルと前記1以上の第2セルとに同じデータが設定されていることを示す情報を生成する、
    ことを特徴とするデータ処理プログラム。
  4. 請求項2において、
    前記生成する処理では、前記入力テーブルまたは前記出力テーブルを構成する特定のセルにデータが設定されていない場合、前記特定のセルに対応する前記トークン情報として、前記特定のセルにデータが設定されていないことを示す情報を生成する、
    ことを特徴とするデータ処理プログラム。
  5. 請求項2において、
    前記生成する処理では、前記入力テーブルを構成する特定のセルに設定されているデータが前記出力テーブルを構成するセルに設定されていない場合、前記特定のセルに対応する前記トークン情報として、前記特定のセルに設定されているデータが前記出力テーブルを構成するセルに設定されていないことを示す情報を生成する、
    ことを特徴とするデータ処理プログラム。
  6. 請求項2において、
    前記生成する処理では、前記入力テーブルを構成する第1セルに設定されているデータが前記出力テーブルを構成する第2セルに設定されているデータを一部に含む場合、前記第1セル及び前記第2セルのそれぞれに対応する前記トークン情報として、前記第1セルに設定されているデータが前記第2セルに設定されているデータを一部に含むことを示す情報を生成する、
    ことを特徴とするデータ処理プログラム。
  7. 請求項2において、
    前記生成する処理では、前記入力テーブルを構成する第1セルに設定されているデータが前記出力テーブルを構成する第2セルに設定されているデータの一部に含まれる場合、前記第1セル及び前記第2セルのそれぞれに対応する前記トークン情報として、前記第1セルに設定されているデータが前記第2セルに設定されているデータの一部に含まれることを示す情報を生成する、
    ことを特徴とするデータ処理プログラム。
  8. 請求項2において、
    前記生成する処理では、前記入力テーブルを構成する第1セルに設定されているデータの一部と前記出力テーブルを構成する第2セルに設定されているデータの一部とが共通する場合、前記第1セル及び前記第2セルのそれぞれに対応する前記トークン情報として、前記第1セルに設定されているデータの一部と前記第2セルに設定されているデータの一部とが共通していることを示す情報を生成する、
    ことを特徴とするデータ処理プログラム。
  9. 請求項2において、
    前記生成する処理では、前記入力テーブルを構成する特定のセルに設定されているデータを分割することによって生成される複数のデータが前記出力テーブルを構成する複数のセルのそれぞれに設定されることを示すパラメータが、前記特定のセルに含まれている場合、前記特定のセルに対応する前記トークン情報として、前記パラメータが前記特定のセルに含まれていることを示す情報を生成する、
    ことを特徴とするデータ処理プログラム。
  10. 請求項2において、
    前記生成する処理では、前記出力テーブルを構成する特定のセルに設定されているデータが前記入力テーブルを構成する複数のセルのそれぞれに設定されているデータを結合することによって生成されるデータであることを示すパラメータが、前記特定のセルに含まれている場合、前記特定のセルに対応する前記トークン情報として、前記パラメータが前記特定のセルに含まれていることを示す情報を生成する、
    ことを特徴とするデータ処理プログラム。
  11. 請求項2において、
    前記生成する処理では、前記入力テーブルを構成する第1セルと前記出力テーブルを構成する第2セルとに同じデータが設定されており、前記第1セルに設定されているデータが半角の文字列であり、前記第2セルに設定されているデータが全角の文字列である場合、前記第1セル及び前記第2セルのそれぞれに対応する前記トークン情報として、前記第2セルに設定されているデータが前記第1セルに設定されているデータを全角に変換することによって生成されることを示す情報を生成する、
    ことを特徴とするデータ処理プログラム。
  12. 請求項2において、
    前記生成する処理では、前記入力テーブルを構成する第1セルと前記出力テーブルを構成する第2セルとに同じデータが設定されており、前記第1セルに設定されているデータが全角の文字列であり、前記第2セルに設定されているデータが半角の文字列である場合、前記第1セル及び前記第2セルのそれぞれに対応する前記トークン情報として、前記第2セルに設定されているデータが前記第1セルに設定されているデータを半角に変換することによって生成されることを示す情報を生成する、
    ことを特徴とするデータ処理プログラム。
  13. 入力データと該入力データを所定の規則に従って変換した出力データとの対応関係の特徴を示すトークン情報を生成するトークン生成部と、
    前記入力データを前記出力データに変換する変換プログラムの生成に用いる1以上の中間プログラムを記憶部に記憶した複数の中間プログラムから探索する際に、前記トークン情報に対応しない中間プログラムを前記1以上の中間プログラムの候補から排除する候補排除部と、を有する、
    ことを特徴とするデータ処理装置。
  14. 入力データと該入力データを所定の規則に従って変換した出力データとの対応関係の特徴を示すトークン情報を生成し、
    前記入力データを前記出力データに変換する変換プログラムの生成に用いる1以上の中間プログラムを記憶部に記憶した複数の中間プログラムから探索する際に、前記トークン情報に対応しない中間プログラムを前記1以上の中間プログラムの候補から排除する、
    処理をコンピュータに実行させることを特徴とするデータ処理方法。
JP2020132957A 2020-08-05 2020-08-05 データ処理プログラム、データ処理装置及びデータ処理方法 Pending JP2022029597A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020132957A JP2022029597A (ja) 2020-08-05 2020-08-05 データ処理プログラム、データ処理装置及びデータ処理方法
US17/307,207 US20220043795A1 (en) 2020-08-05 2021-05-04 Information processing apparatus and data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020132957A JP2022029597A (ja) 2020-08-05 2020-08-05 データ処理プログラム、データ処理装置及びデータ処理方法

Publications (1)

Publication Number Publication Date
JP2022029597A true JP2022029597A (ja) 2022-02-18

Family

ID=80115089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020132957A Pending JP2022029597A (ja) 2020-08-05 2020-08-05 データ処理プログラム、データ処理装置及びデータ処理方法

Country Status (2)

Country Link
US (1) US20220043795A1 (ja)
JP (1) JP2022029597A (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5375413B2 (ja) * 2009-07-30 2013-12-25 富士通株式会社 データ変換装置、データ変換方法、およびデータ変換プログラム
US8972930B2 (en) * 2010-06-04 2015-03-03 Microsoft Corporation Generating text manipulation programs using input-output examples
JP2015028699A (ja) * 2013-07-30 2015-02-12 富士通株式会社 プログラム、情報処理装置、および方法
US10621195B2 (en) * 2016-09-20 2020-04-14 Microsoft Technology Licensing, Llc Facilitating data transformations
US10776380B2 (en) * 2016-10-21 2020-09-15 Microsoft Technology Licensing, Llc Efficient transformation program generation

Also Published As

Publication number Publication date
US20220043795A1 (en) 2022-02-10

Similar Documents

Publication Publication Date Title
Yang et al. Deep learning for web services classification
Kalmegh Comparative analysis of weka data mining algorithm randomforest, randomtree and ladtree for classification of indigenous news data
US11061948B2 (en) Method and system for next word prediction
JP6751064B2 (ja) データ検索システム、データ検索方法、及びプログラム
JP6810352B2 (ja) 障害解析プログラム、障害解析装置及び障害解析方法
EP3452927A1 (en) Feature-set augmentation using knowledge engine
JP5844824B2 (ja) Sparqlクエリ最適化方法
CN110309214B (zh) 一种指令执行方法及其设备、存储介质、服务器
Prosdocimi et al. Initial implementation of a comparative data analysis ontology
Harari et al. Automatic features generation and selection from external sources: a DBpedia use case
Isele et al. Active learning of expressive linkage rules for the web of data
US11526529B2 (en) Efficient discovery of a binary tree pattern from a large amount of binary tree data
JP2022029597A (ja) データ処理プログラム、データ処理装置及びデータ処理方法
CN101828374A (zh) 存储区域网络互通关系的获取和扩展
JP6310532B1 (ja) 生成装置、生成方法、及び生成プログラム
Eken et al. Predicting defects with latent and semantic features from commit logs in an industrial setting
JPWO2011016281A1 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
JP2011191834A (ja) 文書分類方法、文書分類装置、およびプログラム
JP2018055224A (ja) データ生成装置、方法、及びプログラム
WO2022159202A1 (en) Efficient creation and/or restatement of database tables
KR102062139B1 (ko) 지능형 자료구조 기반의 데이터 처리 방법 및 그를 위한 장치
CN110892401B (zh) 生成用于k个不匹配搜索的过滤器的系统和方法
JP5044980B2 (ja) 実験計画方法、実験計画システムおよび、実験計画プログラム
JP2011227655A (ja) 情報検索システム、情報検索方法およびプログラム
Listgarten et al. Predicting off-target effects for end-to-end CRISPR guide design