WO2024075160A1 - データ変換装置、データ変換方法及びプログラム - Google Patents
データ変換装置、データ変換方法及びプログラム Download PDFInfo
- Publication number
- WO2024075160A1 WO2024075160A1 PCT/JP2022/036978 JP2022036978W WO2024075160A1 WO 2024075160 A1 WO2024075160 A1 WO 2024075160A1 JP 2022036978 W JP2022036978 W JP 2022036978W WO 2024075160 A1 WO2024075160 A1 WO 2024075160A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- program
- data
- conversion
- candidates
- output
- Prior art date
Links
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 121
- 238000000034 method Methods 0.000 title claims description 90
- 238000013138 pruning Methods 0.000 claims description 17
- 230000015572 biosynthetic process Effects 0.000 description 52
- 230000008569 process Effects 0.000 description 40
- 238000010586 diagram Methods 0.000 description 28
- 238000012545 processing Methods 0.000 description 17
- 238000004364 calculation method Methods 0.000 description 7
- 238000007405 data analysis Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000013501 data transformation Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000002408 directed self-assembly Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
Definitions
- the present invention relates to a data conversion device, a data conversion method, and a program.
- Digital transformation is driving the use of digital technology and data (information assets). In order to become more competitive, it is important for not only data scientists but also general employees to incorporate data analysis into their daily work. Data analysis requires preprocessing of data, but it is said that preprocessing takes up approximately 80% of the workforce and requires knowledge of conversion methods and programming, which is hindering the spread of data analysis.
- ETL tools exist as tools that support data analysis. With ETL tools, data conversion can be performed automatically by specifying the data conversion method. However, in addition to requiring knowledge of the conversion method, it is time-consuming to specify the conversion method every time new data conversion is performed.
- Non-Patent Document 1 is a technology that synthesizes a program that realizes the desired data transformation from small-scale examples of before and after data transformation that reflect the transformation. By executing the synthesized program on the data to be transformed, the desired transformed data can be obtained.
- Program synthesis technology is a technique that searches through combinations of pre-prepared function sets to find a program that realizes a given data transformation example (input example and output example).
- the synthesized program candidates are run by providing an input example, and it is confirmed whether an output similar to the output example provided by the user is obtained.
- a program that obtains the same output as the output example is output as a program that realizes the data transformation desired by the user.
- AutoPandas has the advantage that it can be used without knowledge of conversion methods or programming, since all that is required is to prepare specific examples before and after data conversion.
- users must prepare examples before and after data conversion that reflect the specifications they wish to achieve, and if the specifications are not sufficiently reflected in the examples before and after data conversion and the desired program cannot be synthesized, the examples must be re-created, which requires a lot of work.
- the present invention was made in consideration of the above points, and aims to improve the work efficiency of data conversion.
- the data conversion device has an input unit configured to input tabular data to be converted, and conversion results of positive examples and conversion results of negative examples related to a portion of the tabular data, a generation unit configured to generate one or more candidates for a program that outputs a conversion result that includes the positive examples and does not include the negative examples when the tabular data is input, a search unit configured to search for the program from among the one or more candidates, and an output unit configured to output the conversion result of the tabular data by the program.
- FIG. 1 is a diagram illustrating an example of a hardware configuration of a data conversion device 10 according to an embodiment of the present invention.
- 1 is a diagram illustrating an example of a functional configuration of a data conversion device 10 according to an embodiment of the present invention.
- 4 is a flowchart illustrating an example of a processing procedure executed by the data conversion device 10.
- FIG. 2 is a diagram showing an example of a pre-conversion data set in the present embodiment.
- FIG. 2 is a diagram showing an example of a template for DSL in the present embodiment.
- FIG. 2 illustrates an example of a DSL for transforming a pre-transformed data set.
- FIG. 13 is a diagram showing a user-desired join result for pre-conversion data sets in this embodiment.
- FIG. 10 is a diagram showing an example of user presented data in the present embodiment.
- FIG. 11A and 11B are diagrams showing an example of a program and converted data searched for in step S200.
- FIG. 13 is a diagram illustrating an example of user-presented data to which negative examples have been added.
- FIG. 11 is a diagram showing an example of the program and converted data searched for in step S400.
- 11 is a flowchart illustrating an example of a processing procedure for generating converted data that reflects user-presented data.
- FIG. 13 is a diagram for explaining the depth of a program.
- 10 is a flowchart illustrating an example of a processing procedure for initializing a program bank PB.
- FIG. 13 is a flowchart illustrating an example of a processing procedure for generating all program sets PN having a depth of N.
- 11 is a flowchart illustrating an example of a process procedure for calculating a score S based on an output O.
- 13 is a flowchart illustrating an example of a procedure for calculating a score for a positive example.
- 11A and 11B are diagrams for explaining a specific example of a process for calculating a score for a positive example.
- 13 is a flowchart illustrating an example of a procedure for calculating a score for a negative example.
- 11A and 11B are diagrams for explaining a specific example of a process for calculating a score for a negative example.
- 11 is a flowchart illustrating an example of a processing procedure for pruning a program bank PB.
- FIG. 13 is a diagram for explaining pruning based on commonality and depth of outputs.
- FIG. 13 is a diagram for explaining pruning based on a
- the user and the machine perform data conversion interactively, allowing data conversion to be performed with minimal operations even without knowledge of conversion methods or programming.
- the user provides the machine with a portion of the converted data, and the machine synthesizes a conversion program that includes that data in the conversion result, and presents the converted data to the user.
- the user reviews the data, and corrects the converted data if there are any inappropriate parts.
- the machine resynthesizes a conversion program that takes the corrections into account, and again presents the new converted data to the user.
- the user can perform data conversion even without knowledge of conversion methods or programming. There is also no need to create small-scale examples of before and after data conversion that reflect the data conversion to be achieved, as with AutoPandas.
- the user's intent is expressed by input/output examples.
- the input/output examples can be considered as positive examples that represent part of the specifications that one wants to realize.
- the user's intent is added to the output of the program synthesized by the machine. Since the output of the machine may contain inappropriate data, it is necessary to be able to express negative user intent as well.
- program synthesis it is necessary to be able to quantitatively evaluate to what extent the synthesized program meets given specifications. It is also necessary to consider evaluation methods for new methods of expressing intent.
- the user's intention is expressed by positive and negative examples.
- the machine searches for a program that outputs something that includes positive examples but does not include negative examples (a program that satisfies both positive and negative examples).
- a new evaluation function is proposed that takes into account the degree to which the positive and negative examples are satisfied.
- FIG. 1 is a diagram showing an example of the hardware configuration of a data conversion device 10 according to an embodiment of the present invention.
- the data conversion device 10 in FIG. 1 includes a drive device 100, an auxiliary storage device 102, a memory device 103, a CPU 104, an interface device 105, a display device 106, and an input device 107, all of which are interconnected via a bus B.
- the program that realizes the processing in the data conversion device 10 is provided by a recording medium 101 such as a CD-ROM.
- a recording medium 101 such as a CD-ROM.
- the program is installed from the recording medium 101 via the drive device 100 into the auxiliary storage device 102.
- the program does not necessarily have to be installed from the recording medium 101, but may be downloaded from another computer via a network.
- the auxiliary storage device 102 stores the installed program as well as necessary files, data, etc.
- the memory device 103 When an instruction to start a program is received, the memory device 103 reads out and stores the program from the auxiliary storage device 102.
- the CPU 104 realizes functions related to the data conversion device 10 in accordance with the program stored in the memory device 103.
- the interface device 105 is used as an interface for connecting to a network.
- the display device 106 displays a GUI (Graphical User Interface) based on a program, etc.
- the input device 107 is composed of a keyboard, mouse, etc., and is used to input various operational instructions.
- FIG. 2 is a diagram showing an example of the functional configuration of data conversion device 10 in an embodiment of the present invention.
- data conversion device 10 has a program synthesis unit 11, a synthesized program evaluation unit 12, and a pruning unit 13. Each of these units is realized by a process in which one or more programs installed in data conversion device 10 are executed by CPU 104.
- FIG. 3 is a flowchart illustrating an example of a processing procedure executed by the data conversion device 10.
- the program synthesis unit 11 inputs a pre-conversion data set.
- the pre-conversion data set is a set of two tables (hereinafter, each table is referred to as "pre-conversion data") to be converted (combined).
- Fig. 4 is a diagram showing an example of a pre-conversion data set in this embodiment. Fig. 4 shows two pieces of pre-conversion data constituting the pre-conversion data set. The first piece of pre-conversion data is an employee table, and the second piece of pre-conversion data is an approval table.
- the pre-conversion data set ( Figure 4) in this embodiment is of a size that allows easy comprehension of all data (all records), but this embodiment can also be applied to pre-conversion data sets of enormous scale, in which case the effects can be more pronounced.
- the program synthesis unit 11 reads a DSL (Domain-Specific Language) template (S102).
- DSL Domain-Specific Language
- DSL refers to a definition of specifications related to data conversion rules.
- a join of two tables is required. Therefore, for example, a developer of the data conversion device 10 (a person who provides data conversion services to a user of the data conversion device 10) defines a template of DSL for joining two tables in advance in response to a request from the user (joining two tables) and stores it in the auxiliary storage device 102 or the like.
- the program synthesis unit 11 reads the template of DSL from the auxiliary storage device 102 or the like.
- the interface specifications of a method for joining two tables are as follows: merge(DF, DF, K0, K1, H)
- the first argument, DF is the left table to be joined.
- the second argument, DF is the right table to be joined.
- the third argument, K0 is the attribute (label name) that will be the concatenated key of the left table.
- the fourth argument, K1 is the attribute (label name) that will be the concatenated key of the right table.
- the fifth argument, H is the type of join (left outer join, right outer join). Note that the expressions left table and right table are expressions related to the type of join.
- the user's request which is communicated to developers in advance, is that "I want to join two tables," and the table structure is not included.
- the developers determine that the merge method is optimal for this request, and create a DSL template assuming that the merge method will be used.
- FIG. 5 is a diagram showing an example of a template for a DSL in this embodiment. As shown in FIG. 5, the DSL includes two parts: (1) and (2).
- (1) is the part where the candidate input values for each argument of the method to be used (merge in this embodiment) are defined.
- the possible input values are table 0 and table 1, which are the data before conversion, and the combined table, which is the output of the merge method. Therefore, for the DF, these are the candidates for input values.
- K0 and K1 depend on the pre-conversion data, so developers who do not know the pre-conversion data cannot define them. Therefore, no input value candidates are defined for K0 and K1.
- left and right are candidates for input values as part of the merge method specifications. Therefore, for H, left and right are defined as candidates for input values. Note that left means a left outer join, and right means a right outer join.
- (2) is the part that defines what the start symbols, non-terminal symbols, terminal symbols, and abstract symbols are for the program that executes the data conversion desired by the user.
- a start symbol is a symbol that can be a root node when a program is expressed in a tree structure.
- developers can assume that table 0, table 1, and the merge method can be start symbols. Therefore, these are defined as start symbols.
- a program in which table 0 or table 1 is the root node is a program that outputs table 0 or table 1 as is, and the output of the program is unlikely to be the output desired by the user.
- developers do not know the specific output desired by the user, it is safer to include candidates with a possibility that cannot be said to be zero in the definition (i.e., it is possible that the user wants a conversion in which table 0 is output as the result of joining table 0 and table 1). Therefore, in this embodiment, table 0 and table 1 are also set as start symbols. However, if it is clear that table 0 or table 1 is not the output, table 0 and table 1 do not need to be included in the start symbols.
- a non-terminal symbol is a symbol that does not become a leaf node when a program is represented as a tree structure.
- a method corresponds to a non-terminal symbol. Therefore, in this embodiment, the merge method is defined as a non-terminal symbol.
- a terminal symbol is a symbol that can become a leaf node when a program is represented as a tree structure.
- Terminal symbols are constants given as arguments to the merge method, and therefore depend on the tables to be merged. Therefore, terminal symbols are unknown to developers, etc. Therefore, terminal symbols are not defined in Figure 5.
- An abstract symbol is a symbol that represents a set of values. More specifically, an abstract symbol is a symbol defined in part (1). The symbol is known to developers, etc. In other words, DF, K0, K1, and H are abstract symbols.
- the program synthesis unit 11 fills in the missing parts in the template shown in Figure 5 based on the pre-conversion dataset ( Figure 4), thereby completing the DSL (specialized for the pre-conversion data) related to the conversion of the pre-conversion dataset (S103).
- Figure 6 is a diagram showing an example of DSL related to the conversion of a pre-conversion data set.
- the employee table corresponds to table 0
- the approval table corresponds to table 1.
- the attributes (label names) of the employee table are employee ID and employee name. Therefore, the program synthesis unit 11 applies the employee ID and employee name as candidates for the input value of K0.
- the attributes (label names) of the approval table are approval ID, employee ID, and result. Therefore, the program synthesis unit 11 applies the approval ID, employee ID, and result as candidates for the input value of K0.
- part (1) of the DSL is completed.
- the symbols other than the non-terminal symbols are table 0, table 1, employee ID, employee name, approval ID, employee ID, result, left, and right. Therefore, the program synthesis unit 11 assigns these symbols to terminal symbols. As a result, the part in (2) is also completed. In the following, the completed DSL is used to search for a program that will execute the conversion desired by the user.
- the program synthesis unit 11 does not need to execute step S103.
- the program synthesis unit 11 inputs user-presented data created by the user based on the pre-conversion data set (S104).
- the user wishes to synthesize a program that outputs the data shown in FIG. 7 as a result of combining (merging) the employee table and the approval table (however, the user does not need to know all of the conversion results).
- the user inputs, for example, the following data as user-presented data.
- a positive example a part of the output desired by the user is given.
- FIG. 8 an example is shown in which the first data in FIG. 7 is given as a positive example.
- a negative example data that does not correspond to any of the outputs desired by the user is given. However, it is not necessary to give a negative example at first.
- FIG. 8 an example is shown in which no negative example is given.
- the data conversion device 10 executes a process for generating converted data that reflects the user-submitted data (S200).
- this generation process one or more program candidates are generated within the range that satisfies the DSL, and a program that satisfies the positive and negative examples is searched for from among the one or more candidates.
- the program is executed to obtain converted data (data output by the program).
- FIG. 9 is a diagram showing an example of a program and converted data searched for in step S200.
- (1) is a program searched for as satisfying the user-presented data in FIG. 8, and (2) is an example of converted data by that program.
- the synthesis program evaluation unit 12 of the data conversion device 10 receives from the user whether the converted data is appropriate (S250). If an input indicating that the converted data is appropriate is received (Yes in S250), the processing procedure in FIG. 3 ends. In this case, the converted data obtained in step S200 is used by the user.
- the program synthesis unit 11 receives input of new user-presented data from the user (S300).
- the second record (a record that does not include a payment ID) is a record for a person who has not made a payment, but the user wishes that this record not to be included in the converted data.
- the user inputs new user-submitted data in which this record is added as a negative example.
- FIG. 10 is a diagram showing an example of user-submitted data to which a negative example has been added.
- the user-submitted data shown in FIG. 10 is the user-submitted data shown in FIG. 8 to which the second record in FIG. 9 has been added as a negative example.
- the data conversion device 10 executes a process for generating converted data that reflects the new user-presented data (S400).
- the algorithm in step S400 is the same as the algorithm in step S200. Therefore, the searched program and the converted data that is output by executing the program are obtained.
- FIG. 11 is a diagram showing an example of a program and converted data searched for in step S400.
- (1) is a program searched for as satisfying the user-presented data in FIG. 10
- (2) is an example of converted data by that program.
- the program in Figure 11 is changed from a left outer join to a right outer join compared to the program in Figure 9 by providing negative examples (the last argument changes from left to right). Also, the converted data in Figure 11 does not include negative examples.
- steps S250 and after are repeated. Therefore, if the user is satisfied with the converted data obtained in step S400 (Yes in S250), the processing procedure in FIG. 3 ends, and if not (No in S250), steps S300 and S400 are executed again.
- FIG. 12 is a flowchart for explaining an example of the processing procedure for generating converted data that reflects user-presented data.
- step S201 the program synthesis unit 11 assigns 1 to the variable N.
- the program bank functions as a storage destination for previously synthesized programs, eliminating the need to resynthesize the same program, and is data that plays a role in making program synthesis more efficient (reducing time), and is used in bottom-up program synthesis.
- the score indicates the degree of match (similarity) of the program output to the user-supplied data.
- the program depth is the maximum depth of a program that can be created by combining DSLs into a tree structure.
- Figure 13 is a diagram to explain the depth of a program.
- program (1) has a depth of 0.
- Program (2) has a depth of 1.
- a program set PN is a set of one or more programs (a set of program candidates that satisfy positive and negative examples).
- the composite program evaluation unit 12 executes a loop process for each program (candidate) included in the program set PN.
- the program being processed in the loop process is called "program P.”
- step S231 the composite program evaluation unit 12 inputs the pre-conversion data set ( Figure 4) into program P and executes it to obtain output O from program P. If program P does not use the pre-conversion data set as input, the execution result of program P becomes output O. If program P is a constant, the constant becomes output O.
- the composite program evaluation unit 12 judges whether the beginning of the program P is a start symbol (S232).
- the beginning of the program P refers to the element that appears first in the program P created by combining DSLs. For example, the beginning of the program "merge (employee table, approval table, employee ID, employee ID, left)" is merge.
- the start symbols are employee table, approval table, and merge (DF, DF, K0, K1, H). Therefore, in step S232, it is judged whether the beginning of the program P is any of these.
- the composite program evaluation unit 12 sets the score S of program P to null (S233) and proceeds to step S235.
- the composite program evaluation unit 12 calculates a score S based on the output O (S240).
- the composite program evaluation unit 12 determines whether the score S is 1.0 (S234). If the score S is 1.0 (Yes in S234), the composite program evaluation unit 12 outputs the output O to the user and returns control of the process to the caller. In this case, the program P becomes the composite result of the programs that satisfy the positive examples and negative examples, and the output O becomes the data after conversion by the program P. If the score S is not 1.0 (No in S233), proceed to step S235.
- the calculation of the score S corresponds to a search for a program that satisfies the positive and negative examples.
- step S235 the composite program evaluation unit 12 adds the set ⁇ program P, score S, output O, N ⁇ to the program bank PB.
- the pruning unit 13 executes a pruning process for the program bank PB (S250).
- step S220 which is executed next, a new program is synthesized based on the program bank PB, but if there are many programs in the program bank PB, pruning is performed to prevent a combination explosion.
- the program synthesis unit 11 adds 1 to N (S261) and repeats step S220 and subsequent steps. That is, while increasing the depth of the program, for each depth, candidates for programs that satisfy positive and negative examples are generated based on programs generated at shallower depths than the current depth, and a program that satisfies positive and negative examples is searched for from among the candidates.
- FIG. 14 is a flowchart for explaining an example of the processing procedure for initializing the program bank PB.
- step S211 the program synthesis unit 11 initializes the program bank PB to an empty state.
- the program synthesis unit 11 executes a loop process for each terminal symbol of the DSL.
- the terminal symbols of the DSL are "Employee Table
- the terminal symbol being processed in the loop process is called the "terminal symbol TS.”
- step S212 the program synthesis unit 11 executes the terminal symbol TS to obtain the output O.
- the terminal symbol is a constant, so its value becomes the output O as is.
- the output O of the terminal symbol "employee table” is "employee table”.
- the program synthesis unit 11 determines whether the terminal symbol TS is a start symbol (S213).
- the start symbols are the employee table, the approval table, and the merge method. Therefore, in step S213, it is determined whether the terminal symbol TS is an employee table, an approval table, or a merge method.
- step S213 the synthesis program evaluation unit 12 calculates a score S based on the output O (S240) and proceeds to step S215.
- the algorithm of step S240 here is the same as the algorithm of step S240 in FIG. 12. If the terminal symbol TS is not a start symbol (No in S213), the program synthesis unit 11 sets the score S to null (S214) and proceeds to step S215.
- step S215 the program synthesis unit 11 adds ⁇ terminal symbol TS, score S, output O, depth N ⁇ to the program bank PB.
- the terminal symbol TS is an employee ID, ⁇ employee ID, null, employee ID, 0 ⁇ is added to the program bank PB.
- FIG. 15 is a flowchart for explaining an example of the processing procedure for generating all program sets PN whose depth is N.
- step S221 the program synthesis unit 11 initializes the program set PN to an empty state.
- the program synthesis unit 11 executes a loop process for each non-terminal symbol of the DSL.
- the non-terminal symbol that is the target of the loop process is called the "non-terminal symbol NS.” Note that in this embodiment, the only non-terminal symbol is "merge(DF, DF, K0, K1, H)."
- step S222 the program synthesis unit 11 generates a new program set by comprehensively applying to each abstract symbol of the non-terminal symbol NS all programs in the program bank PB that can fit that abstract symbol.
- a program in the program bank PB that can fit a certain abstract symbol refers to a program whose beginning belongs to that abstract symbol.
- NS is merge(DF, DF, K0, K1, H), and table 0, table 1, employee ID, employee name, decision ID, result, left, and right are registered in the program bank PB.
- table 0 table 0
- table 1 employee ID and employee name.
- K1 decision ID, employee ID, and result.
- H left and right can apply to H.
- the program synthesis unit 11 deletes all programs other than those with a depth of N from the program set PN (S223).
- FIG. 16 is a flowchart for explaining an example of the processing procedure for calculating the score S based on the output O.
- step S241 the synthesis program evaluation unit 12 calculates the score for the positive example for output O and assigns the calculation result to s_p.
- the synthesis program evaluation unit 12 calculates the score for the negative example for the output O and assigns the calculation result to s_n (S242).
- the synthesis program evaluation unit 12 returns s_p-s_n as the score S.
- FIG. 17 is a flowchart for explaining an example of the processing procedure for calculating the score for a positive example.
- step S2411 the synthesis program evaluation unit 12 initializes the similarity list S_L to an empty state.
- the synthesis program evaluation unit 12 calculates the similarity Sim_0 between the label name row C1 of the output O and the label name row C2 of the positive example of the user-submitted data, and adds the calculation result sim_0 to S_L (S2412).
- the label name row of the output O is, for example, the row of "payment ID, employee ID, employee name, result” if the output O is the converted data of Fig. 9.
- the label name row of the positive example of the user-submitted data is the row of "payment ID, employee ID, employee name, result" in the positive examples of Figs. 8 and 10.
- Sim_0 is the number of elements contained in both C1 and C2 divided by the number of elements contained in at least one of C1 and C2.
- the composite program evaluation unit 12 executes a loop process including steps S2413 to S2416 (hereinafter referred to as "loop process A") for each row of the positive example of the user-submitted data other than the label name row.
- loop process A The positive example row being processed in loop process A is referred to as "C1_N”.
- rows other than the "Payment ID, Employee ID, Employee Name, Result" row are candidates for C1_N.
- step S2413 the synthesis program evaluation unit 12 initializes the list type variable S_L_temp to an empty state.
- loop process B a loop process including steps S2414 and S2415 (hereinafter referred to as "loop process B") for each row of output O other than the label name row.
- the row of output O being processed in loop process B is referred to as "C2_N”.
- step S2414 the composite program evaluation unit 12 calculates the similarity Sim_N_temp between C1_N and C2_N.
- the calculation formula for the similarity Sim_N_temp is as follows. Sim_N_temp ⁇ number of elements in (C1_N ⁇ C2_N)/number of elements in (C1 ⁇ C2)
- the synthesized program evaluation unit 12 adds Sim_N_temp to S_L_temp (S2415).
- the synthesis program evaluation unit 12 adds the maximum value in SL_temp to S_L (S2416).
- the synthesis program evaluation unit 12 When loop process A is completed for all rows other than the positive example label name rows, the synthesis program evaluation unit 12 returns the average value of all elements in S_L as the score S for the positive example.
- FIG. 18 is a diagram for explaining specific examples of the process of calculating scores for positive examples. Three specific examples (1) to (3) are shown in FIG. 18.
- (1) is the case where all positive examples are included in output O.
- FIG. 19 is a flowchart for explaining an example of the processing procedure for calculating scores for negative examples.
- step S2421 the synthesis program evaluation unit 12 initializes the similarity list S_L to an empty state, and assigns an arbitrary (random) value (but a positive value greater than 0) to the variable weight.
- loop process C a loop process including steps S2422 to S2425 (hereinafter referred to as "loop process C") for each row of the negative example of the user-submitted data other than the label name row.
- the negative example row being processed in loop process C is referred to as "C1_N”.
- the rows other than the row "Payment ID, Employee ID, Employee Name, Result" are candidates for C1_N.
- step S2422 the synthesis program evaluation unit 12 initializes the list type variable S_L_temp to an empty state.
- loop process D a loop process including steps S2423 and S2424 (hereinafter referred to as "loop process D") for each row of output O other than the label name row.
- the row of output O that is being processed in loop process D is referred to as "C2_N”.
- step S2423 the composite program evaluation unit 12 calculates the similarity Sim_N_temp between C1_N and C2_N.
- the calculation formula for the similarity Sim_N_temp is as follows. Sim_N_temp ⁇ number of elements in (C1_N ⁇ C2_N)/number of elements in (C1 ⁇ C2)
- the synthesized program evaluation unit 12 adds Sim_N_temp to S_L_temp (S2424).
- the synthesis program evaluation unit 12 adds the maximum value in SL_temp to S_L (S2425).
- the synthesis program evaluation unit 12 returns the number of 1.0s in S_L x weight as the score S for the negative example.
- FIG. 20 is a diagram for explaining specific examples of the process of calculating scores for negative examples. Two specific examples, (1) and (2), are shown in FIG. 20.
- (1) is the case where the output O contains all negative examples. In this case, the number of 1.0s in S_L is 1. Therefore, if the value of weight is 0.2, the score S is 0.2.
- FIG. 21 is a flowchart for explaining an example of the processing procedure for pruning a program bank PB.
- step S251 the pruning unit 13 groups programs in the program bank PB that have the same output O.
- the programs in the program bank PB are classified into groups based on the commonality of the output O.
- the pruning unit 13 deletes all programs from the program bank PB except for the program with the shallowest depth in each group (S252). In other words, programs that return the same output are considered equivalent, and the simpler (shallower) programs are left. Note that if there are multiple shallowest programs, the pruning unit 13 randomly selects one from the shallowest programs and deletes all programs except the selected one.
- FIG. 22 is a diagram for explaining pruning based on output commonality and depth.
- FIG. 22 shows an example in which program bank PB contains programs 1 and 2.
- the outputs of programs 1 and 2 are common, as shown in the table at the bottom of FIG. 22. Therefore, programs 1 and 2 are classified into the same group. Within this group, the program with the shallowest depth is program 1. Therefore, program 2 is deleted, and program 1 remains.
- the pruning unit 13 leaves the program with the highest score among the programs with non-null scores, and deletes the remaining programs with non-null scores (S253). That is, the programs with null scores and the program with the highest score among the programs with non-null scores are left.
- the program with the highest score is left because it is assumed to be most similar to the user-submitted data.
- the programs with null scores i.e., programs that do not return a table
- FIG. 23 is a diagram for explaining pruning based on scores.
- FIG. 23 shows an example in which programs 1 to 4 form part of a program bank PB.
- program 4 is left because its score is null.
- programs 1 to 3 only program 2, which has the highest score, is left (programs 1 and 3 are deleted).
- the work efficiency for data conversion can be improved. Specifically, a user can perform data conversion with minimal work even if he or she does not have knowledge of conversion methods or programming. This makes it possible for people other than data scientists to perform data analysis, and knowledge gained from data analysis can be reflected in daily work.
- a row of the DF of the DSL may be defined as follows.
- DF:: EmployeeTable
- method 2 (DF, 7) may be, for example, a method that outputs a table with a specific column or row deleted from DF.
- a program is synthesized that executes a conversion process of joining two tables and then deleting a specific row or column, or a conversion process of deleting a column or row from one of the tables and then joining the two tables. Which program is ultimately selected depends on the user-presented data.
- the program synthesis unit 11 is an example of an input unit and a generation unit.
- the synthesis program evaluation unit 12 is an example of a search unit and an output unit.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
データ変換装置は、変換対象の表形式データと、前記表形式データの一部に関する正例の変換結果と負例の変換結果とを入力するように構成されている入力部と、前記表形式データを入力した場合に前記正例を含み前記負例を含まない変換結果を出力するプログラムについて1以上の候補を生成するように構成されている生成部と、前記1以上の候補の中から前記プログラムを探索するように構成されている探索部と、前記表形式データに対する前記プログラムによる変換結果を出力するように構成されている出力部と、を有することで、データ変換のための作業効率を向上させる。
Description
本発明は、データ変換装置、データ変換方法及びプログラムに関する。
デジタル・トランスフォーメーションによって、デジタル技術とデータ(情報資産)の活用が進みつつある。より競争力を高めるためにはデータサイエンティストだけでなく、一般社員も日常業務にデータ分析を組み込んでいくことが重要である。データ分析を行うためにはデータの前処理が必要となるが、前処理には約8割の稼働がかかるとも言われており、変換方法やプログラミングの知識も要するため、データ分析の普及の妨げとなっている。
データ分析を支援するツールとして、ETLツールが存在する。ETLツールではデータの変換方法を指定することで、データ変換を自動で行うことができる。しかし、変換方法の知識が必要なことに加え、新しいデータ変換を行うたびに変換方法を指定するための手間がかかる。
AutoPandas(非特許文献1)は、実現したいデータ変換を反映したデータ変換前後の小規模な例から、その変換を実現するプログラムを合成する技術である。合成されたプログラムを変換したいデータに対して実行することで、所望の変換後データを得ることができる。
プログラム合成技術は、与えられたデータの変換例(入力例と出力例)を実現するプログラムを、予め用意した関数セットの組み合わせの中から探索によって探し出す技術である。合成されたプログラムの候補を、入力例を与えて実行し、ユーザが与えた出力例と同様の出力が得られるかどうかを確認する。出力例と同じ出力が得られたプログラムは、ユーザが望むデータ変換を実現するプログラムとして出力される。
Rohan Bavishi, Caroline Lemieux, Roy Fox, Koushik Sen, and Ion Stoica. 2019. "AutoPandas: neural-backed generators for program synthesis." Proc. ACM Program. Lang. 3, OOPSLA, Article 168 (October 2019), 27 pages
AutoPandasでは、データ変換前後の具体例を用意するだけで良いため、変換方法やプログラミングの知識がなくても使うことができるという利点が存在する。しかし、ユーザは実現したい仕様を反映したデータ変換前後の例を用意する必要があり、データ変換前後の例に対する仕様の反映が不十分で所望のプログラムが合成できなかった場合、再度その例を作成し直さなくてはならず、多くの稼働がかかる。
本発明は、上記の点に鑑みてなされたものであって、データ変換のための作業効率を向上させることを目的とする。
そこで上記課題を解決するため、データ変換装置は、変換対象の表形式データと、前記表形式データの一部に関する正例の変換結果と負例の変換結果とを入力するように構成されている入力部と、前記表形式データを入力した場合に前記正例を含み前記負例を含まない変換結果を出力するプログラムについて1以上の候補を生成するように構成されている生成部と、前記1以上の候補の中から前記プログラムを探索するように構成されている探索部と、前記表形式データに対する前記プログラムによる変換結果を出力するように構成されている出力部と、を有する。
データ変換のための作業効率を向上させることができる。
本実施の形態において開示される技術では、ユーザと機械(後述のデータ変換装置10)が対話的にデータ変換を行うことで、変換方法やプログラミングの知識がなくても、少ない稼働でデータ変換を行うことができる。具体的には、ユーザは変換後のデータの一部を機械に与えることで、機械はそのデータが変換結果に含まれるような変換プログラムを合成し、変換後のデータをユーザに提示する。ユーザはそのデータをレビューし、不適切な箇所があれば変換後のデータを修正する。機械はその修正を考慮した変換プログラムを再度合成し、新しい変換後のデータを再度ユーザに提示する。このような対話的なプロセスを繰り返すことで、ユーザは変換方法やプログラミングの知識がなくてもデータ変換を行うことができる。また、AutoPandasのように実現したいデータ変換を反映したデータ変換前後の小規模な例を作成する必要もない。
既存のプログラム合成技術では、ユーザの意図は入出力例で表現される。入出力例は、実現したい仕様の一部を表した肯定的な例であると捉えることができる。一方、本実施の形態における対話的なプログラム合成では、機械によって合成されたプログラムの出力結果に対して、ユーザの意図が加えられていく。機械の出力結果には不適切なデータが含まれる可能性もあるため、否定的なユーザの意図も表現できるようにする必要がある。また、プログラム合成では与えられた仕様に対して、合成したプログラムがどの程度その仕様を満たしているか、定量的に評価できるようにする必要がある。新しい意図の表現方法に対する評価方法も検討する必要がある。
そこで、本実施の形態では、ユーザの意図が正例と負例で表現される。機械は、正例を含み、負例を含まないような出力を行うプログラム(正例及び負例を満たすプログラム)を探索する。また、正例と負例の満たしている度合いを考慮した新しい評価関数が提案される。
以下、図面に基づいて本発明の実施の形態を説明する。
図1は、本発明の実施の形態におけるデータ変換装置10のハードウェア構成例を示す図である。図1のデータ変換装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、インタフェース装置105、表示装置106、及び入力装置107等を有する。
データ変換装置10での処理を実現するプログラムは、CD-ROM等の記録媒体101によって提供される。プログラムを記憶した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従ってデータ変換装置10に係る機能を実現する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。表示装置106はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置107はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
図2は、本発明の実施の形態におけるデータ変換装置10の機能構成例を示す図である。図2において、データ変換装置10は、プログラム合成部11、合成プログラム評価部12及び枝刈り部13を有する。これら各部は、データ変換装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
以下、データ変換装置10が実行する処理手順について説明する。本実施の形態では、ユーザが、2つの表形式データ(以下、「テーブル」という。)の結合結果を得たい場合を想定する。但し、本実施の形態において可能なデータ変換は、テーブルの結合のみに限られない。
図3は、データ変換装置10が実行する処理手順の一例を説明するためにフローチャートである。
ステップS101において、プログラム合成部11は、変換前データセットを入力する。本実施の形態において、変換前データセットとは、変換対象(結合対象)とされる2つのテーブル(以下、各テーブルを「変換前データ」という。)の組である。変換前データセットのデータ構造は、以下のように表現することができる。
<変換前データセット>::=変換前データ+
図4は、本実施の形態における変換前データセットの一例を示す図である。図4には、変換前データセットを構成する2つの変換前データが示されている。1つ目の変換前データは、社員テーブルであり、2つ目の変換前データは、決裁テーブルである。
<変換前データセット>::=変換前データ+
図4は、本実施の形態における変換前データセットの一例を示す図である。図4には、変換前データセットを構成する2つの変換前データが示されている。1つ目の変換前データは、社員テーブルであり、2つ目の変換前データは、決裁テーブルである。
なお、本実施の形態における変換前データセット(図4)は、便宜上、全データ(全レコード)を容易に把握可能な程度の規模であるが、本実施の形態は、膨大な規模の変換前データセットに対しての適用も可能であり、その場合にはより顕著に効果を得ることができる。
続いて、プログラム合成部11は、DSL(Domain-Specific Language)の雛形を読み込む(S102)。
本実施の形態において、DSLとはデータの変換ルールに関する仕様の定義をいう。本実施の形態では、2つのテーブルの結合が要求されている。そこで、例えば、データ変換装置10の開発者等(データ変換装置10のユーザに対してデータ変換のサービスを提供する側の者)は、ユーザからの要求(2つのテーブルの結合)に応じ、2つのテーブルの結合のためのDSLの雛形を予め定義しておき、補助記憶装置102等に保存しておく。プログラム合成部11は、補助記憶装置102等からDSLの雛形を読み込む。
前提として、データ変換装置10には、予め、データ変換用の各種のメソッドが予め実装されている。例えば、2つのテーブルを結合するメソッドのインタフェース仕様は、以下の通りである。
merge(DF,DF,K0,K1,H)
1番目の引数であるDFは、結合対象の左側のテーブルである。2番目の引数であるDFは、結合対象の右側のテーブルである。3番目の引数であるK0は、左側のテーブルの連結キーとなる属性(ラベル名)である。4番目の引数であるK1は、右側のテーブルの連結キーとなる属性(ラベル名)である。5番目の引数であるHは、結合の種類(左外部結合、右外部結合)である。なお、左側のテーブル及び右側のテーブルという表現は、結合の種類に関連する表現である。
merge(DF,DF,K0,K1,H)
1番目の引数であるDFは、結合対象の左側のテーブルである。2番目の引数であるDFは、結合対象の右側のテーブルである。3番目の引数であるK0は、左側のテーブルの連結キーとなる属性(ラベル名)である。4番目の引数であるK1は、右側のテーブルの連結キーとなる属性(ラベル名)である。5番目の引数であるHは、結合の種類(左外部結合、右外部結合)である。なお、左側のテーブル及び右側のテーブルという表現は、結合の種類に関連する表現である。
開発者等が予め知らされるユーザの要求は、「2つのテーブルを結合したい」ということであり、テーブルの構造までは含まれない。開発者等は、この要求に対しては、mergeメソッドが最適であると判断し、mergeメソッドを使うことを前提として、DSLの雛形を作成する。
図5は、本実施の形態におけるDSLの雛形の一例を示す図である。図5に示されるように、DSLは、(1)及び(2)の2つの部分を含む。
(1)は、使用するメソッド(本実施の形態ではmerge)の引数ごとに、当該引数に対する入力値の候補が定義される部分である。1番目及び2番目の引数であるそれぞれのDFに対しては、変換前のデータであるテーブル0及びテーブル1と、mergeメソッドの出力である結合後のテーブルが入力値となりうる。したがって、DFについては、これらが入力値の候補とされている。
K0及びK1は、変換前データに依存するため、変換前データを知らない開発者等は、定義することができない。したがって、K0及びK1について、入力値の候補は定義されていない。
Hについては、mergeメソッドの仕様として、left及びrightが入力値の候補であることが開発者等にとって既知である。したがって、Hに対しては、left及びrightが入力値の候補として定義される。なお、leftは左外部結合を意味し、rightは右外部結合を意味する。
(2)は、ユーザ所望のデータ変換を実行するプログラムについて、開始記号、非終端記号、終端記号及び抽象記号が何であるかが定義される部分である。
開始記号とは、プログラムを木構造で表現した場合にルートノードになり得る記号である。本実施の形態では、テーブル0、テーブル1及びmergeメソッドが開始記号となりうることが開発者等にとって想定可能である。したがって、これらが開始記号として定義される。なお、テーブル0又はテーブル1がルートノードになるプログラムは、テーブル0又はテーブル1をそのまま出力するプログラムであり、当該プログラムの出力は、ユーザが所望する出力である可能性は低い。但し、開発者等は、ユーザが所望する具体的な出力を知らないことを前提とすると、可能性が0とは言えない候補も定義に含めておいた方が安全である(すなわち、ユーザが、テーブル0とテーブル1の結合結果としてテーブル0が出力される変換を望んでいる可能性も考えられる。)。そこで、本実施の形態では、テーブル0及びテーブル1も開始記号とされている。但し、テーブル0又はテーブル1が出力でないことが明らかである場合には、テーブル0及びテーブル1は、開始記号に含まれなくてもよい。
非終端記号とは、プログラムを木構造で表現した場合に葉ノードにならない記号である。つまり、メソッドが非終端記号に相当する。したがって、本実施の形態では、mergeメソッドが非終端記号とし定義される。
終端記号とは、プログラムを木構造で表現した場合に葉ノードになり得る記号である。終端記号は、mergeメソッドの引数に与えられる定数であるため、結合対象とされるテーブルに依存する。したがって、終端記号は、開発者等にとって未知である。そこで、図5において、終端記号は定義されていない。
抽象記号とは、値の集合を表現する記号である。より具体的には、抽象記号とは、(1)の部分において定義されている記号である。当該記号は、開発者等にとって既知である。すなわち、DF,K0,K1,Hが抽象記号である。
続いて、プログラム合成部11は、図5に示される雛形において欠落している箇所を変換前データセット(図4)に基づいて埋めることで、変換前データセットの変換に関する(変換前データに特化した)DSLを完成させる(S103)。
図6は、変換前データセットの変換に関するDSLの一例を示す図である。変換前データセット(図4)において、社員テーブルがテーブル0に相当し、決裁テーブルがテーブル1に相当する。社員テーブルの属性(ラベル名)は、社員ID及び社員名である。したがって、プログラム合成部11は、K0の入力値の候補として、社員ID及び社員名を当てはめる。同様に、決裁テーブルの属性(ラベル名)は、決裁ID、社員ID及び結果である。したがって、プログラム合成部11は、K0の入力値の候補として、決裁ID、社員ID及び結果を当てはめる。その結果、DSLの(1)の部分は完成する。
また、(1)に定義された記号のうち、非終端記号以外の記号は、テーブル0、テーブル1、社員ID、社員名、決裁ID,社員ID,結果、left、rightである。したがって、プログラム合成部11は、これらの記号を終端記号に当てはめる。その結果、(2)の部分も完成する。以下では、完成したDSLを用いて、ユーザが所望する変換を実行するプログラムが探索される。
なお、上記では、変換前データの構造が開発者等に未知であることが前提とされているが、変換前データの構造が開発者等に既知である場合には、開発者等によって完成形のDSLが定義されてもよい。この場合、プログラム合成部11は、ステップS103を実行しなくてもよい。
続いて、プログラム合成部11は、変換前データセットに基づいてユーザによって作成される、ユーザ提示データを入力する(S104)。
本実施の形態において、ユーザは、社員テーブルと決裁テーブルとを結合(マージ)させた結果として、図7示すようなデータを出力するプログラムの合成を所望しているとする(但し、ユーザにとって変換結果の全てが既知でなくてよい。)。この場合、ユーザは、例えば、以下のようなデータをユーザ提示データとして入力する。
図8は、本実施の形態におけるユーザ提示データの一例を示す図である。ユーザ提示データは、以下の通り、合成対象のプログラムの出力についての1以上の正例と0以上の負例とを含むデータである。
<ユーザ提示データ>::=正例 負例
正例としては、ユーザ所望の出力のうちの一部が与えられる。図8では、図7の1番目のデータが正例とて与えられた例が示されている。負例としては、ユーザ所望のいずれの出力にも該当しないデータが与えられる。但し、最初は負例は与えられなくてもよい。図8では、負例が与えられない例が示されている。
<ユーザ提示データ>::=正例 負例
正例としては、ユーザ所望の出力のうちの一部が与えられる。図8では、図7の1番目のデータが正例とて与えられた例が示されている。負例としては、ユーザ所望のいずれの出力にも該当しないデータが与えられる。但し、最初は負例は与えられなくてもよい。図8では、負例が与えられない例が示されている。
続いて、データ変換装置10は、ユーザ提示データを反映した変換後データの生成処理を実行する(S200)。当該生成処理では、DSLを満たす範囲で1以上のプログラムの候補が生成され、1以上の候補の中から正例及び負例を満たすプログラムが探索される。該当するプログラムが探索された場合、当該プログラムを実行することで変換後データ(当該プログラムが出力するデータ)が得られる。
図9は、ステップS200において探索されるプログラム及び変換後データの一例を示す図である。図9において、(1)が、図8のユーザ提示データを満たすとして探索されるプログラムであり、(2)が当該プログラムによる変換後データの一例である。
続いて、データ変換装置10の合成プログラム評価部12は、変換後データの適否をユーザから受け付ける(S250)。適切である旨の入力を受け付けた場合(S250でYes)、図3の処理手順は終了する。この場合、ステップS200において得られた変換後データが、ユーザによって利用される。
一方、適切でない旨の入力を受け付けた場合(S250でNo)、プログラム合成部11は、新しいユーザ提示データの入力をユーザから受け付ける(S300)。
例えば、図9に示される変換後データにおいて、2番目のレコード(決済IDを含まないレコード)は決済されていない人のレコードであるが、ユーザは、当該レコードが変換後データに含まれていないことを望むとする。この場合、ユーザは、当該レコードが負例として追加された新たなユーザ提示データを入力する。
図10は、負例が追加されたユーザ提示データの一例を示す図である。図10に示されるユーザ提示データは、図8に示したユーザ提示データに対して、図9の2番目のレコードが負例として追加されている。
なお、本実施の形態では、負例が新たなユーザ提示データに追加される例を示したが、正例が新たなユーザ提示データに追加されてもよい。
続いて、データ変換装置10は、新たなユーザ提示データを反映した変換後データの生成処理を実行する(S400)。ステップS400のアルゴリズムは、ステップS200のアルゴリズムと同じである。したがって、探索されたプログラムと、当該プログラムの実行により出力される変換後データが得られる。
図11は、ステップS400において探索されるプログラム及び変換後データの一例を示す図である。図11において、(1)が、図10のユーザ提示データを満たすとして探索されるプログラムであり、(2)が当該プログラムによる変換後データの一例である。
図11のプログラムは、負例を与えることで、図9のプログラムに対して左外部結合から右外部結合に変化している(最後の引数がleftからrightに変化している)。また、図11の変換後データは、負例を含まないようになっている。
続いて、ステップS250以降が繰り返される。したがって、ユーザが、ステップS400において得られた変換後データに満足した場合(S250でYes)、図3の処理手順は終了し、そうでない場合(S250でNo)、ステップS300及びS400が再実行される。
続いて、ステップS200及びS400の詳細について説明する。図12は、ユーザ提示データを反映した変換後データを生成処理の処理手順の一例を説明するためのフローチャートである。
ステップS201において、プログラム合成部11は、変数Nに1を代入する。
続いて、プログラム合成部11は、プログラムバンクPBの初期化処理を実行する(S210)。プログラムバンクとは、以下の構成を有するデータである。
<プログラムバンク>::=[プログラム、スコア、出力、深さ]+
すなわち、プログラムバンクとは、合成されたプログラム、当該プログラムに関するスコア、当該プログラムの出力、当該プログラムの深さを1組とするデータの集合である。プログラムバンクは、過去に合成されたプログラムの保存先として機能することで、同じプログラムが再合成される必要を無くしてプログラム合成を効率化(時間の短縮)する役割を担うデータであり、ボトムアップによるプログラム合成において利用される。
<プログラムバンク>::=[プログラム、スコア、出力、深さ]+
すなわち、プログラムバンクとは、合成されたプログラム、当該プログラムに関するスコア、当該プログラムの出力、当該プログラムの深さを1組とするデータの集合である。プログラムバンクは、過去に合成されたプログラムの保存先として機能することで、同じプログラムが再合成される必要を無くしてプログラム合成を効率化(時間の短縮)する役割を担うデータであり、ボトムアップによるプログラム合成において利用される。
スコアとは、プログラムの出力について、ユーザ提示データに対する適合の度合い(ユーザ提示データに対する類似性)を示すスコアである。
プログラムの深さとは、DSLを組み合わせてできるプログラムを木構造にした場合の深さの最大値である。
図13は、プログラムの深さを説明するための図である。図13において、(1)のプログラムは、深さが0である。(2)のプログラムは深さが1である。
続いて、プログラム合成部11は、深さがNになるような全てのプログラムセットPNの生成処理を実行する(S220)。プログラムセットPNとは、1以上のプログラムの集合(正例及び負例を満たすプログラムの候補の集合)である。
続いて、合成プログラム評価部12は、プログラムセットPNに含まれるプログラム(候補)ごとにループ処理を実行する。当該ループ処理において処理対象とされているプログラムを「プログラムP」という。
ステップS231において、合成プログラム評価部12は、変換前データセット(図4)をプログラムPに入力して実行することで、プログラムPからの出力Oを得る。プログラムPが変換前データセットを入力としない場合、プログラムPの実行結果が出力Oとなる。プログラムPが定数の場合、当該定数が出力Oとなる。
続いて、合成プログラム評価部12は、プログラムPの先頭が開始記号であるか否かを判定する(S232)。プログラムPの先頭とは、DSLを組み合わせてできるプログラムPにおいて、最初に登場する要素をいう。例えば、プログラム「merge(社員テーブル,決裁テーブル,社員ID,社員ID,left)」の先頭はmergeである。また、本実施の形態において、開始記号は、社員テーブル、決裁テーブル、及びはmerge(DF,DF,K0,K1,H)である。したがって、ステップS232では、プログラムPの先頭がこれらのいずれであるか否かが判定される。
プログラムPの先頭が開始記号でない場合(S232でNo)、合成プログラム評価部12は、プログラムPのスコアSにnullをセットして(S233)、ステップS235へ進む。
プログラムPの先頭が開始記号である場合(S232でYes)、合成プログラム評価部12は、出力Oに基づいてスコアSを算出する(S240)。
続いて、合成プログラム評価部12は、スコアSが1.0であるか否かを判定する(S234)。スコアSが1.0である場合(S234でYes)、合成プログラム評価部12は、出力Oをユーザに出力して、処理の制御を呼び出し元に復帰させる。この場合、プログラムPが、正例及び負例を満たすプログラムの合成結果となり、出力OがプログラムPによる変換後データとなる。スコアSが1.0でない場合(S233でNo)、ステップS235へ進む。
このように、スコアSに基づいて、出力Oが正例及び負例を満たすか否かが判定される。すなわち、スコアSの算出は、正例及び負例を満たすプログラムの探索に相当する。
ステップS235において、合成プログラム評価部12は、{プログラムP、スコアS、出力O、N}の組をプログラムバンクPBへ追加する。
以上がプログラムセットPNに含まれる全てのプログラムPごとに実行されると、枝刈り部13は、プログラムバンクPBの枝刈り処理を実行する(S250)。続いて実行されるステップS220では、プログラムバンクPBに基づいて新しいプログラムが合成されるところ、プログラムバンクPB内のプログラムが多い場合、組み合わせ爆発を起こすため枝刈りが行われる。
続いて、プログラム合成部11は、Nに1を加算して(S261)、ステップS220以降を繰り返す。すなわち、プログラムの深さを増加させつつ深さごとに当該深さより浅い深さにおいて生成されたプログラムに基づいて、正例及び負例を満たすプログラムの候補が生成され、当該候補の中から正例及び負例を満たすプログラムが探索される。
続いて、図12のステップS210の詳細について説明する。図14は、プログラムバンクPBの初期化処理の処理手順の一例を説明するためのフローチャートである。
ステップS211において、プログラム合成部11は、プログラムバンクPBを空の状態に初期化する。
続いて、プログラム合成部11は、DSLの終端記号ごとのループ処理を実行する。DSLの終端記号は、「社員テーブル|決裁テーブル|社員ID|社員名|決裁ID|社員ID|結果|left|right」であるため、これらの記号ごとにループ処理が実行される。ループ処理において処理対象とされている終端記号を「終端記号TS」という。
ステップS212において、プログラム合成部11は、終端記号TSを実行することで、出力Oを得る。基本的に、終端記号は定数であるため、その値がそのまま出力Oとなる例えば、終端記号「社員テーブル」の出力Oは、「社員テーブル」である。
続いて、プログラム合成部11は、終端記号TSが開始記号であるか否かを判定する(S213)。本実施の形態において、開始記号は、社員テーブル、決裁テーブル及びmergeメソッドである。したがって、ステップS213では、終端記号TSが社員テーブル、決裁テーブル又はmergeメソッドであるか否かが判定される。
終端記号TSが開始記号である場合(S213でYes)、合成プログラム評価部12は、出力Oに基づいてスコアSを算出して(S240)、ステップS215へ進む。ここでのステップS240のアルゴリズムは、図12のステップS240のアルゴリズムと同じである。終端記号TSが開始記号でない場合(S213でNo)、プログラム合成部11は、スコアSにnullをセットして(S214)、ステップS215へ進む。
ステップS215において、プログラム合成部11は、{終端記号TS,スコアS,出力O,深さN}をプログラムバンクPBに追加する。例えば、終端記号TSが社員IDの場合、{社員ID,null,社員ID,0}がプログラムバンクPBに追加される。
以上がDSLの全ての終端記号について実行されると、プログラムバンクPBが呼び出し元に返却される。
続いて、図12のステップS220の詳細について説明する。図15は、深さがNになるような全てのプログラムセットPNの生成処理の処理手順の一例を説明するためのフローチャートである。
ステップS221において、プログラム合成部11は、プログラムセットPNを空の状態に初期化する。
続いて、プログラム合成部11は、DSLの非終端記号ごとにループ処理を実行する。ループ処理において処理対象とされている非終端記号を「非終端記号NS」という。なお、本実施の形態において、非終端記号は、「merge(DF,DF,K0,K1,H)」のみである。
ステップS222において、プログラム合成部11は、非終端記号NSの各抽象記号に対して、プログラムバンクPB内のプログラムのうち当該抽象記号に当てはまりうるプログラムを網羅的に当てはめることで、新しいプログラムセットを生成する。ここで、プログラムバンクPB内のプログラムのうち或る抽象記号に当てはまりうるプログラムとは、その先頭が当該抽象記号に属するプログラムをいう。
例えば、非終端記号NSがmerge(DF,DF,K0,K1,H)であり、プログラムバンクPBには、テーブル0、テーブル1、社員ID、社員名、決裁ID、結果、left、rightが登録されているとする。この場合、各DFには、テーブル0及びテーブル1の2種類が当てはまりうる。K0には、社員ID及び社員名の2種類が当てはまりうる。K1には、決裁ID、社員ID及び結果の3種類が当てはまりうる。Hには、left及びrightが当てはまりうる。
したがって、この場合、2×2×2×3×2=48種類のプログラム(正例及び負例を満たすプログラムの候補)を含むプログラムセットPNが新たに生成される。
続いて、プログラム合成部11は、プログラムセットPNから深さがN以外の全てのプログラムを削除する(S223)。
ステップS222及びS223が全ての非終端記号について実行されると、プログラムセットPNが呼び出し元に返却される。
続いて、図12及び図14のステップS240の詳細について説明する。図16は、出力Oに基づくスコアSの算出処理の処理手順の一例を説明するためのフローチャートである。
ステップS241において、合成プログラム評価部12は、出力Oについて、正例に対するスコアを算出し、算出結果をs_pへ代入する。
続いて、合成プログラム評価部12は、出力Oについて、負例に対するスコアを算出し、算出結果をs_nへ代入する(S242)。
合成プログラム評価部12は、s_p-s_nをスコアSとして返却する。
続いて、図16のステップS241の詳細について説明する。図17は、正例に対するスコアの算出処理の処理手順の一例を説明するためのフローチャートである。
ステップS2411において、合成プログラム評価部12は、類似度リストS_Lを空の状態に初期化する。
続いて、合成プログラム評価部12は、出力Oのラベル名行C1とユーザ提示データの正例のラベル名行C2との類似度Sim_0を計算し、計算結果sim_0をS_Lに追加する(S2412)。ここで、出力Oのラベル名行とは、例えば、出力Oが図9の変換後データの通りであれば、「決済ID,社員ID,社員名,結果」の行である。また、ユーザ提示データの正例のラベル名行とは、図8や図10の正例においては、「決済ID,社員ID,社員名,結果」の行である。また、Sim_0の計算式は、以下の通りである。
Sim_0←(C1∩C2)の要素数/(C1∪C2)の要素数
すなわち、Sim_0は、C1及びC2の双方に含まれている要素数を、C1及びC2の少なくともいずれか一方に含まれている要素数で除した値である。
Sim_0←(C1∩C2)の要素数/(C1∪C2)の要素数
すなわち、Sim_0は、C1及びC2の双方に含まれている要素数を、C1及びC2の少なくともいずれか一方に含まれている要素数で除した値である。
続いて、合成プログラム評価部12は、ユーザ提示データの正例のラベル名行以外の各行について、ステップS2413~S2416を含むループ処理(以下、「ループ処理A」という。)を実行する。ループ処理Aにおいて処理対象とされている正例の行を「C1_N」という。図8や図10の正例においては、「決済ID,社員ID,社員名,結果」の行以外の行がC1_Nの候補である。
ステップS2413において、合成プログラム評価部12は、リスト型の変数S_L_tempを空の状態に初期化する。
続いて、合成プログラム評価部12は、出力Oのラベル名行以外の各行について、ステップS2414及びS2415を含むループ処理(以下、「ループ処理B」という。)を実行する。ループ処理Bにおいて処理対象とされている出力Oの行を「C2_N」という。
ステップS2414において、合成プログラム評価部12は、C1_NとC2_Nとの類似度Sim_N_tempを計算する。類似度Sim_N_tempの計算式は以下の通りである。
Sim_N_temp←(C1_N∩C2_N)の要素数/(C1∪C2)の要素数
続いて、合成プログラム評価部12は、S_L_tempにSim_N_tempを追加する(S2415)。
Sim_N_temp←(C1_N∩C2_N)の要素数/(C1∪C2)の要素数
続いて、合成プログラム評価部12は、S_L_tempにSim_N_tempを追加する(S2415)。
出力Oのラベル名行以外の全ての行についてループ処理Bが終了すると、合成プログラム評価部12は、SL_tempの中の最大値をS_Lに追加する(S2416)。
正例のラベル名行以外の全ての行についてループ処理Aが終了すると、合成プログラム評価部12は、S_L内の全要素の平均値を、正例に対するスコアSとして返却する。
図18は、正例に対するスコアの算出処理の具体例を説明するための図である。図18には、(1)~(3)の3つの具体例が示されている。
(1)は、出力Oに全ての正例が含まれている場合である。この場合、Sim_0の値は4/4=1.0である。また、Sim_N_tempの最大値は4/4=1.0である。したがって、S_L内の平均値であるスコアSは、(4/4+4/4)/2=1.0である。すなわち、出力Oに全ての正例が含まれている場合のスコアSは、1.0になる。
(2)は、出力Oのラベル名行と正例のラベル名行とは一致しているが、ラベル以外の行について、出力Oと正例とで一致している行が無い場合である。この場合、Sim_0の値は4/4=1.0である。また、Sim_N_tempの最大値は3/4=0.75である。したがって、S_L内の平均値であるスコアSは、(4/4+3/4)/2=0.875である。
(3)は、出力Oと正例との間で一致している行が無い場合である。この場合、Sim_0の値は、3/4=0.75である。また、Sim_N_tempの最大値は2/4=0.5である。したがって、S_L内の平均値であるスコアSは、(3/4+2/4)/2=0.625である。
続いて、図16のステップS242の詳細について説明する。図19は、負例に対するスコアの算出処理の処理手順の一例を説明するためのフローチャートである。
ステップS2421において、合成プログラム評価部12は、類似度リストS_Lを空の状態に初期化すると共に、変数weightに任意の(ランダムな)値(但し、0より大きな正の値)を代入する。
続いて、合成プログラム評価部12は、ユーザ提示データの負例のラベル名行以外の各行について、ステップS2422~S2425を含むループ処理(以下、「ループ処理C」という。)を実行する。ループ処理Cにおいて処理対象とされている負例の行を「C1_N」という。図10の負例においては、「決済ID,社員ID,社員名,結果」の行以外の行がC1_Nの候補である。
ステップS2422において、合成プログラム評価部12は、リスト型の変数S_L_tempを空の状態に初期化する。
続いて、合成プログラム評価部12は、出力Oのラベル名行以外の各行について、ステップS2423及びS2424を含むループ処理(以下、「ループ処理D」という。)を実行する。ループ処理Dにおいて処理対象とされている出力Oの行を「C2_N」という。
ステップS2423において、合成プログラム評価部12は、C1_NとC2_Nとの類似度Sim_N_tempを計算する。類似度Sim_N_tempの計算式は以下の通りである。
Sim_N_temp←(C1_N∩C2_N)の要素数/(C1∪C2)の要素数
続いて、合成プログラム評価部12は、S_L_tempにSim_N_tempを追加する(S2424)。
Sim_N_temp←(C1_N∩C2_N)の要素数/(C1∪C2)の要素数
続いて、合成プログラム評価部12は、S_L_tempにSim_N_tempを追加する(S2424)。
出力Oのラベル名行以外の全ての行についてループ処理Dが終了すると、合成プログラム評価部12は、SL_tempの中の最大値をS_Lに追加する(S2425)。
負例のラベル名行以外の全ての行についてループ処理Cが終了すると、合成プログラム評価部12は、S_L内の1.0の数×weightを負例に対するスコアSとして返却する。
なお、ユーザ提示データが負例を含まない場合、ループ処理Cは実行されない。この場合、S_L内の1.0の数は0である。したがって、スコアSは、0となる。
図20は、負例に対するスコアの算出処理の具体例を説明するための図である。図20には、(1)及び(2)の2つの具体例が示されている。
(1)は、出力Oに全ての負例が含まれている場合である。この場合、S_L内の1.0の数は1である。したがって、weightの値が0.2である場合、スコアSは、0.2となる。
(2)は、出力Oに負例が含まれていない場合である。この場合、S_L内の1.0の数は0である。したがって、スコアSは、0となる。
このように、負例に対するスコアSは、負例に類似している出力Oほど高くなる。
続いて、図12のステップS250の詳細について説明する。図21は、プログラムバンクPBの枝刈り処理の処理手順の一例を説明するためのフローチャートである。
ステップS251において、枝刈り部13は、プログラムバンクPBにおいて同一の出力Oを持つプログラムでグループ化する。換言すれば、出力Oが共通性に基づいてプログラムバンクPB内のプログラムがグループに分類される。
続いて、枝刈り部13は、各グループ内で最も深さが浅いプログラム以外の全てのプログラムをプログラムバンクPBから削除する(S252)。すなわち、同一の出力を返すプログラムは同値とみなし、よりシンプルな(深さの浅い)プログラムが残される。なお、最も深さが浅いプログラム複数存在する場合、枝刈り部13は、最も深さが浅い複数のプログラムの中からランダムに1つを選択し、選択したプログラム以外を削除する。
図22は、出力の共通性と深さとに基づく枝刈りを説明するための図である。図22には、プログラムバンクPB内に、プログラム1及びプログラム2等が含まれている例が示されている。ここで、プログラム1及びプログラム2のそれぞれの出力は、図22の下の表に示されるように共通である。したがって、プログラム1及びプログラム2は同じグループに分類される。このグループの中で、深さが最も浅いプログラムはプログラム1である。したがって、プログラム2は削除されて、プログラム1が残される。
続いて、枝刈り部13は、スコアがnullではないプログラムの中で、最もスコアが大きいプログラムを残し、残りのスコアがnullではないプログラムを削除する(S253)。すなわち、スコアがnullであるプログラムと、スコアがnull以外のプログラムの中で最もスコアが大きいプログラムが残される。最もスコアが大きいプログラムが残されるのは、当該プログラムは、ユーザ提示データに最も類似していると想定されるからである。スコアがnullであるプログラム(つまり表を返さないプログラム)が残されるのは、表を返すプログラムの引数になる可能性があるためである。
図23は、スコアに基づく枝刈りを説明するための図である。図23には、プログラム1~4がプログラムバンクPBの一部を構成する例が示されている。ここで、プログラム4はスコアがnullであるために残される。また、プログラム1~3の中では、スコアが最も高いプログラム2のみが残される(プログラム1及び3は削除される)。
上述したように、本実施の形態によれば、データ変換のための作業効率を向上させることができる。具体的には、ユーザは、変換方法やプログラミングの知識がなくても少ない稼働でデータ変換を行うことができる。それにより、データサイエンティスト以外でもデータ分析を行うことが可能となり、日常的な業務にデータ分析によって得られた知見を反映させることができる。
なお、本実施の形態では、説明の便宜上、1つのメソッド(mergeメソッド)のみを用いるプログラムが合成及び探索される例を説明したが、本実施の形態は、2以上のメソッドが用いられる変換についても対応可能である。この場合、例えば、DSLのDFの行が以下のように定義されてもよい。
DF::=社員テーブル|決裁テーブル|merge(DF,DF,K0,K1,H)|メソッド2(・・・)
ここで、メソッド2(DF,・・・)は、例えば、DFから特定の列又は行を削除したテーブルを出力するメソッドでもよい。この場合、2つのテーブルを結合してから特定の行又は列を削除する変換処理、又はいずれかのテーブルの列又は行を削除してから2つのテーブルを結合する変換処理を実行するプログラムが合成される。いずれのプログラムが最終的に選択されるのかは、ユーザ提示データに依存する。
DF::=社員テーブル|決裁テーブル|merge(DF,DF,K0,K1,H)|メソッド2(・・・)
ここで、メソッド2(DF,・・・)は、例えば、DFから特定の列又は行を削除したテーブルを出力するメソッドでもよい。この場合、2つのテーブルを結合してから特定の行又は列を削除する変換処理、又はいずれかのテーブルの列又は行を削除してから2つのテーブルを結合する変換処理を実行するプログラムが合成される。いずれのプログラムが最終的に選択されるのかは、ユーザ提示データに依存する。
なお、本実施の形態において、プログラム合成部11は、入力部及び生成部の一例である。合成プログラム評価部12は、探索部及び出力部の一例である。
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
10 データ変換装置
11 プログラム合成部
12 合成プログラム評価部
13 枝刈り部
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
106 表示装置
107 入力装置
B バス
11 プログラム合成部
12 合成プログラム評価部
13 枝刈り部
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
106 表示装置
107 入力装置
B バス
Claims (7)
- 変換対象の表形式データと、前記表形式データの一部に関する正例の変換結果と負例の変換結果とを入力するように構成されている入力部と、
前記表形式データを入力した場合に前記正例を含み前記負例を含まない変換結果を出力するプログラムについて1以上の候補を生成するように構成されている生成部と、
前記1以上の候補の中から前記プログラムを探索するように構成されている探索部と、
前記表形式データに対する前記プログラムによる変換結果を出力するように構成されている出力部と、
を有することを特徴とするデータ変換装置。 - 前記探索部は、前記出力部が変換結果を出力した後に正例又は負例の変換結果が新たに入力された場合には、新たに入力された変換結果をも満たすプログラムを探索するように構成されている、
ことを特徴とする請求項1記載のデータ変換装置。 - 前記探索部は、前記1以上の候補のそれぞれによる前記表形式データの変換結果の前記正例及び前記負例に対する類似性に基づいて前記プログラムを探索するように構成されている、
ことを特徴とする請求項1又は2記載のデータ変換装置。 - 前記生成部は、プログラムの深さを増加させつつ前記深さごとに当該深さより浅い深さにおいて生成された前記候補に基づいて当該深さにおける前記1以上の候補を生成するように構成されており、
前記探索部が或る深さにおいて前記正例を含み前記負例を含まない変換結果を出力するプログラムを探索できなかった場合に、出力の共通性に基づいて、当該深さにおいて生成された前記候補の一部を削除するように構成されている枝刈り部、
を有することを特徴とする請求項3記載のデータ変換装置。 - 前記生成部は、プログラムの深さを増加させつつ前記深さごとに当該深さより浅い深さにおいて生成された前記候補に基づいて当該深さにおける前記1以上の候補を生成するように構成されており、
前記探索部が或る深さにおいて前記正例を含み前記負例を含まない変換結果を出力するプログラムを探索できなかった場合に、前記類似性に基づいて、当該深さにおいて生成された前記候補の一部を削除するように構成されている枝刈り部、
を有することを特徴とする請求項3記載のデータ変換装置。 - 変換対象の表形式データと、前記表形式データの一部に関する正例の変換結果と負例の変換結果とを入力する入力手順と、
前記表形式データを入力した場合に前記正例を含み前記負例を含まない変換結果を出力するプログラムについて1以上の候補を生成する生成手順と、
前記1以上の候補の中から前記プログラムを探索する探索手順と、
前記表形式データに対する前記プログラムによる変換結果を出力する出力手順と、
をコンピュータが実行することを特徴とするデータ変換方法。 - 変換対象の表形式データと、前記表形式データの一部に関する正例の変換結果と負例の変換結果とを入力する入力手順と、
前記表形式データを入力した場合に前記正例を含み前記負例を含まない変換結果を出力するプログラムについて1以上の候補を生成する生成手順と、
前記1以上の候補の中から前記プログラムを探索する探索手順と、
前記表形式データに対する前記プログラムによる変換結果を出力する出力手順と、
をコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2022/036978 WO2024075160A1 (ja) | 2022-10-03 | 2022-10-03 | データ変換装置、データ変換方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2022/036978 WO2024075160A1 (ja) | 2022-10-03 | 2022-10-03 | データ変換装置、データ変換方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024075160A1 true WO2024075160A1 (ja) | 2024-04-11 |
Family
ID=90607717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2022/036978 WO2024075160A1 (ja) | 2022-10-03 | 2022-10-03 | データ変換装置、データ変換方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2024075160A1 (ja) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150095312A1 (en) * | 2013-10-02 | 2015-04-02 | Microsoft Corporation | Extracting relational data from semi-structured spreadsheets |
US20150254211A1 (en) * | 2014-03-08 | 2015-09-10 | Microsoft Technology Licensing, Llc | Interactive data manipulation using examples and natural language |
US20190235842A1 (en) * | 2018-01-31 | 2019-08-01 | Microsoft Technology Licensing, Llc | Programming-by-example using disjunctive programs |
WO2021161426A1 (ja) * | 2020-02-12 | 2021-08-19 | 日本電信電話株式会社 | プログラム生成装置、プログラム生成方法及びプログラム |
JP2021184147A (ja) * | 2020-05-21 | 2021-12-02 | 富士通株式会社 | データ変換プログラム、データ変換装置、及びデータ変換方法 |
-
2022
- 2022-10-03 WO PCT/JP2022/036978 patent/WO2024075160A1/ja unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150095312A1 (en) * | 2013-10-02 | 2015-04-02 | Microsoft Corporation | Extracting relational data from semi-structured spreadsheets |
US20150254211A1 (en) * | 2014-03-08 | 2015-09-10 | Microsoft Technology Licensing, Llc | Interactive data manipulation using examples and natural language |
US20190235842A1 (en) * | 2018-01-31 | 2019-08-01 | Microsoft Technology Licensing, Llc | Programming-by-example using disjunctive programs |
WO2021161426A1 (ja) * | 2020-02-12 | 2021-08-19 | 日本電信電話株式会社 | プログラム生成装置、プログラム生成方法及びプログラム |
JP2021184147A (ja) * | 2020-05-21 | 2021-12-02 | 富士通株式会社 | データ変換プログラム、データ変換装置、及びデータ変換方法 |
Non-Patent Citations (1)
Title |
---|
FESER JOHN K. FESER@RICE.EDU; CHAUDHURI SWARAT SWARAT@RICE.EDU; DILLIG ISIL ISIL@CS.UTEXAS.EDU: "Synthesizing data structure transformations from input-output examples", MOBISYS '15: PROCEEDINGS OF THE 13TH ANNUAL INTERNATIONAL CONFERENCE ON MOBILE SYSTEMS, APPLICATIONS, AND SERVICES, ACM, 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA, 3 June 2015 (2015-06-03) - 21 May 2015 (2015-05-21), 2 Penn Plaza, Suite 701 New York NY 10121-0701 USA , pages 229 - 239, XP058510527, ISBN: 978-1-4503-3358-0, DOI: 10.1145/2737924.2737977 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Macdonald et al. | Declarative experimentation in information retrieval using PyTerrier | |
CN111611361B (zh) | 抽取式机器智能阅读理解问答系统 | |
KR102129640B1 (ko) | 스트링 변환의 귀납적 합성을 위한 랭킹 기법 | |
US7895195B2 (en) | Method and apparatus for constructing a link structure between documents | |
US9298693B2 (en) | Rule-based generation of candidate string transformations | |
JP5881048B2 (ja) | 情報処理システム、及び、情報処理方法 | |
CN109783628B (zh) | 结合时间窗口和关联规则挖掘的关键词搜索ksaarm方法 | |
JP7325152B1 (ja) | 文章生成装置および文章生成方法 | |
JP6733809B2 (ja) | 情報処理システム、情報処理装置、情報処理方法および情報処理プログラム | |
KR101818717B1 (ko) | 컨셉 키워드 확장 데이터 셋을 이용한 검색방법, 장치 및 컴퓨터로 판독 가능한 기록매체 | |
WO2024075160A1 (ja) | データ変換装置、データ変換方法及びプログラム | |
JP5497105B2 (ja) | 文書検索装置および方法 | |
JP5432936B2 (ja) | ランキングモデル選択機能を有する文書検索装置、ランキングモデル選択機能を有する文書検索方法およびランキングモデル選択機能を有する文書検索プログラム | |
JP2005092442A (ja) | 多次元空間モデル表現装置および多次元空間モデル表現方法 | |
US20210149900A1 (en) | Method, system and computer program for semantic triple-based knowledge extension | |
CN115982322A (zh) | 一种水利行业设计领域知识图谱的检索方法及检索系统 | |
JP2003203077A (ja) | Rna配列解析装置、rna配列解析方法、プログラム、および、記録媒体 | |
KR20130033694A (ko) | 컨셉 키워드 확장 데이터 셋 생성방법, 장치 및 컴퓨터로 판독 가능한 기록매체 | |
JPH0962702A (ja) | 情報検索方法 | |
Sarkar et al. | Representing Tasks with a Graph-Based Method for Supporting Users in Complex Search Tasks | |
JP6574469B2 (ja) | 次発話候補ランキング装置、方法、及びプログラム | |
CN112307219B (zh) | 网站搜索用词汇数据库更新方法、系统及计算机存储介质 | |
Baeza-Yates et al. | Learning ranking functions by genetic programming revisited | |
CN118170894B (zh) | 一种知识图谱问答方法、装置及存储介质 | |
Mandl et al. | Learning to cope with diversity in music retrieval |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 22961351 Country of ref document: EP Kind code of ref document: A1 |