Control Module

  • Version 1

A control module (CM) is a module that links all of the I/Os of OKBQA modules and constructs and realizes an OKBQA pipeline to be work. A controller has a role of a pipeline constructor as well as a debugger for validating the result of a pipeline. CM works as follows: Initially, CM takes a question and language of that question as an input, and then executes an initial module on a pipeline, typically template generation module. Then, CM sequentially executes next modules of an initial module, typically, disambiguation module, query generation module, answer generation module, by transferring the output of a previous module into the input of a right next module. As a pipeline is executed, log messages are written, which are about I/Os, execution time, exceptional messages, and so on of each module. After a final result, typically answers of an input question, is obtained, CM returns the final answers and log messages that record the history of a pipeline execution.

I/O specification:

# Input

{
    "string": "Which rivers flow through Seoul?",
    "language": "en",
    "conf": {
        "tgm": ["TGM-ADD-1", "TGM-ADD-1", ..., "TGM-ADD-a"],
        "dm": ["DM-ADD-1", "DM-ADD-2", ..., "DM-ADD-b"],
        "qgm": ["QGM-ADD-1", "QGM-ADD-2", ..., "QGM-ADD-c"],
        "agm": ["AGM-ADD-1", "AGM-ADD-2", ..., "AGM-ADD-d"],
        "kb": ["KB-ADD-1", "KB-ADD-2", ..., "KB-ADD-e"]
    }
}
  • ADD: address
  • TGM: template generation module
  • DM: disambiguation module
  • QGM: query generation module
  • AGM: answer generation module
  • KB: knowledge base

Output

{
    "log": ["L-1", "L-2", ..., "L-f"],
    "answers": [
        {"query": "Q-1", "answer": "A-1"},
        {"query": "Q-2", "answer": "A-2"},
        ...
        {"query": "Q-g", "answer": "A-h"}
    ]
}
  • L: log
  • Q: query
  • A: answer