diff --git a/requirements.txt b/requirements.txt index 5af18f2..f5eafa2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -59,4 +59,5 @@ deeppavlov sentence-transformers==0.3.7.1 transformers==3.3.1 Flask-Cors==3.0.9 -flask-restplus \ No newline at end of file +flask-restplus +gspread==3.7.0 \ No newline at end of file diff --git a/support_model.py b/support_model.py index 7abfbe9..79df986 100644 --- a/support_model.py +++ b/support_model.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +import gspread from gensim.summarization import keywords from gensim.parsing.preprocessing import remove_stopwords @@ -44,6 +45,21 @@ def remove_slack_commands(query): return query +def is_query_in_row(gs_row, query): + return query in gs_row['known_question'] or query in gs_row['known_question_synonymous'].split(', ') + + +def get_answer_if_known(query): + gc = gspread.service_account(filename='ods-qna-secret.json') + questions = gc.open("faq fixed").sheet1 + + gs_rows = questions.get_all_records() + + for gs_row in gs_rows: + if is_query_in_row(gs_row, query): + return [gs_row['known_answer']] + + def get_answer(query, use_lower=True, use_keywords=False, use_remove_stopwords=False, model_name=MODEL_NAME, use_remove_slack_commands=True ): @@ -57,6 +73,10 @@ def get_answer(query, use_lower=True, use_keywords=False, use_remove_stopwords=F query = remove_slack_commands(query) try: + known_answer = get_answer_if_known(query) + if known_answer: + return known_answer + answer_list = [] if model_name == ModelNames.ELASTIC: answer_list = elastic_search_baseline.get_answer(query)