Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 88 additions & 0 deletions themis/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@
examine_truth, validate_answers_with_corpus,
validate_truth_with_corpus)

from themis.rnr import create_cluster, create_config, create_ranker,query_ranker,query_untrained_ranker,\
query_trained_rnr,query_untrained_rnr


def main():
parser = argparse.ArgumentParser(description="Themis analysis toolkit, version %s" % __version__)
Expand Down Expand Up @@ -471,6 +474,72 @@ def answer_command(subparsers):
nlc_delete.add_argument("classifiers", nargs="+", help="classifier ids")
nlc_delete.set_defaults(func=nlc_delete_handler)

# Manage Rnr Model:
rnr_shared_arguments = argparse.ArgumentParser(add_help=False)
rnr_shared_arguments.add_argument("url", help="Solr url")
rnr_shared_arguments.add_argument("username", help="Solr username")
rnr_shared_arguments.add_argument("password", help="Solr password")

rnr_parser = subparsers.add_parser("rnr",
help="answer questions with RnR")


rnr_subparsers = rnr_parser.add_subparsers(title="Retrieve and Rank",
description="create clusters,collection,upload config.,add documents and manage RnR", help="RnR actions")

# Create Cluster
rnr_cluster = rnr_subparsers.add_parser("create_cluster", parents=[rnr_shared_arguments], help="Create Solr Cluster")
rnr_cluster.add_argument("--cluster_name", help="cluster name")
rnr_cluster.set_defaults(func=rnr_cluster_handler)

# Create config,
rnr_config = rnr_subparsers.add_parser("create_config", parents=[rnr_shared_arguments], description = textwrap.dedent("This command will perform following actions "
"1.Create Solr Configuration "
"2.Create Solr Collection "
"3.Convert corpus file to rnr formated json "
"4.Add documents to Solr Collection "), help='Create config,collection and add document to colection')
rnr_config.add_argument("c_id", help="cluster id")
rnr_config.add_argument("path", help="local directory path")
rnr_config.add_argument("schema_file", help="schema file")
rnr_config.add_argument("corpus_file", help="corpus file")
rnr_config.add_argument("--config_name", help="config name")
rnr_config.add_argument("--collection_name", help="collection name")
rnr_config.set_defaults(func=rnr_config_handler)

# create and train ranker
rnr_ranker = rnr_subparsers.add_parser("create_ranker", parents=[rnr_shared_arguments],description = textwrap.dedent("This command will perform following actions "
"1.Convert truth file to Rnr required format"
"2.Create and train ranker "), help= 'Convert truth file, create and train ranker')
rnr_ranker.add_argument("c_id", help="cluster id")
rnr_ranker.add_argument("path", help="local directory path")
rnr_ranker.add_argument("truth",help="ground truth file")
rnr_ranker.add_argument("--ranker_name", help="ranker name")
rnr_ranker.add_argument("--collection_name", help="collection name")
rnr_ranker.set_defaults(func=rnr_ranker_handler)


# query ranker
rnr_ranker_query = rnr_subparsers.add_parser("ranker_query", parents = [rnr_shared_arguments], help= " query the ranker ")
rnr_ranker_query.add_argument("c_id", help="cluster id")
rnr_ranker_query.add_argument("ranker", help= "ranker id")
rnr_ranker_query.add_argument("question_file", help= "question to solr")
rnr_ranker_query.add_argument("--collection_name", help="collection name")
rnr_ranker_query.set_defaults(func=rnr_ranker_query_handler)

# query sample questions for trained RnR
rnr_sample_questions_query = rnr_subparsers.add_parser("ranker_query", parents = [rnr_shared_arguments], help= " query the ranker ")
rnr_sample_questions_query.add_argument("c_id", help="cluster id")
rnr_sample_questions_query.add_argument("ranker", help= "ranker id")
rnr_sample_questions_query.add_argument("query_file", help= "sample questions file to query solr")
rnr_sample_questions_query.set_defaults(func=rnr_query_trained_rnr_handler)

# query sample questions for untrained RnR
rnr_untrained_sample_questions_query = rnr_subparsers.add_parser("untrained_ranker_query", parents = [rnr_shared_arguments], help= " query the ranker ")
rnr_untrained_sample_questions_query.add_argument("c_id", help="cluster id")
rnr_untrained_sample_questions_query.add_argument("query_file", help= "sample questions file to query solr")
rnr_untrained_sample_questions_query.add_argument("--collection_name", help="collection name")
rnr_untrained_sample_questions_query.set_defaults(func=rnr_query_untrained_rnr_handler)


def wea_handler(args):
wea_answers = get_answers_from_usage_log(args.questions, args.qa_pairs)
Expand All @@ -484,6 +553,22 @@ def solr_handler(args):
def nlc_train_handler(args):
print(train_nlc(args.url, args.username, args.password, args.truth, args.name))


def rnr_cluster_handler(args):
create_cluster(args.url, args.username, args.password,args.cluster_name)

def rnr_config_handler(args):
print(create_config(args.url, args.username, args.password,args.c_id,args.path,args.schema_file,args.corpus_file,args.config_name,args.collection_name))

def rnr_ranker_handler(args):
print(create_ranker(args.url, args.username, args.password,args.c_id,args.path,args.truth,args.ranker_name,args.collection_name))

def rnr_ranker_query_handler(args):
print(query_ranker(args.url, args.username, args.password, args.c_id, args.ranker, args.question_file,args.collection_name))

def rnr_query_trained_rnr_handler(args):
print(query_trained_rnr(args.url, args.username, args.password, args.c_id, args.ranker, args.query_file))

def nlc_router_train_handler(args):
print(nlc_router_train(args.url, args.username, args.password, args.oracle_out, args.path, args.all_correct))

Expand All @@ -494,6 +579,9 @@ def nlc_router_test_handler(args):
res = nlc_router_test(args.url, args.username, args.password, args.collate_file, args.path)
print_csv(OracleFileType.output_format(res))


def rnr_query_untrained_rnr_handler(args):
print(query_untrained_rnr(args.url, args.username, args.password, args.c_id, args.query_file,args.collection_name))
def nlc_use_handler(args):
corpus = args.corpus.set_index(ANSWER_ID)
n = NLC(args.url, args.username, args.password, args.classifier, corpus)
Expand Down
Loading