Source code for kiwi.cli.main

#  OpenKiwi: Open-Source Machine Translation Quality Estimation
#  Copyright (C) 2019 Unbabel <openkiwi@unbabel.com>
#
#  This program is free software: you can redistribute it and/or modify
#  it under the terms of the GNU Affero General Public License as published
#  by the Free Software Foundation, either version 3 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU Affero General Public License for more details.
#
#  You should have received a copy of the GNU Affero General Public License
#  along with this program.  If not, see <https://www.gnu.org/licenses/>.
#

import configargparse

from kiwi import __copyright__, __version__
from kiwi.cli.pipelines import evaluate, jackknife, predict, train


[docs]def build_parser(): global parser parser = configargparse.get_argument_parser( name='main', prog='kiwi', description='Quality Estimation toolkit', add_help=True, epilog='Copyright {}'.format(__copyright__), ) parser.add_argument('--version', action='version', version=__version__) subparsers = parser.add_subparsers( title='Pipelines', description="Use 'kiwi <pipeline> (-h | --help)' to check it out.", help='Available pipelines:', dest='pipeline', ) subparsers.required = True subparsers.add_parser( 'train', # parents=[train.parser], add_help=False, help='Train a QE model', ) subparsers.add_parser( 'predict', # parents=[predict.parser], add_help=False, help='Use a pre-trained model for prediction', ) subparsers.add_parser( 'jackknife', # parents=[jackknife.parser], add_help=False, help='Jackknife training data with model', ) subparsers.add_parser( 'evaluate', add_help=False, help='Evaluate a model\'s predictions using popular metrics', ) return parser
[docs]def cli(): options, extra_args = build_parser().parse_known_args() if options.pipeline == 'train': train.main(extra_args) if options.pipeline == 'predict': predict.main(extra_args) # Meta pipelines # if options.pipeline == 'search': # search.main(extra_args) if options.pipeline == 'jackknife': jackknife.main(extra_args) if options.pipeline == 'evaluate': evaluate.main(extra_args)
if __name__ == '__main__': # pragma: no cover cli() # pragma: no cover